Na koncu funkcji przerwania musisz kasowac flage tego przerwania.
A czy masz zdefiniowane "VECTORED_IRQ_INTERRUPTS" w Project Properties -> Preprocessor Options -> Preprocessor Definitions ?
kurcze, trudne zadanie. Mógłbyś podrzucić cały katalog projektu, tzn. bez rzeczy które chciałbyś zachować tylko dla Siebie. Chodzi mi o tą często zwaną 'rozbiegówkę'( nawiasem... świetna polska nazwa) w assemblerze i o 'startup' w 'C'. sam'a tylko na płaskich przerwaniach znam( bez priorytetów przerwań). Czy procesor wchodzi w to przerwanie? tu inicjalizacja...
Witam! Let's do some math, czyli "dlaczego się nie da" ;] Sygnał stereo o częstotliwości próbkowania 48kHz wymaga wysłania (2*48k)=96000 ramek danych w ciągu sekundy. Pojedyncza ramka danych to 32 bity (w tym 20 bitów danych, reszta to w uogólnieniu "narzut interfejsowy"). 96k ramek na sekundę, z których każda jest 4bajtowa, daje niebagatelną przepustowość...
w przerwaniach z zasady NIE WOLNO umieszczac kodu, ktory zajmuje duzo czasu. kod ktory nigdy sie nie konczy jest absolutnie wykluczony... poszukaj informacji o uzywaniu tak zwanych flag, zwanych czasem 'semaforami' - jesli przerwanie wystapilo i masz odczytane z niego jakies dane, to sygnalizujesz to kodowi w main przy pomocy dodatkowej zmiennej - flagi....
Chyba jest okreslony limit czasu w ktorym musi przyjsc potwierdzenie. Ogolnie jest to dosyc mocno skomplikowane. Np. w trybie usb->com zapytania z komputera do procesora przychodza co kilka ms, co jest logiczne bo slave nie moze z siebie sam nic wyslac a na comie dane leca przeciez w obie strony. To taka dygresja apropo faktu ze USB nie jest takie proste....
Eclipse zainstalowałem i skonfigurowałem i wszystko działa. Jeśli otworze projekt http://www.freddiechopin.info/index.php/... kompiluje się wiec eclipse jest ok, tylko ze to jest pod procesory lcp. Chciałbym teraz użyć procka at91 i tu pojawia się problem a mianowicie, mam już parę sampli( nie mojego autorstwa) które działają...
Skrypt linkera niedopasowany do startupa. http://www.elektroda.pl/rtvforum/topic13... http://www.elektroda.pl/rtvforum/topic13... Zaadaptuj dla Twojego układu (wystarczy zmienić rozmiary i adresy pamięci w skrypcie linkera oraz sposób wywołania przerwania IRQ w tablicy wektorów) i po problemach. 4\/3!!
_irq przy funkcji oznacza ze jest to funkcja obslugi przerwania.Twoj blad polega na tym ze GCC ma inny format deklaracji takiej funkcji niz Keil.W przypadku GCC uzywane jest __attribute__ ((interrupt("IRQ")) zamiast __irq. pz
w PIOB przerwanie jest odnotowane (zapala sie bit w PIOB ISR), wiec problem lezy chyba w tym ze AIC nie odnotowywuje przerwania od PIOB, zamienilem linijki i sposob wyzwalania - bez zmian :(
Rozwiązałem go przez zakomentowanie miejsc, na które "krzywo patrzył" eclipse. A na czym dokładnie polegał problem? Skoro interrupts używają tylko main stack to zmieniłem to. Nie wiem czy dobrze Dobrze, choć ja zwykle zaczynam od 1kB dla obydwóch stosów (; Dla małego przerwania 128B wystarczy oczywiście, ale później może być już za mało... 4\/3!!
Masz 2 wyjścia. 1. Funkcji obsługi przerwania trzeba ustawić atrybut : __attribute__ ((interrupt ("IRQ"))) który dodaje prolog i epilog funkcji obsługi przerwania. Ale podobno nie zawsze dziala... 2. Piszesz sam prolog i epilog funkcji obsługi przerwania w asemblerze. I zamiast skoku pod AIC skaczesz do etykiety obsługi przerwania która powinna zachowywać...
Mój plik CStartup.S wygląda następująco: /*--------------------------------------... //*- ATMEL Microcontroller Software Support - ROUSSET - //*-------------------------------------... //* The software is delivered "AS IS" without warranty or condition of any //* kind,...
Dobrze. Da się inaczej. Wersja łatwa: Tablicę (string) zrobić globalną i sprawdzać czy poprzednia transmisja została zakończona przed wysłaniem. Wtedy wywołanie dbguPrintf() zakończy się od razu, za to oczekiwanie nastąpi przy kolejnej okazji, ale czasu procesora zmarnuje się mniej, bo w trakcie transmisji będzie mógł coś robić. Wersja trudniejsza:...
Witam Wysyłam dane w trybie DMA po SPI, po zakończeniu nadawania muszę wyłączyć chip select (u mnie sygnał N_SYNC), który nie jest sterowany przez wbudowany kontroler SPI. Po nadaniu kilku bajtów na przerwaniu od pustego rejestru (AT91C_SPI_TXEMPTY) ma się wyłączyć sygnał N_SYNC void aic_configure(unsigned int periph_id, unsigned int priorytet,...
RTOS oczywiscie nie jest niezbedny. W wiekszosci rozwiazan jest nawet zbedny i powoduje zbyt duza komplikacje programu. Jednakze sa rozwiazania w ktorych okazuje sie ze rezygnujac z systemu, musisz potem sam dopisywac pewne mechanizmy ktore on oferuje. Nie wszystko da sie zrobic w petli z przerwaniami. Dobrym przykladem wydaje mi sie tu urzadzenie sieciowe...
Czesc, Jak Dexter juz zauwazyl, zazwyczaj core procesora ma jedno albo kilka wejsc przerwan i bardzo czesto sa tylko dwa - maskowalne i niemaskowalne, a dopiero do tych dwoch sie podlacza kontroler przerwan. Wiekszosc firm produkujacych uklady robi swoj kontroler przerwan i podlacza do niego swoje peryferale i wystawia cos dla uzytkownika. Sciagnij...
hehe coś to zaczyna działać :D ale program jakby się zawieszał myślę, że to wtedy gdy wejdzie do przerwania :cry: dodałem już do funkcji przerwania: AIC->AIC_EOICR = 0;
Na szczęście już załatwione. Zdążyłem się trochę dokształcić z obsługi przerwań pod freertosem :) Rozwiązaniem okazało się wrzucenie obsługi przerwania do osobnych plików, skompilowanie ich w trybie ARM, wrapper (czyli save i restore context) i __attribute__((naked)). Bez tego ostatniego wszystko chodziło idealnie, po czym całość zawieszała się po ok....
No więc poprawka, autor używał pakietu WinARM. To co napisałem znalazłem w książce (Mikrokontrolery AT91SAM7 w przykładacj)w której przykłady są przetestowane. Więc idąc takim tokiem rozumowania stwierdzilem ze problem tkwi w moim kompilatorze.... Zmienną plik typu FIL używam w przerwaniach, stąd chce mieć pewność że pobieram aktualne wartości zmiennych...
Witam, do odmierzenia czasu używam kontrolera PIT. Napisałem funkcje, która odmierza mi 1ms, ALE: -odmierza mi 47917000 taktów zegara o częstotliwości 47923200, więc biorąc pod uwagę to, że nie obsługuje przerwania tylko sprawdzam flagę zgodności i błąd czasowy kontrolera PIT, to wynik jest jak najbardziej OK; -w uVision3 otrzymuję informację, że odmierzono...
Witam Napisałem kawałek kodu do obsługi przerwań IRQ Zasada miała być taka po wywołaniu przerwania (zwarcie PIO_PA2 do masy) miał zmienić się stan diody na PIO_PA27. Niestety program nie działa poprawnie (przerwanie nie jest wykonywane). Tytułem wstępu to tyle. Poniżej kod, który powinien realizować przerwania. main.c http://obrazki.elektroda.pl/7449929900_1...
Hej Mam pytanko - proboje napisac prosty prog (zapalenie LEDa). Czy atmele wymagają jakieś inicjalizacji (pamięć, przerwania, peryferia) - czy od razu mogę zająć się rejestrami perfyeriów ? Soft jakiego uzywam to IAR zaś wgrywam SAM-PROG. pozdrawiam
Witam Chcialbym się was spytać o rade (wyjasnienie) jak to jest w ARM'ach Potrzebuje pobierac jednoczesnie 3 napiecia (w formie analogowej) i wrzucac je od razu do procka. Bardzo ważne dla mnie jest aby odbywało sie to w jednym takcie zegara. Układ chce oprzec na pocesorze ARM, po wstepnych przeszukiwaniach sadze is wersja S7 (AT91SAM7S128) w zupelnosci...
Ja programuje troche ARMy i ani razu nie uzylem debugera (tez mam Jtaga Krictecha i musze przyznac ze debugowanie programu ktory wykorzystuje przerwania nie jest dobrym pomyslem). Dobrą metodą jest uzycie jednego z UARTow (np DBGU) do wysylania interesujacych nas danych na terminal. W ten sposob mozna podejrzec konkretne zmienne czy rejestry w interesujacych...
Nigdy nie używałem Eclips-a to nie wiem, ale co do kosztów środowiska pracy to nie ma to znaczenia dla jego jakości. Na gcc+gdb zawsze i wszyscy narzekają i narzekali (łącznie ze mną) a mimo wszystko i tak większość tego używa. Bo darmowe ktoś zaraz doda. Może i tak ale w mojej firmie przerobiliśmy kilka środowisk, łącznie ze wspominanym, również takich...
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ść...
Kod który podałem powyżej działał dla mnie na SAM7, tylko ja miałem jeszcze włączone przerwanie od przepełnienia żeby modulować szerokość inpulsu. (at)marenc nie wiem co twoje makra robią
Powtórzę: zdecyduj się, czy w końcu obsługujesz transmisję na przerwaniach, czy bez przerwań. Obecnie robisz jedno i drugie - w pętli czytasz znak bez sprawdzania, czy nadszedł nowy, więc Twój program robi dokładnie to, co kazałeś - czyta w kółko ten sam znak bez sprawdzania, czy coś przyszło.
Skąd kompilator ma wiedzieć, że jakaś tam funkcja jest do obsługi przerwania? Przecież trzeba dodać specjalny identyfikator, w Keilu chyba "__isr" czy jakoś tak. 4\/3!!
Witam męczę się wczoraj z przerwaniami, zauważyłem ze do rejestru SOURCE_MODE_R Proszę używać przycisku "Zmień" Posty scaliłem.
Czy naprawde nikt nie wie jak to podlaczyc? :) jak widac, najwyrazniej uklady sie roznia odrobine jesli chodzi o sterowanie poza MII. Twoje interface wydaje sie sprzetowo ok i poprawnie rozpoznales piny :) Jednak najwyrazniej nie dostaniesz PHY IRQ od ukladu RTL gdy pojawi sie ramka w buforze. Zas sygnal reset wysylany do RTL najlepiej wystawiaj na...
Mam podobny If the ARM processor executes a coprocessor instruction, it waits for any external coprocessor to acknowledge that it can execute the instruction. If no coprocessor responds, an Undefined Instruction exception occurs. Dodano po 5 A i teraz zobaczyłem: AIC_ConfigureIT(BOARD_AT45_A_SPI_ID, 0, ISR_Spi); konfigurujesz SPI, aby używało...
Nie wiem czy aktualne ale z mojej strony mogę spróbować podpowiedzieć. Jeśli chodzi o przerwania to pierwsze pytanie - czy próbowałeś ustawić BP na adres 00100018 - jeżeli wchodzi w to miejsce to znaczy że przerwanie jest inicjowane tylko problem jest z handlerem. Co do nie zapamiętywania programu - jesteś pewny że wgrywasz program do pamięci flash...
Nic nie wiem na temat sposobu detekcji napięcia VBUS (5V z gniazdka USB) na Twojej płytce. W moim projekcie przyłączenie do hosta USB powodowało wywołanie przerwania na jednym z pinów IO a procedura jego obsługi przygotowywała interface USB do enumeracji. Wrzuć kawałek schematu albo opisz jak masz to rozwiązane.
Witam Przerobiłem twój kod pod keila i działa. Pod CrossStudio nigdy nie robiłem więc mam tylko takie sugestie: - pod keilem przerwanie powinno wyglądać tak __irq void Przerwanie() { } bez prefixu są problemy, może pod CrossStudio jest tak samo. - może zamiast: TC0_CMR = (1<<TC0_CMR_CPCTRG_BIT); powinno być: TC0_CMR = TC0_CMR_CPCTRG_BIT; - sprawdź...
Witam Powiem tak u mnie jest to samo jeśli chodzi o FreeRtos i Sam7x256 +Code Sourcery mam podobne problemy co kolega "Zaquadnik". Kiedyś pracowałem yagarto, po ściągnięciu gotowego projektu ze strony FreeRtos, program się kompiluje i działa od razu. (nadmienię że na stm32 nie ma żadnych problemów z Rtos + Code Sourcery) Pierwszy problem mam z przerwaniami...
Jakość dźwięku słuchowo jest dobra. Jakość CD może byłaby tu nadużyciem(chociaż, kto wie, nie mam audiofilskiego słuchu), ale gra to jak dobre radio FM. Porównywalnie z mp-trójką na STA013 i CS4334, którą robiłem ok. 1,5 roku temu. Zastosowałem w tym odtwarzaczu DAC UDA1330ATS (do kupienia tu: www.seguro.pl/sklep/?zobacz=4301&pro... ). Do regulacji...
W skrypcie linkera muszą być zadeklarowane symbole o nazwach jak wyżej wyznaczające obszar pamięci przeznaczony dla sterty (heap). Proponuję ściągnąć projekt dla lpc2103 i przystosować postawowe pliki (startup, Makefile, skrypt linkera, tablica wektorów: lpc2103_rom.ld, Makefile, startup.S, vectors.S, hdr\hdr_cpsr.h) do swojego projektu, a większość...
Witam ponownie. Poniżej obiecany kod funkcji main (dla przypomnienia: odtwarzanie krótkich mptrójek z pamięci Flash mikrokontrolera, zegar 33,8688MHz). Może się komuś przyda :) int main(void) { int bytesLeft, nRead, err, offset, outOfData, eofReached; unsigned char *readPtr; MP3FrameInfo mp3FrameInfo; MP3Decoder hMP3Decoder; int nFrames,...
Jesli jeszcze tego nie zrobiles to w pliku crt.s przy ustawianiu stosu uaktywnij przerwania dla trybu User Mode, czyli w CPSR nie ustawiaj bitów I i F. Ustawienie ich powoduje wyłączenie przerwań w danym trybie. Do tego ustaw odpowiednio rozmiar stosu dla trybów przerwania, u mnie to jest np. .set IRQ_STACK_SIZE, 0x00001100 Pozdrawiam
Pamietaj ze w FreeRTosie przerwan nie mozna obslugiwac w " zwyczajny sposob" tzn funkcjami ktore automatycznie odkladaja dane na stos a potem je zdejmuja itp. Nalezy wykorzystac makra portENTER_SWITCHING_ISR() i portEXIT_SWITCHING_ISR Przyklad przerwania od timera: Inicjalizacja timera void timer_init ( void ) { portENTER_CRITICAL(); //* Open timer0...
Witam, Programy typu zapal diodę w pętli już przerobiłem, od paru dni męczę sie z Real Time Timer . Napisałem sobie program który co 2 sekundy zapala kolejną diodę, aż do 8 diody. W symulatorze program działa w porządku , ale jak testuje na płytce, to zapalają mi sie po 2 sekundach wszystkie diody i nie wiem co jest. Program jest napisany w Keilu. Oto...
Witam Posiadam plytke testowa fimry Kamami ZL11 i modul dip z procesorem AT91SAM7S256. Zaczynam nauke programowania w CrossStudio tego procesora i mam problem z odczytem stanu przyciskow w petli (ale nie uzywajac przerwania). Program aktywuje port GPIO (ustawia linie wejsciowe i wyjsciowe), ale nie moze odczytac stanu przyciskow. Gdzies wyczytalem ze...
Jest to możliwe do zrobienia. Jeśli tylko nie kombinujesz z wielokrotnymi przerwaniami tego samego typu (czyli nie chcesz zrobić tak, że przerwanie IRQ przerywa przerwanie IRQ) to nawet jest dosyć proste. 4\/3!!
Częstotliwość wynosi około 750kHz const uint8_t SPI_SPCK_DIVIDER = 64; przy częstotliwości nastawionej na ok 48MHz. Na AVR zmierzyłem częstotliwość i była właśnie w tych granicach. Jak wspominałem tam radio działało. Obecnie nie bardzo mam chęć rozgryzienia tego problemu bo programowa obsługa zadziałała. Przypuszczam jednak, że czy tak, czy siak będę...
Dolacze sie do problemu z pytaniem. Czy da sie tak skonfigurowac w at91sam7 pin change interrupt zeby reagowalo na zbocze impulsu a nie na zmiane poziomu. Interesuje mnie tylko zbocze narastajace poniewaz moj impuls 1,0,1 jest na tyle krotki ze prawdopodobnie czas obslugi przerwania podczas zmiany z 1 na 0 przykryje mi moment zmiany z 0 spowrotem na...
Wyraziłem się nieprecyzyjnie. Oprócz tego, że uruchamia mi się przykład z USB i przerwaniami (link podałem w poprzednim poście), uruchomiłem również bez problemu framework MSD (chyba ze strony atmela). mariuszlorenc pisał, że miał problem z uruchomieniem czegokolwiek z atmela. Teraz coś nie mogę znaleźć linka do zip-a.. Jeśli komuś potrzebny - mogę...
Witam, używam w programie kilku „flag“, czyli zmiennych sterujących przebiegiem programu. Chcę je wszystkie zdefiniować jako POLA BITOWE i umieścić w strukturze, tak by leżały w jednym słowie 32-bitowym. Wartości „flag“ będą zmieniane zarówno w programie głównym jak i w przerwaniach. Dlatego zadeklarowałem zmienną jako volatile:...
Część nie związaną z tematem, usunąłem. ________________________________________... Jakby ktoś miał z tym problem, to zamieszczam działający kod: Timer TC0 generuje 100 przerwań na sekundę, dzięki czemu mam 100Hz wyświetlacz. Funkcja obslugi przerwania (plik main.c): __ramfunc void przerwanie (void) { odswiez ();...
Po długiej walce działa ;-) Błędy moje, jak i brak wiedzy. AT91C_BASE_PWMC->PWMC_CH[AT91C_PW... = AT91C_PWMC_CPRE_MCK_1024 | AT91C_PWMC_CPOL; odnosi się do indeksu 1 ponieważ AT91C_PWMC_CHID0 jest zdefiniowane jako 1<<0. Więc ustawienia dotyczące kanałów odnosiły się do kanału 1 a nie 0 tak jak chciałem. No a drugi błąd...
Ja sprawdzałem na analizatorze logicznym. - a potem na symulatorze, debugiem robiłem tylko przerwania. - tablice inicjalizujące masz poprawne pod względem zawartości ?.
Witam skorzystam z tego ze znacie sie troche wiecej niz ja w temacie arm9 mam zamiar sobie kupic plytke ( ze wzgledu na odpalonego linuxa , wiem wiem propox tez oferuje ale od nich nie chce ) http://www.shop.kristech.eu/product_info... i czy ksiażka http://www.sklep.avt.pl/p/pl/4858656/mik...
No cóż, tak naprawdę nie wiem, do czego to przerwanie jest i ja go nie obsługuję. W jakimś przykładzie znalazłem taki oto komentarz przy włączaniu przerwania: /* Interrupt enabling at peripheral level only in order to have synchronisation between Software and the UP-DATE Register (to avoid over writting) */ więc również je włączyłem, by ową synchronizację...
Oczywiście,że można. Ale nie w tej chwili, bo nie mam aż tyle czasu. Dzis wieczorem opisze lub jutro rano. Dodano po 4 1) Pobieramy IAR for ARM ze strony [url=http://iar.com/website1/1.0.1.0/675... Do wyboru mamy 2 wersje "30-day evaluation edition" oraz "Kickstart edition" proponuje ta drugą bo można wiecznie używać, jednak głównym nieudogodnieniem...
Edit: Ehh. Problemem było nie ustawienie bitów maskujących przerwanie w rejestrze CPSR. Znaczy bity ustawiałem ale niepoprawnie :| I 2 dni wyjęte z życia. Dzieki. Pozdrawiam. p.s. Co do poprzedniego posta to nie korzystam z funkcji bibliotecznych CW.
Witam. Od pewnego czasu jestem w posiadaniu zestawu z prockiem AT91SAM7S64. Mam problem z obsługą przerwań zewnętrznych. Kontroler nie wchodzi w procedurę obsługi przerwania.Wygląda na to ze wykonuje ja tylko po resecie a potem juz nie :( Oto fragment kodu (to jest chyba przykład ze strony atmela): void NACKEDFUNC ATTR irq0_int (void) {...
Sowa , napewno działa Ci ten kod co zamieściłeś. Możesz wyjaśnić dlaczego stosujesz *AT91C_TWI_MMR &= ( 0xFF00EFFF | (dev_adr<<16) ); zamiast normalnego wpisania do rejestru MMR? Bo to co robisz, to jest jedynie wyzerowanie niektórych bitów w tym rejestrze. I choć w niektórych przypadkach może to działać, ale generalnie na...
Witam! Proszę o podpowiedź dlaczego w kodzie: unsigned int i, imax, (...) int obsluga_przerwania1() { AT91C_BASE_TC1->TC_SR; i++; if (i > imax) { i = 0; *AT91C_TC1_CCR = 0x2; } AT91C_BASE_AIC->AIC_EOICR = 0x0; } int main() { [konfiguracja tc i aic] while(1) { if (warunek1)...
Mam problem z przerwaniami od ADC. Skonfigurowałem je, w funkcji main wrzuciłem pętlę nieskończoną która wyświetla znak '.'. Przed wejściem w tą pętlę następuje włączenie konwersji. Wyjście z programu wygląda tak -- AT91SAM7S-EK Skonfigurowano START....... Fragment kodu ADC_Initialize(AT91C_BASE_ADC, AT91C_ID_ADC, AT91C_ADC_TRGEN_DIS, 0, AT91C_ADC_SLEEP_NORMAL_MODE,...
Moze w startup'ie masz przerwania zablokowane.
Jest mały postęp. Komputer już widzi urządzenie. Nie tylko przez chwile, ale cały czas gdy jest podpięte. Ale niestety to wszystko, żadne deskryptor nie przechodzą i enumeracja nie zachodzi, jak sadze ;) Coś czuję ze diabeł tkwi w przerwaniach do obsługi USB. Ktoś jeszcze próbuje uruchomić USB Framework pod CrossWorksem? Może ktoś podpowie na co jeszcze...
Znalazłem rozwiązanie problemu. Wystarczyło przepisać funkcję inline do przerwania: void __attribute__ ((interrupt ("IRQ")))ADTC2... void ) { ULONG status_r; status_r = AT91C_BASE_ADC->ADC_SR; if( status_r & ADC_ENDRX ) { ADTC2DMA_state.Counter++; AT91C_BASE_PDC_ADC->PDC_RPR...
Co do drivera COM w Windowsie masz rację, ale zawsze można zmienić COM na HID, lub Windows na co innego ;-) Pozostaje faktem, że programowo łatwiej użyć FTDI. Co do problemu to nie siedzę w Atmelach, ale myślę, że problemu nie ma gdyż AIC_EOICR daje sygnał do AIC o końcu obsługi aktualnego przerwania. A ponieważ jego linia wjściowa nIRQ pozostaje aktywna...
Kumam. Troszkę. ;-) PID = Peripherial Identifier. Proste. :-) Powinienem więc ustawić w zasadzie tylko PID2, czyli wpisuję 0x4... Dużo mi to wyjaśniło, ale nadal nie nie rozumiem, czemu nie mogłem odczytać stanu PA0, PA1... Może w miarę poznawania klocka zaskoczę o co chodzi. :-) A tak zmieniając nieco tory, wycyganię może jakieś informacje o przerwaniach?...
Koledzy próbuje zacząć naukę AT91SAM7S256 i chciałem zmienić działanie przerwań od kontrolera PIO. Bazuje się na książce Roberta Brzozy Mikrokontrolery AT91SAM7w przykładach. chciałem skonfigurować przerwanie tak aby działało przy zboczu opadającym,ale nie wiem jak. Taki kod powoduje wygenerowanie przerwania przy obydwu zboczach.Wie ktoś jak to zmienić??...
Witam, od jakiegoś czasu używam środowiska IAR wraz z debugger'em zgodnym z J-Link. Pisząc oprogramowanie dla AT91SAM7S256 używam kilku przerwań(głównie wewnętrznych min SPI, UART). Konfigurując peryferium: włączam zegar w PMC, konfiguruję do pracy+włączam przerwanie. Dodatkowo Konfiguruję AIC. Podczas sesji debug otrzymuję informację z rejestrów AIC:...
Przy zapisie do flasha trzeba spelnic dwa warunki: 1 - funkcja musi byc w RAMie jak sam napisales 2 - musza byc wylaczone przerwania na czas zapisu ja korzystam z tego i dziala :) #define __RAMFUNC __attribute__ ((long_call, section (".fastrun"))) __ramfunc int AT91F_Flash_Write( unsigned int Flash_Address ,int...
Mój problem polega na tym, że ustawianie pinów działa "odwrotnie", tzn. zapis do rejestru PIO_SODR (set output data register) najwyraźniej ustawia zero, a PIO_CODR (clear output data register) - jedynkę. Problem ujawnił swą obecność w trakcie prymitywnego debuggowania w funkcji obsługi przerwania. Jednak by odgadnąć, co się dzieje, znacznie uprościłam...
(at)don_diego Nie ma chyba gotowca w przykładach pod keila(RVDS) dla procka AT91SAM7S (at)awrak Będzie z tym trochę roboty ale zrób tak: 1.Zintegruj keila z kompilatorem gcc(na stronie www.keil.com są poradniki jak) 2.Weź przykład dla tego kompilatora np eclipse i stwórz sobie projekt w keilu. Będziesz musiał się trochę pomęczyć żeby ścieżki prawidłowo...
Przykładowy kod w C znaleziony w sieci: #define ATKbdPort PORTD #define ATKbdPin PIND #define ATKbdDir DDRD // #define ATKbdDta 0 // #define ATKbdGetDta (ATKbdPin & (1 << ATKbdDta)) // unsigned char volatile dane = 0, nowy = 0, i = 0; // Odczyt danych z klawiatury realizowany jest w ramach // obsługi przerwania zewnętrznego...
Ktoś z kolegów czytał dokument atmela na temat generacji tonów DTMF (AVR314)...? Wygenerować sinus nie jest tak trudno... Acha jeszcze warto zaglądnąć do działu DIY do tematu http://www.elektroda.pl/rtvforum/topic90... Ja robiłem to bazując właśnie na tych dwóch lekturach... Napisałem sobie prościutki programik na PC'ta który tworzy mi tablicę...
Jeszcze jedno Ten fragment kodu, nie jest w ogóle potrzebny (kasowanie flag RX). Jeżeli korzystasz z 'Read RX Buffer Insrtuction' to po jej wykonaniu automatycznie zerowana jest odpowiednia flaga CANINTF.RXnIF (datasheet MCP2515 str. 63 punkt 12.4). Jeszcze zauważyłem że tu masz chyba błąd: [syntax=c]uint8_t status = mcp2515_read_rx_status(); if (!(status...
Jest tam ta druga diodka, ktora sobie miga i ona działa. void vStartLEDFlashTasks() { xTaskCreate( vLEDBlink, ( signed char * ) "LEDtaskC", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL ); } Ogólnie to rozpracowuje to na troche zmienionym demie freertosa (pousuwalem wszystkie wątki). To demo było...
Może zacznę od opisu konfiguracji. Mam czujnik TSOP1736 podłączony do zasilania 5V, zaś jego wyjście do wejścia P0.16 mikrokontrolera LPC2148. Pozostałe połączenia (zasilanie, JTAG itp.) są OK, gdyż jest to zestaw ewaluacyjny Propoxu - EVBlpc213x\4x. Napisałem sobie bibliotekę do odbioru kodu RC5. Posiłkowałem się tą #include "lpc214x.h" #include...
Ja osobiście dopiero zaczynam zabawę z ARM. Na pierwszy ogień poszły AT91SAM7S64 i LPC2144. Co do tego pierwszego, bardzo zraził mnie wyjątkowo toporny bootloader. Nie miałem i nie chciałem budować dla niego specjalnie programatora JTAG, więc układ poszedł w kąt. Obecnie znęcam się nad LPC2144 i muszę przyznać, że dość wdzięcznie układ się sprawuje....
http://obrazki.elektroda.pl/1661316800_1... Witam ponownie Tym razem chciałbym zaprezentować projekt lżejszego kalibru - zegarek wskazówkowy i termometr zbudowany na AT91SAM7S64. Wykonałem ten projekt, bo chciałem trochę pouczyć się programowej obsługi wyświetlacza graficznego z Nokii 3310, programowej obsługi enkodera inkrementalnego...
Jak wielu z was, jestem szczęśliwym posiadaczem LCD od Nokii 6100 :D, z tym że nigdy go jeszcze nie używałem. Tak właściwie nigdy nie używałem żadnego wyświetlacza graficznego, więc obsługę tego traktuję jako wprawkę (chociaż wiem, że większe wyświetlacze mają raczej interfejs równoległy i steruje się nimi np. przy pomocy interfejsu EBI w MCU, a ten...
Witam Własnie stowrzyłem sobie temat na pracę inżynierską i zastanawiam się jaki mikrokontroler wybrać do relizacji. Otóż do stworzenia mam rejestrator lotu szybowca zgodny z wytycznymi IGC-GNSS. tutaj sa info podstawowe: http://www.fai.org/gliding/gnss/ załaczam rysunek bardzo poglądowy zrobiony na szybko w wordzie;) No i moje pytanie jakie mikro by...
http://obrazki.elektroda.net/65_12471396... Witam Szanownych Forumowiczów Niedawno zakończyłem prace nad urządzeniem, które nazwałem GPS Tracker. Urządzenie to służy do raportowania pozycji samochodów ciężarowych lub osobowych, z wykorzystaniem pozycji z GPS, przesyłanej przez sieć GSM. Wykonanie zostało zlecone przez indywidualnego klienta....
Też planuję zabrać się za ARM. Mam kilka lamerskich pytanek do bardziej doświadczonych: 1. Do programowania oczywiście najlepiej JTAG Wiggler? Skleciłem już takowy, tylko jeszcze nie przegwizdałem. 2. Klocek AT91SAM7S - na początek, ale czy nada po '51, AT89 i PIC? Może za duży, czy za mały? 3. Płytka rozwojowa ocywiście będzie DIY - kogo można pomęczyć...
Ja kiedyś zrobiłem bootloader do AT91SAM7X256 ładujący program z karty SD. Program też chodził na FreeRTOS :) Zrobiłem dokładnie tak samo jak Ty z przerwaniami :) Wszystko działa prawidłowo po dziś dzień. Rozumiem, że firmware zawsze zaczyna się pod konkretnym adresem. Skoro tak to wystarczy, że skleisz ze sobą dwie binarki i już :) Nie wiem czy programujesz...
Witam, zamierzam zbudować analizator stanów logicznych opary o mikrokontroler: AT91SAM7X256 Posiadam płytkę rozwojową firmy Olimex: SAM7-EX256: http://www.shop.kristech.eu/product_info... Sygnały będę próbkował co 5us (czyli 200kHz) Mam już gotową obsługę USART (rs232), obsługę karty SD (bez systemu plików), z przerwaniami od timera...
Witam, mam problem z uruchomieniem przerwań. Procesor działa poprawnie, nie zawiesza się ale nie chcą ruszyć przerwania. Proszę o wskazówki. Programy piszę w Keilu [syntax=c] #include<AT91SAM7S256.h> #include"sterowniki\rezonator.h" #include"sterowniki\USART.h" void main_init(void); void funkcja(void)__irq; unsigned int AT91F_AIC_ConfigureIt (...
Witam was, w niedalekiej przyszłości chciałbym przesiąść się z AVR na ARM. Chodzi mi głównie o "modernizację domowego warsztatu" i "bazy prototypowej". Zrobiłem mały wywiad środowiskowy na lipiec/sierpień 2010- i ten post może pomóc jeszcze niezdecydowanym użytkownikom ARM. Więc oprócz AVR liznąłem uC PIC(8bitowe), pracowałem na 8080 i 8051. Niedawno...
Miałem podobny problem...Zarówno atmelowski jak i windowsowy sterownik przy cdc sie wykrzaczał. Winny okazał się sterownik WinXP. Po zainstalowaniu "atm6124_virtualserial.inf" z paczki at91sam7s64_basicusb problem się rozwiązł.
Dzięki za podsunięcie nowej wersji OpenOCD. po małych zmianach w plikach konfiguracyjnych połączyłem sie programatorem. C:\OpenOCD\0.1.0\bin>openocd.exe -d -f interface/jtagkey.cfg -f target/sam7x256.cfg -c init -c reset 0 Open On-Chip Debugger 0.1.0 (2009-01-21-21:15) Release BUGS? Read http://svn.berlios.de/svnroot/repos/...
Czy istnieje możliwość konfiguracji timera w następujący sposób? Ustalana jest stała częstotliwość zegara licznika. Na wejście (TIOA/TIOB) podawany jest mierzony zewnętrzny sygnał. Każde wybrane zbocze tego sygnału powoduje przepisanie chwilowej wartości licznika do rejestru 'capture'. Wyzwalane jest przerwanie, w którym następuje odczyt tej wartości.
Używasz funkcji LCD_DrawCharC równocześnie w przerwaniu i programie głównym? Czy jest ona przystosowana do pracy wielowątkowej (reentrant?). Albert
Sprawdzilem wszystkie pliki i w zadnym niema wykozystanej zmiennej sstatus, zmiienialem jej nazwe aby czegos nieprzeoczyc niestety bez powodzenia. Podaje caly plik main .[syntax=cpp] *---------------------------------------... #include "AT91SAM7X256.h" #include "AT91SAM7X-EK.h" #include "lib_AT91SAM7X256.h"...
A czy Twój procek nie posiada odpowiedniego właśnie do tego celu trybu sleep ??, w którym wszystkie zegary sąnieaktywne a procek można obudzić np. przerwaniem zewnętrzym. Posiada, ale początkowo chciałem wyłączać cały stabilizator. Jednak po przeanalizowaniu wydaje mi się, że Twój pomysł jest bardzo OK. Dzięki:)
//*- The System stack size is not defined and is limited by the free internal //*- SRAM." Tyle że poza "system stack" jest jeszcze 5 innych stosów, np. dla przerwań. Może używany jest ten sam stos, może nie. Nie wiemy tego bo na razie dyskutujemy na poziomie abstrakcyjnym. 4\/3!!
Witam, Działam na AT91SAM7XC256. W jaki sposób jestem w stanie najszybciej zdiagnozować po stronie mikrokontrolera, że kabel ethernetowy został uszkodzony lub wtyczka została wyjęta? Czy skonfigurowanie przerwania TXERR: Transmit Error jest rozwiązaniem prawidłowym w tym przypadku? Dzięki za odpowiedź
PIT- Głownie do przełączania wątków czas miedzy 0,03 us a 0,3 sek. Taktowanie ma z kwarcu. Jest małe ale, pamiętaj że ten czas zależy jeszcze od opcji kompilacji, nie pamiętam teraz dokładnie ale chyba chodzi o optymalizacje kodu. RTT - on jest taktowany z generatora RC. Podstawę może mieć od 100 us. Na mim można zrobić dokładny zegar. PWM może mieć...
Spotkałem się z różnymi rozwiązaniami na inne mikrokontrolery ale większość z nich opierała się na ciągłym przepytywaniu linii portu. Większość rozwiązań, z którymi spotkałem się z kolei ja, to właśnie działały na przerwaniach. Dla mikrokontrolera AT91SAM3 napisałem taką oto obsługę: [syntax=c]if(status & (1<<16))//jeżeli zarejestrowano zbocze...
Przyłaczam się do zapytania epikur-a Chciałbym się dowiedzieć (moze ktoś ma jakies przykłady) jak skonfigurowac tryb DMA w ARMie najlepiej dla USARTu. Niestety przykłady znalezione w googlach nie są dla mnie wystarczające. Najbardziej interesuje mnie odbieranie danych z zewnątrz np z PC w tym trybie. Ponieważ jako najbardziej znaczący czasowo (wszelkie...
To wywalanie polega na tym ze program skacze w obszar pamieci miedzy 0x00000000 a 0x00100000. Najczesciej licznik programu wskazuje na 0x00000010 i stoi na jakiejs istrukcji. Skoro wiesz że program tam skacze to używasz debugera lub jakiegoś symulatora? Proponuję prześledzić instrukcje po instrukcji. Problemy z poprawnie działającym kodem na ARM to...
Po inicjalizacji portu DBGU próbuję wysłać znak do terminala. Sterownik portu napisany jest w trybie odpytywania (w najprostszy sposób). void DBGUPOL_Open( ULONG baudrate ) { PMC_OpenPeriphClock( AT91C_ID_SYS ); AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF; PDC_DisableAndResetWrite( AT91C_BASE_PDC_DBGU ); PDC_DisableAndResetRead(...
Witam, muszę zrobić mini-rejestrator dźwięków na płytce Olimex SAM7-EX256 (mikrokontroler AT91SAM7X256). W tym celu próbowałem skonfigurować układ ADC aby próbkował dane z częstotliwością 44.1KHz z 10-bitową rozdzielczością. Przetwornik ma być wzbudzany timerem T0 i po wykonaniu pomiaru ma wywołać przerwanie. Plik adc.c z funkcją inicjująca ADC i Timer:...
Witam Wątpie, że mi ktoś pomoże ale cóż zależy spróbować. Nie mogę włączyć obslugi przerwań w moim procesorze. wiem że kod jest napisany prawidłowo gdyż testowalem na innym kompilatorze. Chodzi o plik startup, którego w sumie nie rozumiem. A może ktoś zna jakieś źródła wyjaśniające jak pisać takie pliki? Ucze się z książką "Mikrokontrolery at91sam7"...
przerwania at91sam7 at91sam7 timer mikrokontrolery at91sam7
piszczenie dysku twardego otwieranie centralnego zamka awaryjne ładowarka akumulator latarka
dobre sklepy elektroniczne online dobre sklepy elektroniczne
Jak przywrócić ustawienia fabryczne w falowniku EASun SMG III? AEG Lavamat nie świeci - przyczyny i rozwiązania