Spójrz na rysunek http://obrazki.elektroda.pl/2831705200_1... na czerwono zaznaczyłem jak cclk jest dzielone i dociera do peryferiów uC. Są dwa rejestry, które decydują ile razy będzie dzielony cclk PCLKSEL0 i PCLKSEL1. Dwa tylko dlatego, że w jednym niae zmieściło się by pomieścić wszystkie podziały dla peryferiów. Oto wycinek rejestru...
Witam, zajmuję się licznikiem częstotliwości. Wykorzystuję timer, generujący przerwania co sekundę, i do tego licznik zliczający zbocza narastające i opadające. Problemem jest fakt, że po uruchomieniu programu dostaję tylko jedno prawidłowe zliczenia, podejrzewam że do pierwszego przerwania. Następne wartości z licznika to zero. [syntax=c] // kod timera...
Opóźnienia realizuję poprzez pętlę for jednak zbyt dokładnie nie jestem w stanie określić czasu trwania opóźnienia od wartości w zmiennej i. Bo to zależy od częstotliwości taktowania mikrokontrolera, zastosowanej zmiennej (char/int/long/...) i włączonej optymalizacji. Możesz stosować opóźnienia w stylu delay_ms/us/s (w załaczniku)... ale to takie "doraźne"...
Dzięki, to była ważna wskazówka że timer na czas "debugowania" się nie zatrzymuje, tyle tylko że RICTRL dotyczy Repetitive Interrupt Timer
nikt? nic? czyli mam rozumieć że wysyłanie danych na port z wykorzystaniem dma i np timera nie jest wykorzystywane?
Nie uda Ci się coś takiego jak liczenie ilości iteracji dla rdzenia Cortex-M3 - zapomnij. Musisz sobie stworzyć timer na przerwaniach (najlepiej na SysTick) i sprawdzać ile czasu już minęło. 4\/3!!
Dziękuję za pomocne wskazówki. Pomogły, czyszczenie flagi na początku obsługi przerwań i tego się będę trzymał- czy dotyczy to obsługi wszystkich peryferiow? (np. PWM). Zmieniłem inicjalizacje timera, aby reset nie był w ten sposób trzymany włączony. A jeśli chodzi o wartości prescalera i timera tutaj tez problem się wyjaśnłl- źle sterowałem (wyłączałem)...
1. To NIE jest CMSIS, tylko biblioteka obsługi peryferiali. 2. Po co ktoś miałby tego używać? Ten kod jest i bezsensowny i przegadany. Czy programista nie wie, którego timera chce użyć, że przelicza wskaźnik timera na jego numer? Przecież to chore.
Machaniem Pinem nie da się sprawdzić faktycznej prędkości. Większe prędkości machania pinem mógłbyś osiągnąć tylko na timerze. Wbrew pozorom zapalenie diody potrzebuje więcej niż jednego cyklu (przy softowym sterowaniu)
Moim zdaniem to przekombinowałeś. Ja to bym zrobił tak: 1. Ustawiam ADC na interesującą mnie prędkość próbkowania. 2. Ustawiam UART'a z obsługą FIFO (LPC1768 ma wbudowane). 3. W przerwaniu od ADC zapisuje odczytaną wartość do rejestrów UART'a. Musisz to tak skonfigurować żeby częstotliwość odczytu z ADC nie była większa jak prędkość wysyłania (inaczej...
OK, dzięki wielkie hotdog za rozbudowaną wypowiedź/odpowiedź! Niebawem zaczynam kompletować biblioteki do peryferiów tego mikrokontrolera (CAN, UART, timery, przerwania, itp, itd.) to na pewno będę potrzebował pewnej pomocy.[/u]
ja właśnie rozglądałem się za sprzętem do zrobienia falownika Mikro-kontrolery z rdzeniami arm jak stm32f103 lub lpc1768 mają bloki pwm przystosowane do sterowania silnika. 3 fazowe timery z wyjściami komplementarnym przykład taki masz w dokumencie dla lpc1768 http://www.nxp.com/documents/application... Problem na jaki się natknąłem przeglądając...
Witam, i od razu przepraszam jeżeli temat się pojawił, ale jakoś nic nie byłem w stanie znaleźć. Stworzyłem sobie projekt wyjściowy(ustawienie PLL itp..) do pisania większych projektów dla LPC1768 i planuję napisać sobie biblioteki do peryferii typu timery uart wyświetlacz lcd. Jak wiadomo większość takich sterowników musi korzystać z funkcji typu delay()....
Witam Jeżeli wave z dźwiękiem jest o częstotliwości 44100 Hz, to przerwanie timera powinno wywoływać też się z częstotliwości 44100 Hz i w nim wstawiać próbkę (wartość) do DAC ? Jak wiadomo DAC w LPC1768 jest 10 bitowy, czyli można do niego zapisać próbki od wartości 0 do 1023. Teraz mam problem jakie wartości powinienem wpisywać do DAC, jeżeli: 1....
edytowałem temat, i uzupełniłem kod o istotne komentarze. Sprawdziłem na jednym wyjściu, zauważyłem dziwną rzecz- po wpisaniu odpowiednio dużej wartości do PWM->MR1 PWM zostaje jakby 'zawieszony', tzn. na wyjściu jest stan wysoki (nie ma sygnału PWM- sprawdzone oscyloskopem). Taki sam efekt daje wpisanie różnych wartości preskalera. Może to kwestia...
Sugerowałem się tym postem http://www.elektroda.pl/rtvforum/viewtop... Też mam panel dotykowy i przerwanie od niego informujące że wciśnięto przycisk podpięte do P2.13. Założenie jest takie: przyszedł sygnał niski na P2.13 następuje start timera, kiedy tiemer zliczy określony przedział wygeneruje przerwanie a w nim zostanie odczytana...
Dałeś mi(początkującemu) dużo do myślenia i szukania w manualu. Bardzo dobrze. Sądziłem, że TimerInterval to częstotliwość TIMER0. I skąd te30000000. Dzięki temu dowiedziałem się co to PCLKSEL0 i jak go odczytać. PCLKSEL0 ma wartość Binary:11000000000000000000 i stąd TIMER0 ma CCLK/4. Przy okazji, mój 1769 w dokumentacji ma 120MHz,a praktycznie wynika...
Witam, postanowiłem zrobić sobie timera0 w języku C - w asemblerze już go robiłem i brałem ze swojego programu w asm rejestry które tam konfigurowałem. Niestety program zapisany tak samo w C nie działa, nie wiem za bardzo dlaczego. Wszystkie diody podłączone do portu są zgaszone. Liczę na waszą pomoc... [syntax=c]/* ========================================...
Przejrzałem Twój program i zaglądałem do funkcji z SPL'a okazało się, że funkcja PWM_Cmd( LPC_PWM1, ENABLE );// start PWM włącza tylko "tryb" PWM timer'a, inaczej mówiąc usatwia 3 bit PWM Enable w rejestrze PWM1TCR. Aby PWM zaczął działać musisz włączyć odliczanie timera pwm poprzez ustawienie bitu 0 Counter Enable także w rejestrze PWM1TCR....
Napisałem prosty program w C który rzekomo ma migać całym portem diod. Pisałem coś takiego w asemblerze wykorzystując przerwanie od timera. Nie ogarniam całkowicie keila dla języka C...Mam nadzieję, że pomożecie bo nie wiem co robię źle. http://obrazki.elektroda.pl/5176845800_1... Dlaczego kompilator nie widzi makra LPC_? jest tam też...
Witajcie Przesiadłem się z LPC2148 na LPC1768 i próbuję przełożyć kod na nowy kontroler. Jestem na etapie programującego się kontrolera, potrafię zamigać LEDem, wziąłem się za timery i utknąłem na przerwaniach. Wyczytałem że przerwanie włącza się taką funkcją: NVIC_EnableIRQ(TIMER2_IRQn); Jest ona zdefiniowana w pliku core_cm3.h autorstwa ARM. Gdy właczam...
Przy _USE_LFN = 0 poprawnie listuje katalog, natomiast dla _USE_LFN = 1 ląduje w w HardFault_Handler. Mój kody wygląda następująco [syntax=c] #ifdef __USE_CMSIS #include "LPC17xx.h" #endif #include <cr_section_macros.h> #include "lpc17xx_systick.h" #include "lpc17xx_uart.h" #include "lpc17xx_pinsel.h" #include "diskio.h" #include "ff.h" #include...
Zamierzam regulować jasnością podświetlenia wyświetlacza LCD sygnałem z PWM. Utknąłem bo na pinie od PWM1.1 nie pojawia się przebieg PWM. Nie wiem czy padł PWM, a może błędna jego konfiguracja. Sugeruje się zaleceniami user manula The PWM is configured using the following registers: 1. Power: In the PCONP register (Table 46), set bit PCPWM1. Remark:...
Obecnie programuje mikrokontrolery LPC111x w asemblerze. Wcześniej próbowałem pisać soft dla LPC210x niestety zrąbałem płytkę ale mam pewną wiedzę o różnicach między tymi rodzinami mikrokontrolerów. Jeżeli dokładnie chodzi o różnice to prezentuje się to tak: -GPIO - jest totalnie inaczej zrealizowane między cortex-ami (we wszystkich cortex-ach gpio...
Niestety, nie ma takiej szansy.
Witam, Opisany problem bierze się stąd, że podczas przesuwania palca po padzie, ten cały czas jest naciśnięty i nie zgłosi sekwencji zwolniony/naciśnięty. Zatem nie ma nowych przerwań. Wniosek: sygnał PENIRQ nadaje się tylko do stwierdzenia stanu naciśnięcia. Poniżej zamieszczam moją przykładową obsługę tego panela. U mnie jest to wątek RTOSa, ale może...
Witam, próbuje uruchomic FreeRTOS 7.6.0 na LPC1768. Korzystam z CooCox`a. Dodałem do projektu plik FreeRTOSConfig.h, wybrałem stertę heap_2, port to oczywiście GCC->ARC_CM3. Podpiołem Handlery do przerwań. Plik FreeRTOSConf.h [syntax=c] #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H /* Here is a good place to include header files that are required...
Wywal z obsługi przerwania EINT1_IRQ opóźnienia. LPC1768 też jest już całkiem stary ;) lecz jeszcze całkiem, całkiem. Jeśli nie potrzebujesz "kobyły" ale szybki uc to fajne są LPC134x np. w obudowie lqfp48, dobrym wyborem jest także LPC11U68 ale to cortex M0.
No tak, ale pojedyncze znaki są tylko dla przykładu, docelowo wiadomości będą znacznie dłuższe, więc z takim założeniem można to rozpatrywać. A więc funkcję wysyłającą zostawiam z: [syntax=cpp] void UARTSend(uint8_t *BufferPtr, uint32_t Length) { while (Length != 0) { LPC_UART0->THR = *BufferPtr; BufferPtr++; Length--; } } [/syntax] A wysyłanie poprzez:...
A więc tak - temat "uni socketu" tqfp44/64 jest IMHO do ogarnięcia. Nawet patrząc na Zestaw uruchomieniowy z mikrokontrolerem LPC1768 firmy NXP (Cortex-M3), debugerem JLink i 3,2-calowym wyświetlaczem dotykowym a za chwilę w dalszej części: Podstawowe właściwości: Mikrokontroler LPC1768 z rdzeniem ARM Cortex-M3, 512 kB Flash, 64 kB SRAM, Ethernet, (....)...
Dziękuję bardzo za pomoc :) Dziwne bo kompilator widzi jeszcze jeden błąd. **** Build of configuration Default for project freeRTOS_uIP **** cs-make all Linking target: out/FreeRTOS_uIP.elf arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -Tsetup/STM32F103xB_rom.ld -g -Wl,-Map=out/FreeRTOS_uIP.map,--cref,--n... -Wl,--gc-sections -nostartfiles...
Zgłaszasz przerwanie timera z częstotliwością np. 100 Hz. W przerwaniu odczytujesz wynik poprzedniej konwersji i startujesz następną.
LPC176x (czyli wersja 100-nóżkowa) posiada 4 timery, każdy z nich posiada po dwa wejścia: CAP0 i CAP1. Daje to max 8 wejść, czyli może się udać. Pokrótce wejścia CAP pozwalają zapisać aktualny stan timera (rejestr TC) w rejestrze CR0/CR1 w momencie zmiany stanu na takim wejściu. Pomiar szerokości impulsu PWM jest tym samym tak dokładny, jak często tyka...
Dobrze kalkulujesz. Co do kodu to jest zonk w tym, ze do zliczania impulsow i odmietrzania czasu uzywasz tego samego Timera0. Byc moze jeszcze gdzies jest blad lecz na chwile obecna dysponuje tylko tel. komorkowym. Funkcja Timer0_MicroSeconds musi dzialac na innym timerze niz Timer0 ! Dodatkowo lepszym rozwiazaniem byloby przepisanie stanu licznika...
Jeśli nie delay, to zastanawiam się jak inaczej to rozwiązać... Ustawić przerwanie od timera, albo przenieść delay do głównej pętli programu.
(at)Badmaneq Nowy projekt już zrobiłem, w tym samym workspace. Skopiowałem do niego pliki *.h i *.c z src. Nic nie ustawiałem w properties. string.h nie includowałem. Nie używam żadnej funkcji ze string.h to po co mam go odkomentować? W katalogu po build i debug pojawiły się te 3 ścieżki i problem pozostał. Kod który dałem w 1 poście to ten który rano...
Witam wszystkich Elektrodowiczów! Otóż stoję przed problemem szybkiego rejestrowania stanu wejść cyfrowych. Problem wygląda następująco: - jest to układ 10 analogowych komparatorów napięcia (10 kanałów), który może pracować z rzeczywistą prędkością próbkowania/porównywania sygnału ok. 10 ns każdy, - układ ten (10 komparatorów) posiada wejście zatrzaskujące,...
Mój schemat wygląda raczej standardowo (ARM - lpc1769): Elementy o stałym (mniej-więcej) czasie wykonania i określonej częstotliwości: * Odczyt danych z ADC * Odczyt stanów niektórych pinów * Wykonanie różnych obliczeń stałych (PID, Kalman etc. - docelowo może to być dość złożone, jednak o relatywnie przewidywalnym czasie - tak myślę) * Wysłanie wyników...
Zaznaczyłem breakpoint na linijce: Dodano po 2 Czy w ogóle jest możliwe zdebugowanie programu (kodu źródłowego) z podłączonymi urządzeniami peryferynymi (np. przełączniki) do płytki LPCXpresso w taki sposób, aby móc obserwować reakcję programu w zależności od włąśne położenia przełączników (wchodzenie w warunki "if", wartości zmiennych zależących od...
Napisałeś : "Cortex-M3 - jest (powiem) stworzony do takich właśnie celów." Tzn. co jakich celów stworzony jest Cortex-M3 ? http://www.arm.com/products/processors/c... Zacytuję tylko mały fragment : ...for highly deterministic real-time applications... Czyli stosy TCP i CANopen muszę pisac na piechotkę, jak dawniej na avr. Możesz znaleźć...
Tak, biblioteka jest mojego autorstwa. Parametry: Obsługa DPV0 Obsługa DPV1 Prędkość transmisji 9600-1,5M Zasoby procesora: 1 timer, 1 uart Sposób wywołania: funkcja inicjująca (inicjacja pamięci, inicjacja protokołu) -> zwraca - adresy obszaru pamięci do wymiany danych z PLC. 1. Wejścia 2. Wyjścia 3. Diagnostyka Cała obsługa protokołu jest niedostępna...
Witam, mogę podjąć się zlecenia, niedawno napisałem podobny soft w pracy na LPC1766 do sterowania silnikiem, z napisaniem softu na AT91SAM7S nie powinienem mieć problemów. Jeśli jest pan zainteresowany proszę o: -dokładna specyfikacje projektu (prototypy funkcji-parametry, jakie mam użyć przerwania) -schemat docelowego układu (piny, peryferia, częstotliwość...
Zrobiłem tak jak radził BlueDraco i Ty Kolega BlueDraco ma rację. Lepiej zrobić tak, że definiujesz zmienną w pliku *.c a w plikach *.c, z których chcesz do niej dostępować deklarujesz ją z kwalifikatorem extern. (nie było jeszcze Twojego EDIT) i działa. Uruchamiam teraz UART i znowu problem z SystemCoreClock. Na przykładzie inicjacji timera w pliku...
Wektory ? Zachodzą jakieś wyjątki ? Cyklicznie co około sekundę jest wywoływane przerwanie od timera które wysyła dwa bajty danych i mruga diodą. Oto kod tego: Poprawiłem dobór języka w tagu syntax. Proszę na przyszłość używać tagu ] do wklejania kodu w asemblerze... /syntax] . LordBlick
Wstawiam kod obsługi odbioru danych w przerwaniu, gdzie odebrane dane są zapisywane do bufora a po zapełnieniu bufora do zewnętrznej pamięci, w tym przypadku na karte SD, docelowo do pamięci Flash - może komuś się przyda. [syntax=c] #include "LPC17xx.h" #include "lpc17xx_systick.h" #include "lpc17xx_uart.h" #include "lpc17xx_pinsel.h" #include "diskio.h"...
Od kliku dni walczę z prostym programem tworzącym plik tekstowy na karcie micro SD i zapisującym do niego byle jakiego tekstu. Podążając za tutorialem ze strony brc-electronics (sd-card) oraz opierając się na plikach z tamtejszego repozytorium przykładów (SDDatalog_CoIDE) dotarłem do problemu, którego nijak nie mogę rozwiązać. Otóż nie mogę otworzyć/utworzyć...
Wprowadziłem stosowne zmiany w moim kodzie: - dodałem odpowiednie opóźnienia po zmianie stanu linii EN oraz RS (1 mikrosekunda), - nieco zmodyfikowałem ustawienia wyświetlacza. [syntax=c]/* * main.c; plik zgodny z biblioteką CMSISv1p30_LPC17xx/inc/LPC17xx.h * CMSISv1p30_LPC17xx/src/system_LPC17xx.h * * Created on: 2011-10-01 * Author: jakub.papuga */...
Witam serdecznie, Jestem inżynierem elektronikiem (mgr inż.) z ponad 6-letnim doświadczeniem w pracy projektanta/konstruktora - projektuję i wykonuję urządzenia elektryczne i elektroniczne (m.in. przemysłowe, laboratoryjne, pomiarowe, precyzyjne, komunikacyjne, wizualizacyjne, przetwarzające dane, itp.) w komercyjnych firmach. Szybko, sprawnie i skutecznie...
Witam po krótkiej przerwie, Otóż sprawdziłem kilka rzeczy na linii program-sprzęt. Jak się wcześniej okazało, odczytuję poprawnie z magistrali I2C statusy pamięci EEPROM (0x08 0x18 0x28 0x08 0x40 0x58) - przy odczycie wartości bajtu z pamięci EEPROM, ale fizyczny przebieg sygnału na linii SDA jest zły. Po kilku różnych próbach zidentyfikowania problemu...
Witam wszystkich Elektrodowiczów! Chcę wykonać transmisję danych pod DMA z przetwornika ADC do USARTu i dalej je wysłać po RS23 lecz coś mi nie wychodzi. Zrobiłem działającą transmisję z pamięci do UARTa1, poniżej zamieszczam kod: 01 . 02 . 03 . 04 . 05 . 06 . 07 . 08 . 09 . 00 . 00 . 09 . 08 . 07 . 06 . 05 . 04 . 03 . 02 . 01 . Natomiast nie mogę...
Witam, mam problem z wywołaniem funkcji w przerwaniu. Na chwilę obecną debugowanie odpada, gdyż mam mały problem z odpaleniem debugowania. Po wywołaniu przez procesor przerwania, albo się on wiesza albo niepoprawnie działa funkcja. To samo dzieje się gdy wkleję do przerwania zawartość funkcji. Podczas kompilacji nie sypią się żadne warningi dotyczące...
lpc1768 bootloader lpc1768 ethernet programowanie lpc1768
płyta piszczy nexen opony kolumna przerobić
ciężko odpala dłuższym postoju szpiegowanie telefonu
Jak przełączyć basy w LG bez pilota? Zalanie kuchenki gazowej - skutki i działania