(at)Marek_Gorecki Odnoścnie ARM info o czasie reakcji na przerwania znajdziesz tutaj: http://infocenter.arm.com/help/index.jsp... Funkcje: EXTI_GetITStatus EXTI_ClearITPendingBit są specyficzne dla STM32 ponieważ wiele źródeł jest podłączonych do jednego wektora przerwania. Czas reakcji na przerwanie będzie sumą cykli...
Chyba najlepiej by było zrobić dodatkowe przerwanie, które realizowało by elementarne operacje na magistrali 1Wire, czyli włączało stan niski linii i go zwalniało. Wtedy nie byłoby tego czekania 480 us i to dodatkowe przerwanie mogłoby przerwać przerwanie silnika na nieistotny czas. Tylko, czy to nie jest za duża komplikacja? Na czas nadawania reset...
Witam Forumowiczów. Tytułem wstępu krótki "portret własny". Jestem elektronikiem-programistą-amatorem. Swoją przygodę z mikro-kontrolerami wiernie ograniczyłem do rodziny atmeli mega. Może nie narzekam , ale świat idzie do przodu, chcę się pobawić DMA i te klapki na oczach zaczynają uwierać. Ponieważ rodzina atmeli powiększyła się o serię xmega idąc...
Żeby wywołane zostało przerwanie musisz jeszcze odblokować globalną flagę zezwolenia na przerwanie (sei()) i skonfigurować kontroler przerwań - odblokować przerwanie o najwyższym priorytecie.
Nie, tego z obsługi enkodera. Jak sądę przejściu 0->top i top->0 towarzyszy przerwanie nadmiaru. Ew. można wykorzystać przerwanie compare z kanałów A-D.
Owszem, przerwanie wyzwoli, ale najpierw należy rozpocząć konwersję. Ty robisz to tylko raz, przy inicjalizacji ADC, po pierwszym przetworzeniu już nic nie wyzwala kolejnego.
Tak, są błędne. ATMega32 dysponuje jednopoziomowym systemem przerwań i aktualnie wykonywana funkcja obsługi przerwania nie może być przerwana. Chyba, że jawnie na to zezwoli odblokowując flagę I rejestru stanu. Z AVR dopiero XMEGA posiadają 3-poziomową obsługę przerwań.
Witam Czy w trybie FREERUN zgłaszane jest przerwanie? Pozdrawiam
A propos przerwań - widzę, że masz tam jakieś przerwanie od pinu (funkcja Initialize_INTERRUPT_For_nRF) - pamiętaj, że w XMEGA kontroler przerwań jest wielopoziomowy, tak więc, oprócz odblokowania danego przerwania musisz określić jego poziom (LO, MED, HI), a także odblokować przerwania danego poziomu w kontrolerze przerwań oraz globalną flagę zezwolenia...
Hej, może przerwanie SPI?
cli i sei zmienią globalną flagę przerwań, blokując lub odblokowując wszystkie. Na to nakładają się priorytety przerwań kontrolera przewań i na końcu masz przerwania z danego modułu. Kolejne możesz zablokować tak jak masz, wpisując blokadę do PINCTRL lub w rejestrze kontrolnym przerwań dla danego peryferium (w tym przypadku PORT). Normalnie RETI na...
Priorytety są jak osobne grupy przerwań odnośnie załączania. Chcesz mieć hi_level musisz załączyć hi_level. Ich relacja wystepuje wtedy gdy obsługując przerwanie low_level dostajesz przerwanie med_level lub hi_level, to lo_level zostaje wstrzymane na czas realizacji med_level lub hi_level.
Po pierwsze enkoder możesz obsługiwać sprzętowo na XMEGA - w tym celu konfigurujesz event system na QDEC, a dowolny timer będzie ci zliczał impulsy i pracował jako enkoder. Co do transmisji USART - można paczki odbierać przez DMA, co jest wygodne, można to zrobić w oparciu o przerwania. W tym celu odblokowujesz przerwanie RXComplete sygnalizujące gotowy...
(at)niveasoft To nie ten przypadek. Wyjaśnienie tej zagadki jest raczej proste - flaga przerwania jest kasowana, ale zwieranie mechaniczne powoduje bouncing, więc zgłaszanych jest więcej niż jedno przerwanie. Samo wyłączenie przerwania nie wpływa na odpowiednią flagę, więc przy kolejnym drganiu jest ona ustawiana, ale przerwanie nie jest obsługiwane...
Z ciekawości możesz ustawić wszystkie nieużywane porty i te do których nie masz nic aktualnie podłączone jako wyjścia . To co opisujesz wygląda tak jak by "wiszący pin" będący wejściem generował przerwanie .
Nie dasz rady podłączyć kilka pinów pod jeden kanał system events, jest tylko jeden CHnMUX na kanał. W formie protezy na przerwanie INT z kilku pinów możesz programowo włączać przerwanie events.
Jeśli dobrze rozumiem, chcesz by przerwanie pochodzące od komparatora wywołało szybką reakcję ( np. odcięcie zasilania czy ograniczenie prądu do zewnętrznego, sterowanego obwodu ), czy tak ? Więc wybierasz przerwanie zboczem narastającym, w obsłudze przerwania ustawiasz flagę i.. tyle. Resztę realizujesz za pomocą tej flagi. Resetować ta flagę możesz...
Tak, XMEGA chodzi max do 3,6 V, niemniej dzięki DMA można pobrać stan portu w ciągu 1-4 taktów, co dla zegara 32 MHz przekłada się na mniej niż 160 ns, w dodatku całkowicie sprzętowo, bez udziału MCU.
Witam, W przypadku XMEGA32E5 i timerówTC45 znacznik przerwania od Overflow/Underflow nie jest automatycznie kasowany po wejściu do obsługi przerwania. Należy go skasować programowo poprzez wpisanie "1" do bitu OVFIF w rejestrze INTFLAGS w obsłudze przerwania. U Ciebie występuje dokładnie efekt braku kasowania znacznika. Pierwszy okres jest poprawny,...
Mam jednak wciąż pytanie co do drugiej części, jeżeli zmienna jest volatile to dlaczego konieczne jest wyłączanie obsługi przerwań? Czy wynika to z tego, że to 4-bajtowy typ long i przerwanie może nastąpić w trakcie porównywania i zmienić wartość niesprawdzonych jeszcze bajtów? Dokładnie o to chodzi. Tu lepsze sa 32 bitowe procki, przy porównaniu long...
Co rozumiesz przez "stabilność pracy"? Jeśli chodzi o zabezpieczenie przez zawieszeniem się na skutek zaniku sygnału zegarowego to XMEGA ma ciekawy układ monitorujący sygnał zegarowy. W razie błędu automatycznie zostanie uruchomiony wbudowany generator 2MHz i zostanie zgłoszone przerwanie. W XMEGA poszczególne peryferia procesora mogą być taktowane...
O ile dorze rozumiem idee tego przerwania (nie miałem okazji wykorzystać go w praktyce) to określona zmiana na którymkolwiek pinie z grupy wywołuje przerwanie... i teraz myślałem, żeby za pomocą prostych warunków zliczać, który wywołał i ile w danym czasie. Problem widzę w momencie, gdy przykładowo czujnik A wywoła przerwanie w bardzo krótkim czasie...
Tak na szybko bo w tej chwili nie mam czasu, nie możesz do zmiennej wielobajtowej, modyfikowanej w przerwaniu, odwoływać się tak jak to robisz. Zastanów się, co się stanie jeśli przerwanie wystąpi w czasie wykonywania instrukcji ltoa, lub wysyłania danych? To co uzyskasz będzie mniej lub bardziej przypadkowe. Najpierw atomowo przepisz zawartość zmiennej...
Pozwolę sobie jeszcze raz po czasie poruszyć temat enkodera obrotowego. Jak zmodyfikować [url=https://extronic.pl/content/59-kurs... program żeby każda zmiana stanu enkodera generowała przerwanie. Chodzi o to żeby nie czytać stanu rejestru TCC0.CNT cyklicznie i sprawdzać czy przypadkiem coś się w nim nie zmieniło tylko odczytywać...
Amógłbyś jeszcze napisać czy istnieje w xmega coś jak tryb przerwania CTC w atmega? Potrzebuję przerwanie co 1 sekundę i za bardzo nie wiem jak to zrobić a strasznie mało informacji w sieci:/ Czy CTC to jest CCA w xmega? Każda Xmega ma wbudowany układ RTC orac generator 32kHz więc można sobie 1 sekundowy taimer ustawić bez problemu (i bez dodatkowych...
Panowie wydaje mi się, że właśnie w takim przypadku użycie volatile jest KONICZNE i to zdecydowanie, ponieważ to właśnie tylko w funkcjach a w zasadzie TYLKO w funkcjach zawierających pętle nieskończone bez możliwości ich przerwania dochodzi do buforowania zmiennych Nie jest to prawdą: Natomiast co ciekawe jeśli używamy zmiennej w przerwaniu to jej...
Enkoder faktycznie jest optyczny ale drgania wynikają z oscylacji regulatora lub drgań które niosą się po maszynie. Ale to raczej max kHz wiec dla 32MHx procesor się wyrobi. Ostatecznie wg dokumentacji przerwanie timera może być zgłaszane przy przepełnieniu w obie strony.
Przecież nawet w nowszych AVRach możesz skonfigurowac przerwanie Pin Change na każdym porcie, więc w czym problem? robiw
Widzę jednak, że freeRTOS działa na AVRach: https://www.freertos.org/RTOS_ports.html W pierwszej wypowiedzi nie pisałeś, że chodzi o AVR. Odpuść sobie RTOS na AVR. Ma on spore ograniczenie no i RTOS wymaga "trochę" RAM, tak jak i wszelkie bufory (np dla UART) aby RTOS mógł "rozwinąć skrzydła" a AVR mają mało RAM poza Mega1284. Tak z ciekawości - próbowałeś...
Witam kolegów. Mam pytanie co do przerwań w uC seri XMEGA. Wiem że każdy port może generować przerwanie INT0, INT1. Czy oznacza to że w sumie mam 2xnPORTOW możliwych przerwan tego typu? Potrzebuje uC gdzie mogę wykryć zboczę narastające na 4 różnych wyprowadzeniach, i zboczę na każdym z pin-ów ma wywołać inne przerwanie. Czy podobnie jak w starszych...
Istotnie są enkodery, które generują pojedyncze przejścia, albo całe cykle, lecz w praktyce nie ma to znaczenia i metoda opisana przez (at)PDT sprawdzi się w obu przypadkach. Jedynie wynik należy podzielić przez 4 jeśli enkoder generuje pełen cykl/przejście. Jeśli przerwanie tak jak w przykłądzie jest generowane co 2,5ms to potencjalnie możemy wykryć...
Popatrz na enable cycle time - 1200 ns, czyli wieczność. Obsługę tego wyświetlacza na szybkim MCU należy oprzeć np. o przerwania. Czyli w przerwaniach timera, wywoywanych co odpowiedni czas - max co 1200ns dokonujesz zapisu, jeśli masz coś do zapisania i kończysz przerwanie. Dzięki temu procesor ma szansę w międzyczasie zrobić cos sensownnego, a nie...
O kolejkowaniu też myślałem ale to sporo przebudowa programu. Tylko jeśli program jest koszmarnie napisany :) Kolejkowanie to jedyne sensowne rozwiązanie. W aplikacji sprowadzi się do prostej wymiany instrukcji odwołującej się do SPI na funkcję realizującą transakcję. Wkleiłbym ci kod, ale jest tego trochę, tak jak pisałem, ściągnij sobie przykady...
Tego jitteru w żaden programowy sposób nie wyeliminujesz. Jego powodem jest to, że wejście w ISR trwa nie zawsze tyle samo - XMEGA wykonuje instrukcje w ciągu 1, 2 lub 3 taktów, a ISR nie przerywa instrukcji, lecz CPU musi ją najpierw dokończyć. Więc w zależności od wykonywanej instrukcji już masz jitter 0-2 taktów. Do tego, jeśli MCU wykonuje inne...
ad 1. To co piszesz jest prawdą dla niektórych procesorów, posiadających przerwania wielopoziomowe z priorytetami. AVR8 z wyjątkiem rodziny XMEGA tak nie mają. Jeśli wystąpi przerwanie to wszystkie inne są blokowane. Tylko XMEGA ma 4 poziomy piorytetów (właściwie 3 - jeden to po prostu blokada przerwań) i procedura obsługi może być przerywana przez...
Ogólnie powiem z całym szacunkiem, że z najnowszym AVR Studio jest sporo problemów. Dla początkujących do nauki polecam AVRStudio 4.18 - tam w zakresie podstawowych kostek serii Tiny AVR i Mega AVR wszystko działa poprawnie. (Jedynie najmniejsze kostki Tiny10/9/5/4 są w wersji 4.18 obsługiwane nieprawidłowo, serii XMega nie testowałem szczegółowo w...
Nie będzie to specjalnie trudne, nawet na AVR. Jak pisałem, zainteresuj się rodziną XMega, masz tam podwójny ADC z pipeline, DMA umożliwiający ładowanie wyników wprost do pamięci lub urządzenia IO, samplowanie 2Msps przy 12-bitowej rozdzielczości, a nawet szybciej dla niższej. Programowe wzmocnienie 1-64x i wiele innych. No tak, kiedyś trzeba będzie...
Coś te flagi przecież ustawiło... Najpierw włączasz obsługę tych przerwań, potem włączasz podciąganie pinu to flaga już ustawiona...a kasowana jest przez AVR sprzętowo kiedy obsługiwane jest przerwanie. Bascom nie musi obsługiwać żadnego kasowania flagi przerwania bo robi to sam procesor tyle, że w przerwaniu (jednym w wyjątków potwierdzających regułę...
Wszystkie tego samego nigdy nie mają. Nawet jeśli ustawisz je na tym samym poziomie, to najwyższy priorytet ma przerwanie o najniższym wektorze, chyba, że zastosujesz round robin lub inny, sztywny priorytet. Jeśli chodzi o wymienione trzy poziomy to wszystko zależy od aplikacji. Zauważ, że przerwanie wyższego poziomu może przerwać ISR przerwania niższego...
A mnie interesuje sprawa DMA - że niby można pobierać dane sprzętowo i np wypluwać je na LCD. Czyli że 1 poleceniem mogę zawartość bloku pamięci RAM/FLASH wypluć na port SPI? A co jeśli wypluwam do LCD dane równolegle i po każdym bajcie muszę dać sygnał E (zapisz)? Ponoć można też pobrać dane do pamięci. Przykładowo mam RS232. Ale DMA mi nie wykryje...
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
Zmienić tryb pracy na jaki i czy w tedy też trzeba zmierzyć offset?. W pdfie jest trochę za dużo informacji jak na jeden raz. Czy ADC idzie ustawić w tryb free run ze skanowaniem wejść (na porcie A), gdzie po przeleceniu wszystkich zgłosi przerwanie i w tym przerwaniu będzie się można dobrać do wartości z każdego wejścia?
"Nowe" czyli od Xmega i nowsze AVR mają mozliwość priorytetu przerwania. Poprzednie miały ustalony. Nie wiem jaki to AVR, ale jeśli ustawisz Timer i przerwanie od niego to jak będzie w przerwaniu to oczywiście zauważy potem flagę przerwania z USART, ale może być za późno, dlatego jeśli nie trzeba, to się przerwań od wszystkiego nie uruchamia. Rzadko...
Na ATMega644 oczywiście nie da się tego zrobić, chociażby z tego powodu, że bufor odbiornika jest jendobajtowy i odebrane znaki by się po prostu zgubiły. Natomiast z AVR da się coś takiego osiągnąć na XMEGA E5, gdy sprzęgniesz USART z EDMA w trybie wyszukiwania wzorców. Wtedy jest możliwość zgłoszenia przerwania po napotkaniu wzorca, który podałeś,...
Nie wiem jak ugryźć coś takiego: karta SD i VS1011 na jednym SPI (xmega). Odtwarzane będą pliki zarówno mp3 jaki wav. No i w przypadku wav zastanawiam jak pożenić wszystko czasowo np dla pliku 48kHz 16bit stereo. Odczyt z karty SD jednego sektora 512B trwa zapewne ok 300 - 500 us, a więc na ten czas musiałbym zaprzestać transferu do VS (a przy odczycie...
Dobrze wezmę pod uwagę że to ma też odebrać. Choć nie mam pojęcia jak i jak to wyegzekwować skoro nic nie nadaje do xmega. Tak czytam datasheety często bo daje to dużo lepszy wgląd w registry niż durne polecenia bascoma. Nie wiem jednak jak podłączyć przerwanie od SPI pod te DMA, jest coś jak eventsystem ale miesza mi się to wszystko już.
Witam; próbuje poznać procesory Xmega, a dokładnie temat Timery. I nie mogę zrozumieć dwóch kwesti: 1) który rejestr odpowiada za podłaczenie zewnętrznych pinów procesora jako efekt działania timera w trybie PWM? Otóż, jeżeli timer ustawię na pracę w trybie single_slope lub na dual_slope , to jak mam zadeklarować aby wyjścia OCxx działały z tym timerem?...
Zależy co to za sygnał. Jeśli będzie co chwilę wywoływał przerwanie komparatora to ci zamuli procka, no chyba, że ten procek i tak nic więcej nie robi. Z drugiej strony jeśli korzystasz z Mega64, to pomyśl nad przesiadką na XMEGA, obudowa ta sama, rdzeń ten sam, narzędzia te same, a możliwości o wiele większe.
Jeśli chodzi o naukę to jednak bym się zabrał za XMEGA - 4 komparatory analogowe, z możliwością podłączenia pod wejście wyjścia z DAC, dzięki czemu masz możliwość regulowania progu przełączenia, ma też ADC z możliwością porównywania wyniku - przerwanie/event w sytuacji wynik większy lub wynik mniejszy niż zadana wartość.
Ograniczeń sprzętu się nie pzeskoczy. Tylko jak już robić to programowo to można dla wszystkich trzech serw, kod taki sam, a zostaje jeden timer więcej. Ale powstaje problem pod postacią jitteru wejścia w przerwanie, jeśli mikrokontroler wykorzystuje jeszcze inne przerwania. Ponieważ ATMega ma jednopoziomowy system przerwań zrobi się bałagan. A może...
Sam kiedyś zrobiłem odczyt z kamery na ATMega8 i to w sposób zupełnie programowy (procek sprzętowo generował tylko Pixel Clock dla kamery (jakieś 8MHz)). Program musiał ignorować co drugą linię obrazu żeby się wyrobić, ale ogólnie dawał radę. Konwertował też w locie YCrCb na RGB i puszczał po SPI do LCDka. Myślę więc że na Xmega będzie tylko łatwiej...
...Czy SPI działa "niezależnie" tzn do rejestru wpisujemy wartości i SPI samo działa sobie z boku... Dokładnie tak; nie wysyłasz bitów 'ręcznie'. Jeżeli włączysz SPI, to zapisanie bajtu danych do rejestru automatycznie rozpoczyna transmisję i równolegle odbiór 8 bitów. Po zakończeniu operacji zostanie ustawiona flaga/flagi przerwania, a samo przerwanie...
http://obrazki.elektroda.pl/6914408400_1... http://obrazki.elektroda.pl/8024236400_1... ATxmegi to łakomy kąsek dla kogoś, kto już poznał "stare" AVRki - zwiększona szybkość (32MHz!), o wiele więcej peryferiów (5 UARTów! 16 kanałów PWM!), modularna budowa i można używać tych samych dobrze znanych narzędzi. Ale potem...
Witam, chodzi mi o to że przy konfiguracji timera jak poniżej, wyjście pwm pojawia się na pinie PD4 mikrokontrolera atxmega32e5 a powinno chyba być na pinie PD0? [syntax=csharp]TCD5.CTRLB = TC45_WGMODE_SINGLESLOPE_gc; //TRYB SINGLE-SLOPE TCD5.CTRLE = TC45_CCAMODE_COMP_gc; //WYBÓR KANAŁU A TCD5.PER = 512; //WARTOŚC TOP TCD5.CCA = 0; //POCZATKOWA WARTOSC...
Nawet prościej, bo zamiast drabinki rezystorowej można wykorzystać PWM + filtr RC low pass. Jeśli ktoś chce super precyzji, to wyjście filtra można podłączyć pod ADC. To na jeden pin AC, na drugi porównywane napięcie i włączyć przerwanie komparatora. Natomiast skoro już ktoś wspomniał o AVR XMEGA to tam można ten problem rozwiązać na kilka sposobów:...
Zamiast SIGNAL, używaj ISR. Program napisałeś tak, że przeskoczy go raz i się wywali, a może zresetuje. Powinno być coś w stylu: [syntax=C] int main(void) { funcja_wywolywana_tylko_raz_przy_starcie... while(1) //pętla { funkcja_wywolywana_non_stop(); } } [/syntax] Poza tym obowiązuje lektura dokumentacji. Jeżeli chcesz, aby przerwanie od ADC pojawiało...
Witam, Mam problem odnośnie modułu W5100. Mianowicie, po fizycznym resecie modułu (przycisk), moduł zachowuje się w 3 bliżej określonych stanach: 1. działa stabilnie - nie mam nic do zarzucenia 2. działa, ale odbiera tylko niektóre ramki 3. nie działa Opis: Z komputera, za pomocą skryptu, wysyłam ramki w odstępie 100ms do płytki z W5100 i mikrokontrolerem...
A AVRach oprócz nowej serii Xmega nie ma priorytetów przerwań. Obsługa przerwania blokuje wszystkie przerwania. Rozwiązaniem jest timer. Nie zwykłem wykorzystywać przerwań zewnętrznych do przycisków. Lepiej wykorzystać timer. Sprawdzając co np 100ms ich stan. 2x wykrycie kolejno mamy akcję. Dodatkowo w ten sposób łatwo zrealizować inna funkcje przycisku...
Przede wszystkim porzuć tą buibliotekę, przynajmniej w wersji klasycznej. I teraz od końca - odbiornik USART nasłuchuje cały czas i to nie angażuje procesora. Ba, np. w takiej XMEGA E5 procesor można nawet uśpić, a USART pracuje i jak zajdzie potrzeba to go wybudzi. To na czym powinieneś skupić swją uwagę to przerwania. A konkretnie przerwanie odbiornika...
Nie pasuje to, że nie wrzuciłeś ani jednego kawałka kodu. Wielokrotnie w DIY nie udostępnia sie kodów, bardzo często do projektów w rodzaju miganie diodą. Dlaczego więc ja miałbym udostępnić kody? Mając doświadczenia z pomocą na forach rozumuję tak: Gdy potrzebuję pomocy, najczęściej jestem tylko naprowadzany na trop i pewnie tak by było gdybym otworzył...
Za pomoca DMA mozesz kopiowac z pamieci do pamieci, z pamieci do IO lub odwrotnie. Procesor w tym czasie moze wykonywac inne instrukcje. Jesli to bedzie np. TWI lub UART to zasadnioczo nic nie musisz robic. Natomiast LCD podalem jako przyklad, kiedy DMA znacznie odciaza procesor, ale nie moze go wyreczyc, bo. np. co linie musisz generowac impulsy LP,...
No właśnie u mnie się to nie kompiluje (cały projekt ze strony). http://obrazki.elektroda.pl/1352516500_1... Nie wiem jak to się fachowo nazywa ten nowy sposób ustawiania bitów czy grup bitowych ale chodzi mi to co zakreśliłem na czerwono. To mi czasami nie działa. Wystarczy że zamiast tych durnowanych nazw ustawię bity po staremu i...
Faktycznie, zupełnie o tym zapomniałem. Co ciekawe kanały można przełączać funkcją "muxpos" tylko od 0 do 7, a Xmega16A4U-AU ma pojedynczy ADC, ale chyba 12 kanałów i powyżej już trzeba kombinować, bo jak się wpisze Muxpos8 i wyżej, to wywala błąd. Zaraz poczytam sobie o tym SCAN, czy można skrócić liczbę skanowanych kanałów do 8, bo więcej nie potrzebuję,...
Pomijając błędy w programie (przecież może paść co innego), zrób sobie np. dwie tablice z weryfikacją. Tam gdzie ważność danych jest ważna, czasem beckup może się przydać, nawet jak nigdy nie będzie potrzebny. Za którymś (dziesiątym, czy dwudziestym) restartem następuje wykasowanie jakiejś komórki A to jest restart napięciowy zasilaniem czy wejściem...
Przede wszyskim sprecyzuj jakie sygnały chcesz badać - częstotliwość i szerokość badanych impulsów (granice). Od tego zależy czy wybrana metoda jest dobra. Po drugie sprecyzuj co chcesz badać - mierzysz szerokość impulsów, czy interesuje cię różna reakcja na zbocza? Wśród AVR masz różne rodziny, ATTiny, ATMega, XMEGA, niektóre znich mają specyficzne...
IMHO jedyne logiczne rozwiązanie. Niby tak, ale równie dobrze ustawienie bitów EVSYS = 0 mogłoby nic nie robić i wtedy osiągnęli byśmy to samo. Tak czy inaczej powinienem raczej użyć ustawienia EVACT = SYNCSWEEP, aby mieć pewność, że ADC będzie wyzwalany przez system zdarzeń i za każdym razem zanim rozpocznie konwersję w tej samej chwili? Czy jednak...
Ostatnio zapragnąłem męczyć się z tym maleństwem (xmega32E5).. Próbuje skonfigurować timer tak aby udało mi się zmierzyć szerokość impulsu na jednym z portów. Dla Xmega128A3U nie stanowi to problemu i mój kod konfiguracji timera wygląda tak: [syntax=c] PORTA_PIN5CTRL= PORT_ISC_BOTHEDGES_gc | PORT_OPC_PULLUP_gc; EVSYS_CH2MUX=EVSYS_CHMUX_PORTA_PIN5_gc;....
Czy wróbelek ma jedną nóżkę od drugiej? Tak, ale... Kolego, jak chcesz uzyskać sensowną odpowiedź, to zadaj sensowne pytanie. Mogę się domyślać, że włączenie oznacza zezwolenie na obsługę przerwań i wtedy polega to zazwyczaj na ustawieniu bitu w rejestrze maskującym układu peryferyjnego + ustawieniu bitu zezwoleń na przerwania od danego układu (np....
To nie ma wiele wspólnego z bitowością procesora. To ile bitów na raz można wysłać zależy od budowy interfejsu SPI - niezbyt często zdarza się aby interfejs umożliwiał przesłanie 32 bitów na raz, lub umożliwiał płynną zmianę ilości wysyłanych bitów. Jak pisałem tu przerwania są bez sensu - przy największej szybkości wysyłania danych, wysłanie 8 bitów...
Witam, Uruchomiłem emulator klasy CDC kolegi tmf http://mikrokontrolery.blogspot.com/2011... jednak w momencie dodania timera + przerwanie po przepełnieniu to nie działa owo przerwanie. Kod main.c: [syntax=c]#include <avr/interrupt.h> #include <asf.h> #include "conf_usb.h" int main(void)...
Witam, chciałbym rozbudować kod znaleziony tutaj: http://mikrokontrolery.blogspot.com/2011... Na razie chciałbym dodać obsługę timerów, niestety przerwania nie działają ;/ Sprawdzam działanie przerwań za pomocą JTAGa (Atmel ICE) i stawiam breakpoint'y w funkcjach obsługi tych przerwań, niestety program...
To o co pytasz nie zależy od Bascoma, tylko od architektury procesora. AVRy po przyjęciu przerwania blokują wszystkie przerwania (z wyjątkiem XMEGA, które mają przerwania wielopoziomowe i NMI). Tak więc sam nigdy nie musisz w handlerze przerwania ich blokować. Pytanie, kiedy je odblokowywać przed zakończeniem obsługi. W kilku sytuacjach, np.: 1. Kiedy...
Możesz precycyjnie wykryc zero sieci, ale procesor potrzebuje czasu (np wejście w przerwanie) aby to "zero" zobaczyć. Czas wejścia w przerwanie jest kompletnie bez znaczenia - to bedą czasy rzędu 100-200 ns. Jakby się uprzeć, to ponieważ autor korzysta z nowoczesnego MCU, z dobrymi peryferiami, to całe sterowanie fazowe można zrobić na tym MCU całkowicie...
(at)hrync123 Problem najwyraźniej jest w braku synchronizacji poziomej. Część monitorów jest niezwykle wrażliwa na odpowiednie timingi, więc spróbuj poprawić generowanie H-Sync. Sprawdź też połączenia rezystorów i ich wartości. Niemniej cały ten kod jest raczej kiepski - przede wszystkim brak jest likwidacji jitteru wejścia w przerwanie w efekcie kolejne...
ARM z CM0+. Wejście w przerwanie trwa co najmniej 15 taktów, czyli dla 48 MHz będzie to 0,3125 us (zapewne dłużej, bo FLASH będzie wymagał pewnie 1WS). I nagle się okaże, że mamy ten sam problem co w AVR No to już demagogia kolego (at)tmf branie pod uwage jakiegoś starego śmiecia. Wszelkie nowsze (pisze o tanich układach w granicach 10zł) np F303 z...
Rozwiązanie pierwsze jest bez sensu, bo po co ci przerwanie ustawiające flagę, która jest ustawiana sprzętowo (OVF)? Rozwiązanie drugie jest ok, aczkolwiek zamiast sei w przerwaniu lepiej zastosować ISR_NOBLOCK. Oczywiście to zadziała tylko pod warunkiem, że czas wykonywania obliczeń jest krótszy niż odstęp pomiędzy przerwaniami OVF. W przeciwnym przypadku...
Prędkość obsługi przerwań determinuje wyłącznie tempo ich obsługi. Aby AVR wykrył przerwanie potrzebne są o ile dobrze pamiętam 2 takty zegara, co niewiele zmienia, bo z taką prędkością i tak przerwań nie obsłużysz, bo samo wejście do nich trwa ponad 4 takty, a wyjście dodatkowo 2. I to w przypadku pustego przerwania. Lepiej opisz co to za proste analizy...
Odpalam mapowanie na początku i cały odczyt traktuję jak SRAM, tak samo w przerwaniu jak i w pętli głównej? Jeśli tak, to rzezczywiście bardzo wygodne. Dokładnie tak. Dobrze rozumiem, że do problemu dojdzie, gdy akurat korzystam z rejestru CMD kontrolera i odpali się przerwanie, które będzie czytało z flash, a rejestr CMD nie będzie wtedy 0x00? Czy...
Ok, uporałem się jakoś z tym projektem, tak że wreszcie działa. W końcu użyłem tego gotowego przykładu: http://mikrokontrolery.blogspot.com/2011... i jakoś "ręcznie" dodałem biblioteki ASF od TWI. Było kilka niezgodności, ale się z tym uporałem. Tak więc program działa i wymienia dane z kompem. Mam...
Zmiana procesora, raczej nie możliwa. Jeśli już to zmieniłbym na Xmega co ma sprzetową obsługę encodera. Ale na razie bede probował na ATMEGA2560. Jeśli chodzi o przerwania to wyglądają one tak (kompilator Codevision): 1) Procedura odczytu encodera (przerwanie na obu zboczach): [syntax=c] #define kanal_A (PINE & (1<<4)) #define kanal_B (PINA...
Podświetlenie LCD wcale nie musi być z 3V3, tylko z Vcc USB, dzięki temu nie obciąża LDO z FT. Jeśli z jakiś magicznych powodów potrzebujesz 20MHz to wstaw XMEGA, będziesz miał nawet 32 MHz. Na dzielniku rezystorowym SPI i tak ci nie zadziała w sposób pewny dla CLK/2=8MHz, więc nic na tym nie zyskujesz. Tego całego klamota z ręcznym resetem wywal, bo...
Chciałbym wykonywać pomiary ADC na PortA (PIN2 - Positive, PIN4 - Negative) w trybie free run (tak chyba jestem w stanie osiągnąć najwięcej próbek?) i otrzymać wynik w przerwaniu jednak nie wykonuje się przerwanie. Czy mogę prosić o sprawdzenie? Oto kod: [syntax=c] #include <avr/interrupt.h> #include <asf.h> #include "conf_usb.h" static...
Czy powianiem użyć sterownika PLC ? Jeśli sterowanie ma wyglądać dokładnie tak prosto jak to opisałeś to użyłbym PLC. Wyjdzie taniej, pewniej, jest to prostsze do ogarnięcia, dla osoby, która nie czuje się pewnie w programowaniu. A przede wszystkim masz od razu załatwiony interfejs sterujący elektrozaworami i pompą + bonusy typu obsługa przez www....
Z programowymi rozwiązaniami byłbym ostrożny. Można założyć, że przerwanie od uart wykona się w 10us. Oczekujesz na serwie rozdzielczości 1 stopień. Jak wyliczył (at)emarcus wymaga to sterowania serwem impulsami o rozdzielczości co najmniej 2,8us. Jeśli serwem nie będziesz sterował sprzętowo przez PWM tylko jak zaproponowano w #8 (https://www.elektroda.pl/rtvforum/viewt...
O ile pierwsze miały jakieśtam problemy, to w kolejnych rewizjach je usunęli (aczkolwiek errata nigdy nie była długa). Atmel ma tą przyjemną cechę, że wypuszcza kolejne rewizje procków w których poprawia znalezione błędy, w przeciwieństwie do wielu innych producentów, którzy je powielają i wmawiają, że tak musi być:) Z pewnością tańsza i w sumie lepsza...
Nigdy nic nie złamałem na STM32F4DISCOVERY, a korzystam z ST-Link niemal codziennie. Wszystkie sygnały wyprowadzone na goldpiny (2.54mm) przy krawędzi płytki. CoIDE to jest właśnie środowisko typu pobierasz, klikasz i działa :) Jako początkujący też się na to zdecydowałem. Co do SAMD... Rdzeń CM0+(at)48MHz, to jednak 3. liga względem CM4(at)168+MHz....
Jeśli liczba ADC jest krytyczna, to dodatkowe łatwo dodać wykorzystując drugi procesor, łącząc oba np. przez SPI, I2C, USART, czy jak chcesz. Oczywiście zakładając, że masz ochotę naprawiać coś co lepiej by było zaprojektować od nowa poprawnie - tym bardziej, że nie masz póki co za wiele, więc za wiele nie tracisz. No i zamiast jednak archaicznej M32,...
Witam. Układ zmontowany, programuję i się okazało, że XMEGA nie obsługuje DMA <> SPI w trybie master. Wiem, mogłem sobie to doczytać. Fakt, przeoczyłem :( Póki co wyciągam programowo 25kSPS dla 4 kanałów jednocześnie :( Ale niewiele tej mocy obliczeniowej mi zostało. Jest sposób by w jakiś magiczny sposób uruchomić DMA, by ciut odciążyło procesor?...
rpal - kontekst z SDRAM dotyczył ATXMega, nie ATMega8. tomek_programista - tak, XMega obsługuje SDRAMy, przy czym tylko do 16MB. Co jak na 8-bitowy procesorek to też niezły overkill. Poszukaj w necie, widziałem projekt gry video na ATMega, ze schematami i wszystkim. Co do mocy obliczneiowej - jeśli cały obraz będziesz generował programowo to istotnie...
Tyle że musiałoby być zasilanie niższe o spadek na diodzie od reszty układów, czy to może być problem? Ciekawe jak się to robi najczęściej (jak nie ma sprzętowej opcji), teraz każdy sprzęt zapamiętuje ustawienia? Więc tak jak pisałem - najprościej to zrobić korzystając z wbudowanego komparatora - zaleta jest taka, że procesor nic nie musi robić, dostanie...
ShEvU_elektro - jeszcze raz, mówimy o RFM22, znaczenie NIRQ jest w nim inne niż w RFM12. Pisać i czytać rejestry modułu możesz w każdej chwili. NIRQ daje ci tylko w wygodny sposób informację o tym, że zaszło określone przez użytkownika zdarzenie. Może np. wybudzić procesor. biglolo94 - możesz ten pin olać (chociaż to niezbyt sensowne), albo podłączyć...
Zrobione, sprawdzone, działa. SPI zaprogramowany na częstotliwość 2.4 MHz. Używana jest tylko linia MOSI, która jest dołączona do wejścia pierwszej kostki WS2812. Bit o wartości 0 jest wysyłany jako 100, a bit o wartości 1 - jako 110. Aby przesłać jeden bajt do WS2812, trzeba zamienić wartość bajtu na 24 bity. Ja użyłem mikrokontrolera z rdzeniem Cortex,...
(at)markolsrz Zobacz sobie do nagłówka stdatomic.h. Znajdziesz tam funkcje rozwiązujące Twoje problemy ze współbieżnym dostępem do zmiennych. Porada niestety nietrafiona, a to z braku implementacji w AVR-libc. Oczywiście można sobie samemu to zaimplementować, lecz po co, skoro już w AVR-libc mamy atomic.h. Jedyne co można poprawić, to tak jak napisałem,...
Ten jeden cykl różnicy był oczywiście przykładowy, wiadomo, że w innym kodzie może to wyglądać ciut inaczej. Jednak jeśli dysponujesz większym nadmiarem czasu to tym bardziej różnica w czasie wykonywania między O3 a Os będzie bez znaczenia. Dokument Atmela, który podałeś nie dotyczy gcc, to stary dokument. Weź pod uwagę, że nawet używając wyłącznie...
Wygrzebałem mój moduł X3 od leon instruments. Do pinu A1, którego przerwanie będę sprawdzał, podpiąłem przewód, z drugiej strony sobie" wisi". Nie jest podpięty do niczego. http://obrazki.elektroda.pl/7657341400_1... Zrobiłem prosty program: http://obrazki.elektroda.pl/8271471100_1... Wszystko jest ustawione tak, jak...
Oj coś koledzy krążycie wokół tematu a nie widzę nigdzie pełnej odpowiedzi. Niektóre są za to błędne albo upraszczające. F_CLK_ADC, to tak jak ktoś pisał, tylko częstotliwość taktowania ADC. A że jest to przetwornik typu SAR (z sukcesywną aproksymacją) to konwersja 1 próbki trwa n cykli zegara F_CLK_ADC. W przypadku tego ADC jest to: - 25 cykli dla...
tmf napisał: W tym celu musisz tylko stworzyć odpowiedni deskryptor. No to troszkę bardziej złożone niż tylko napisanie deskryptora bo ta biedny AVR bedzie obsługiwać więcej endpoint-ów, musi napisać obsługę obydwu klas i odpowiednią maszynę stanów do rozdzielania ruchu do endpoint-ów, dużo więcej pamięci. Generalnie urządzenia composite są dość nieprzyjemne...
Czy prawidłowo zastosowałem się do wskazówki stosując najpierw zapis: OSC.CTRL |= OSC_XOSCEN_bm; a na końcu całej operacji wyłączając 2MHz tak: OSC.CTRL = OSC_XOSCEN_bm; ? IMHO tak jest prawidłowo. Wyłączenie generatora 2 MHz nie jest niezbędne, po prostu zmniejsza zużycie prądu. Stosuję optymalizację Os więc pewnie pomimo mojej niewiedzy wszystko...
No mam podobne właśnie rozwiązanie (poza tym, że zaproponowałeś coś w stylu inkrementalnego podawania ilości impulsów, a ja absolutnego, ale to nie takie istotne). Nie używam PWM tylko właśnie FREQ GEN (Szkoda, że nie wspomniałeś o tym trybie w swej książce. Znalazłem to w pdf AVR1306 / doc8045 p. 3.8.2. Podobny efekt można uzyskać w normalnym trybie,...
Jeśli chcesz skorzystać z wbudowanego RTC, co polecam, to zastosuj zewnętrzny kwarc dla timera, tak, żeby był taktowany asynchronicznie. Wtedy różne zakłócenia nie będą miały na niego wpływu. Co do wad i zalet - to prawda, że klasyczne RTC po prostu zwracają ci wyliczony czas (lata, miesiące, dni, godizny, minuty, sekundy), lecz nie ma problemu, aby...
xmega flaga przerwać xmega blokować przerwać stm32 przerwać przerwać
telefon alcatel połączenie dht22 wilgotność dodanie filmu youtube
Samsung NP550XDA NB2772_PCB_MB_V4.1 Rev 1.0 schematic access, boardview, repair tips Iveco Daily 2016 3.0 diesel – czy stałe podłączenie OBD2 rozładuje akumulator?