Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Napisałem coś takiego (oczywiście to część z większego projektu) '$sim $regfile = "m8def.dat" 'informuje kompilator o...
Sprawdzilem wszsytko krok po kroku i problemem byly funkcje ktore zwracaly swoja wartosc przez RETURN. Po prostu przerwanie powodowalo ze zmeinna ktora zwaracala ich wartosc przyjmowala zawsze 0!! Zrobilem to samo na wskaznikach i dziala wszystko dobrze!
Witam. Mam taki projekt w SDK: Dodano po 1 Wystarczyło zwiększyć pamięć. Temat zamykam.
Witam Tak wygląda mój kod; [syntax=vb] '############# Petla_glowna ############# Do Gosub Sprawdzenie_klawiszy If Flaga_ok = 1 Then Flaga_ok = 0 Gosub Menu End If Loop End[/syntax] [syntax=vb] '############# Przerwanie ############# Przerwanie: Incr Licznik_p If Licznik_p = 1 Then Gosub Odczyt_temp_1 End If If Licznik_p = 2 Then Gosub Odczyt_temp_2...
Fakt, ze jest milion różnych sposobów na zrobienie tego. Ok spróbuję tym sposobem co mi podsunąłeś. W sumie nawet lepiej tak. Dzięki. Dodano po 5 Ok, coś tam skleciłem, jest to niepełny program, bo nie ma w nim np. ustawień dla Mute i trybu, oraz nie pokazuje na LCD wartości, ale to później. Póki co mam dziwny problem z wyświetlaniem, ale o tym za chwile....
Zastanawiam się, jak się odbywa zapis zmiennej 16 bitowej w procesorze 8 bitowym. Najpewniej najpierw przepisywana jest pierwsza połowa, następnie druga. A czy możliwe jest, żeby jeśli przerwanie wystąpi równo w tym momencie i będzie chciało odczytać wartość tej zmiennej to odczyta pierwszą połowę nową, a drugą starą? czyli jeśli a=0000 zmieniam na...
Wcześniej sprawdzałem czy wchodzi do przerwania z pustą główną pętlą w pragramie - włączałem buzzerka w przerwaniu tylko. Teraz, powinno być tak, że po wejściu do przerwania (w moim przypadku przy wciśniętym klawiszu) buzzerek powinien dzialac, ale i po wyjściu nadal brzęczeć - a tu nic. Po wyjściu z procedury przerwania milknie, czyli gubi gdzieś ustawienie...
Witajcie. Robię malutkie projekty korzystając z Bascoma. Do tej pory wyłącznie na 2313 i jakoś sobie radziłem. W nowym projekcie postanowiłem zastosować Atmega8535 i od razu natrafiłem na problem. Mianowicie po włączeniu przerwań od Timer0 nic nie działa jak powinno. Pomimo tego że procedura obsługi wyświetlacza jest wołana z obsługi przerwania na wyświetlaczu...
witam mam zrobioną obsługę wyświetlacza led na przerwaniach i problem z odbieraniem znaków przez uart mianowicie uart "gubi" znaki podczas odbioru, jeżeli wyłączę przerwania przerwania problem znika, niestety wyświetlacz muszę mieć zrobiony na przerwaniach i nie wiem jak mam się z tym problemem uporać. poniżej zamieszczam wybrane fragmenty kodu. $regfile...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Za bardzo sie na tym nie znam tylko sobie przerabiam inne projekty na moje potrzeby. Chodzi mi tylko o to czy dobrze rozumiem te taktowanie procesora. no ale jak co to tu masz caly kod: $regfile = "m8def.dat" $crystal = 12000000 Config Lcd = 16 * 2 Config...
Witam, od jakiegoś czasu próbuję stworzyć sobie zegarek z termometrem + napięcie akumulatora do auta. Wszystkie programy osobno działają bez zarzutu. Problem zaczął się z chęcią wprowadzenia przełączalnych ekranów i wprowadzeniu przerwań. Doczytałem że przerwania skutecznie psują komunikację z DS'ami przez co temperatura się nie odczytuje. Ogólnie to...
Witam Poniżej załączam kod, który ma sterować wyświetlaniem informacji na LCD oraz zmianą koloru podświetlania. Niestety po upłynięciu czasu ( różnie, czasem kilkanaście minut, czas kilka godzin ) procesor zawiesza się i na LCD wszystko się zatrzymuje. Wstawiam tylko część kodu którą obsługuję RC5, gdyż jego usunięcie ( ale pozbawienie obsługi RC5 )...
witam mógłyś się wyrazić nieco jaśniej :D "w każdym z nich przerwanie od timer0"... licznik po przepełnieniu wygeneruje przerwanie bezwzględu na to gdzie w danej chwili jest główny program (jeśli jest odpowiednio skonfigurowany) opisz dokładnie co chcesz zrobić :) pozdrawiam Dodano po 1 hmmm chyba załapałem o co chodzi :D pomyślmy... Dodano po 24 Bascom...
Napisałem taki program , który steruje pracą licznika za pomocą dwóch przycisków podłączonych do portów z wykorzystaniem przerwania INT0 , 1 . Naciśnięcie przycisku S1 (P3.2) powoduje rozpoczęcie zliczania impulsów , a S2 (P3.3) zatrzymanie i wyświetlenie wyniku.Wszystko działa bezproblemowo , ale jest jedno ale..... . Naciśnięcie przycisku S1 powoduje...
Dzieki Jaca to mi dziala,ale zastanawiam sie jak za pomoca jednego przerwania wykonac dwie czynnosci,tzn po wlaczeniu zasilania ukazuje sie menu wzmacniacza,buszujemy sobie po nim za pomoca 3 przyciskow: select,up i down.Teraz jak tylko przycisniemy 4 przycisk(mute) wywolujemy przerwanie i nastepuje wyslanie na magistrale i2c "komendy" o wyciszenie...
Chech elektryk błąd powodowała procedura "delayus" zawarta w kompilatorze miałem ją w przerwaniu low porta.1 delayus xxx high porta.1 nie wiedzieć dlaczego zamazywała dobry adres a wpisywała adres powrotny PFG czyli początku przerwania i tak w kółko niestety w instrukcji picbasica nic nie pisze że wstawienie tej procedury w przerwanie blokuje jego działanie...
Witam. Prosze o pomoc poniewaz napisalem prosty program z wykorzystaniem przerwania z INT1 ale niestety procesor nie reaguje na zmiane stanu na wyjsciu PD3. Mam atmege16 na plytce testowej. W programie chodzi o to zeby po odebraniu przerwania na wyswietlaczu pojawila sie wartosc licznika Timer1. Timer1 ma pokazywac czas pomiedzy dwoma impulsami. To...
Nie wgrywałem, ale owszem, program taki jak Ty proponujesz będzie działał, ale jeśli pętla w funkcji main będzie miała więcej operacji do wykonania to takie miganie może wystąpić. Swoją drogą, piszę nieco przesadzoną opinię, bo przecież nie tak trudno zaimplementować mój algorytm, a wtedy wogóle zapominamy o miganiu i o tym że wogóle LED trzeba odświeżać...
Witam, mam problem z przerwaniem modulu TWI w symulatorze AVR STUDIO. Program pisalem w C , obsluga przerwan globalna i TWIE ustawione.... Gdy ustawie recznie flage TWINT program nie przechodzi do wektora przerwania, tak jakby nic sie nie stalo. Nie wiem czemu tak sie dzieje, napisalem to samo w assemblerze i reczne ustawienie tej flagi wywoluje przejscie...
Na szybko wykonana kompilacja i wynikowy kod obsługi przerwania gdzie tylko jest ustawiany licznik. Obsługa przerwania zajmuje 24 takty+ 4 na wywołanie czyli razem 28 taktów. Więc się nie dziw. Opisz co potrzebujesz uzyskać, bo to co wymyśliłeś raczej się nie sprawdzi. Pozdrawiam JarekC [syntax=asm]TIMER0_OVF_Vect: PUSH R1 ; 2 Push register on stack...
Mam kłopot z obsługą przerwania INT0 w ATmega32. Chciałem, żeby były generowane zboczem opadającym. Na nogę ITN0 wchodzi sygnał prostokątny 1Hz z wypełnieniem 50%. Jest rezystor podciągający do +5V. Kod jak niżej. Powinno generować sygnały na beeperzerz podłaczonym do portu D ale nic się nie dzieje. Bascom odmawia skompilowania linijki zawierającej...
pseudo kod [syntax=c] zeruj key wiersze jako wejscia z podciągnieciem kolumny jako wyjscia = 0 nop odczyt wierszy do zmiennej kolumny jako wejscia z podciagnieciem wierszy jako wyjscia = 0 nop odczyt kolumn do zmiennej key= troszke logiczny operacji (logika ujemna) return key [/syntax] przerwanie od timera [syntax=c] static prev; temp = oczyt_key();...
Witam, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
pliki vectors.s i startup.s mam od Ciebie /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/ * file: vectors.S * last change: 2010-04-08 * * chip: LPC2103 * compiler: arm-none-eabi-gcc (Sourcery G++ Lite 2009q3-68) 4.4.1 * * description:...
Witam, stworzyłem na płytce stykowej układ, gdzie podłączyłem przyciski, LCD hd47780, rtc ds1307 i buzzer. Korzystam z bibliotek do wyświetlacza od "radzia", TWI od p. Mirka oraz ze znalezionej na tym forum biblioteki do RTC. Napisałem szybki program, który wyświetla godzinę w formie hh:mm:ss na ostatnich polach pierwszej linii. Dodatkowo dodałem przerwanie,...
Witam. Od dłuższego czasu "walczę" z przerwaniem, które nie chce się za nic wykonać. Zrobiłem już wszystko co potrafiłem, ale niestety brak reakcji. Chodzi tu o układ z obsługą dysku twardego, który połączony jest z komputerem za pomocą MAX232 (RS-232). Procesor to Atmega32 z wewnętrznym oscylatorem 8MHz. Pętla "echo" działa. Dane wracają. Może ktoś...
Witam, chciałem podłączyć pod ATmegę 4 enkodery z myszek PC. Znalazłem taki kod w sieci: * * ENCODER - Checks rotary encoder and returns the following: * * 0: no movement * -1: ccw rotation * 1: cw rotation * *---------------------------------------... signed char encoder(void) { static unsigned...
Pomijając to, że ta cała dyskusja ma się nijak do tematu w którym się znajduje, chyba BlueDraco ma rację. Cytat z " Cortex-M3 Technical Reference Manual " dostepnego The System bus interface contains logic that controls bit-band accesses as follows: - It remaps bit-band alias addresses to the bit-band region. - For reads, it extracts the requested bit...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
Nie taka konstrukcja jest jest niepoprawna. Obsługa przerwania musi być zakończona instrukcją Return. Zamiast Goto ustaw flagę i sprawdzaj jej stan w pętli głównej. Jeśli warunek się spełni to wtedy skocz do podprogramu.
[syntax=text]Witam książkowy program trochę przerobiony do swoich potrzeb i wyskakują takie błędy jak w temacie. Proszę o jakieś wskazówki. Bo właśnie się poddałem (brakuje mi pomysłu brak wiedz z c), szukałem i w google ale nic nie znalazłem. Zaczyna przygodę z c i się uczę dobra kod programu[/syntax] [code][syntax=c] plik LED4_Plex.c #include <avr/io.h>...
Witam, piszę program do układu wykorzystującego żyroskopowy czujnik przyspieszenia (Adis 16355). Mam problem z niestartowaniem programu- mikrokontroler rozpoczyna pracę, jednak po wykonaniu sei(); resetuje się i rozpoczyna pracę od początku. Dzieje się tak jednak tylko wtedy, gdy przed sei(); wykonuję zerowanie(); . Jeśli zablokuję zerowanie() . wszystko...
Mam program, w którym uruchamiam przerwanie z pinu ICP. I wszystko działa jak należy, program jest przetestowany. Postanowiłem połączyć go z programem do obsługi karty pamięci pobranym z //**************************************... // **** MAIN routine FOR Interfacing microSD/SDHC CARD **** //**************************************...
Wymyśliłem sobie, że będę obsługiwał klawiaturę matrycową 4x4 na płytce ZL3AVR w przerwaniu generowanym podczas naciśnięcia któregokolwiek klawisza (wyprowadzenie JP13 połączone mam z INT0), siedzę nad tym bardzo długo i nie mogę doszukać się swego myślowego błędu. Pierwszy wiersz (kolumna) działa poprawnie natomiast wszystkie pozostałe działają tak,...
Witam ponownie, Dziękuję za odpowiedzi, bardzo mi pomogły - zmniejszyłem rozmiar zmiennych, przez co zmniejszyłem czas przerwania (przynajmniej taką mam nadzieję), rozbudowałem trochę program. _delay_ms(40) stosowałem żeby przycisk po zmianie stanu nie "iskrzył" Niestety problem znów się pojawił: Program nie wchodzi do pętli while, gdzie warunek jest...
No właśnie o priorytetach wiem, 15 top najniższy dlatego wszystkie przerwania mają Dodano po 2 Niestety zwiększenie do 4kB stosów (Stack Configuration i Heap Configuration) w niczym nie pomogło, program wchodzi do przerwania i zawiesza się przy sprawdzaniu flagi. Jak nie sprawdzam flagi to wszystko działa. Wychodzi na to, że musiałbym na te 4 klawisze...
To co piszą Koledzy Twoim kodzie to sensowne konkrety. Podzielam ich zdanie na temat potrzeby zmiany koncepcji obsługi przerwania. Do Twojego przykładu idealnie pasują główne założenia "programowania przerwań" a szczególnie ta, że powinno być możliwie krótkie czasowo. Wg mnie, po obejrzeniu kodu, tkwisz mocno głęboko w programowaniu całkowicie liniowym...
Witam Chcę skonstruować urządzenie, które oprócz zegarka mierzyłoby jednocześnie temperaturę i obydwie wielkości wyświetlałoby na wyświetlaczu LCD. Gdy programy napisałem osobno, obydwa działały, lecz gdy połączyłem je w całość, to czas odczytuję bez problemu, natomiast nie wyświetla mi się temperatura. Podejrzewam, że problem jest w przerwaniach. Poniżej...
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Walczę drugi dzień z obsługą ENC28J60 w przerwaniu i poległem. Niech ktoś rzuci okiem i powie co jest nie tak. Objawy mam takie: - pingi latają bez problemu - UDP działa bez problemu - TCP chodzi kulawo. Pierwsze połączenie przez przeglądarkę jest ok,wyświetla się strona, natomiast po wyświetleniu strony wszystko zdycha. Wygląda to tak jak by ENC28J60...
Witam, Jestem początkujący jeśli chodzi o programowanie ARM wiec proszę o wyrozumiałość. Mam problem z procesorem LPC 1768, konkretnie jest to płytka Mini DK-2. Od pewnego czasu walczę z problemami w przerwaniach i nie mogę sobie poradzić. Przewertowałem setki tematów na forach polskich i zagranicznych, być może źle szukałem, wiec każda wskazówka i...
Witam Znów mam pytanie dotyczące kodu który pozwala na współbieżną obsługe lcd z main i przerwania przedstawiam tylko plik .c [syntax=c] #include "LCD_trans.h" #include <avr/interrupt.h> #include <string.h> #include <util/atomic.h> #include "defines.h" #include "hd44780.h" #include "Alloc_safe.h" #include "PinMacros.h" typedef struct...
Edit: DMA nie działało bowłączałem DMA2 a nie DMA1. Napiszę jak dalej pójdzie :] Cześć, mam pewne problemy z I2C, bazowałem na zmodyfikowanym kodzie od ST (jak mnie pamięć nie myli) najpierw używałem samych przerwań na najwyższym priorytecie jak ST przykazało, niestety od czasu do czasu zdarzało się że RTOS wyłączał wszystkie przerwania i przy odbiorze...
...A może ktoś z forum już bawił się na 168 tymi przerwaniami w praktyce i podzieli się wiadomościami czy działają?. Wprawdzie help milczy w temacie PCIEx , to wystarczy popatrzeć na sekcję w pliku *.dat interesującego na procka i już wiadomo co i jak ;) m88def.dat [INTLIST] count=25 INTname1=INT0,$002,EIMSK.INT0,EIFR.INTF0 INTname2=INT1,$004,EIMSK.INT1,EIFR.INTF1...
Napisałem sobie takie oto funkcje do obsługi DS18S20: #include <DS89C4xx.H>// biblioteka uC DS89C430 typedef unsigned char BYTE;// definicja typow danych typedef unsigned int WORD; sfr led_10 = 0x80;// port P0 wyswietla cyfre dziesiatek sfr led_01 = 0xA0;// port P2 wyswietla cyfre jednosci sbit DQ = P0^7; sbit run = P1^0; sbit error_sensor = P1^1;...
Witam, W chwili obecnej pracuje nad termometrem, sterowanym na pilota. Pilot wysyła dane w kodzie RC5. Wysłane dane trafiają na odbiornik podczerwieni TSOP31236 (36kHz). W momencie gdy dane nie docierają na wyjściu odbiornika jest stan wysoki, gdy odbierze jakiś sygnał na wyjściu jest poziom niski. Wyjście odbiornika podczerwieni jest podpięte do wyjścia...
w mainie w funkcji while(1), sprawdzam tylko warunek if(bit_is_clear(PIND,PD2)) rc5decode(); <-- TAK DZIAŁA ! jak wywołać tą funkcję w przerwaniu SIGNAL(SIG_INTERRUPT0) {}, ? probowałem tak: w mainie: GICR |=1<<INT0; w przerwaniu od INTO: SIGNAL(SIG_INTERRUPT0) { GICR &= ~BV(INT0); rc5decode(); //wywołanie porządanej...
Witam, Zacząłem niedawno zabawę z STM32 i mam problem z przerwaniami oraz timerami. Chciałem uruchomić przerwanie zewnętrzne, a dalej przerwanie od timera co np 1sek. Jednak nie działa ani jedno ani drugie, czy ktoś mógłby nakierować mnie na dobrą drogę i powiedzieć co robię źle? Przeglądałem przykładowe aplikacje jednak dalej nie potrafię tego uruchomić....
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"...
Witam Próbuję odebrać na komputerze (w programie bray terminal) dane, tzn. konkretnie temperaturę z termometru LM35. Niestety mam problem z odbiorem danych w przerwaniu od UART-u. Poniżej przedstawiam kod programu: [syntax=c] /* Wysyłanie do komputera wartości temperatury interfejsem USART mikrokontrolera */ /* LM35 -> PA0 */ /* ATMega16, f=16MHz...
Witam! Wykorzystując interfejs I2C chce komunikować się z akcelerometrem BMA180. Interfejs I2C zrealizowany sprzętowo za pomocą kontrolera I2C0 z wykorzystaniem przerwania.Samą komunikację już zrealizowałem, ale mam problem z jej rozwinięciem. Poniżej przedstawiam kod który działa "poprawnie". Główny problem polega na tym, że chciałbym napisać funkcję...
Witam, próbuję zaprogramować mikrokontroler,aby obsługiwał USART do komunikacji przez RS232. Chcę wykorzystać do tego bufor cykliczny, który zaimplementowałem w następujący sposób: [syntax=c] #include <inttypes.h> #define BUFFER_SIZE 32 #define BUFFER_MASK ( BUFFER_SIZE - 1) typedef struct { uint8_t buffer[BUFFER_SIZE]; uint8_t head; uint8_t tail;...
Mam problem z przerwaniem od timera TMR16B1, tak jakby nigdy nie występowało przerwanie od niego albo mikrokontroler do niego nie wchodził. Napisałem analogiczny kod dla TMR32B1 i powiązana z nim dioda w kodzie LED2_PIN mruga, natomiast dioda LED1_PIN która w obsłudze przerwania TIMER32_1_IRQHandler powinna zmieniać swój stan na przeciwny, lecz ona...
Witam! Zrobiłem prosty projekt wysokościomierza ciśnieniowego. Wszystko działa w jak najlepszym porządku. Teraz muszę go przekonwertować aby działał na mniejszej płytce zasilanej z baterii. Z tego powodu postanowiłem użyć funkcji sleep i przerwań. Program ma działać tak: - w funkcji setup następuje inicjalizacja karty i czujnika, jeśli wszystko działa,...
Czesc ! Mam taki maly problem . Napisalem program w ktorym urzywam przerwanie . Wydaje mi sie cos zle robie .W przerwaniu mianowicie mam do wyboru dwa wyjscia , i tu wlasnie jest problem . Gdy urzywam drugiego wyjscia Call sub , przerwanie tak jakby juz nie reagoowalo . $large Config Lcd = 16 * 1a Cursor Off Declare Sub Mainprogram Declare Sub Foursteps_left...
Nie jest możliwe, ale możesz wprowadzić zmienną pomocniczą i w zależności od niej w podprogramie obsługi przerwania zrobić warunek i skakać do innych podprogramów, np. ... dim temp as bit on int0 qwerty temp=0 ... 'tam gdzie chcesz zmienic temp=1 ... qwerty: if temp=1 then gosub q else gosub w end if return q: ... return w: ... return
hmm, przerwania co 20 instrukcji procesora ;-) Wydaje mi się, że nie uwzględniasz czasu pomiędzy wywołaniem przerwania a ustawieniem timera. Dla przykładu ; INTERRUPT ORG0x004 ; interrupt vector location btfscINTCON,T0IF; TMR0 overflow gotoserv_t0 retfie ; return from interrupt serv_t0 bsfPORTC,0 movlw.256 - (.20 - X) movwfTMR0 bcfINTCON,T0IF;...
Od razu mówię że kasowanie bitu nr 6 w rejestrze GICR nic nie daje, bo jedynie ukrywa przerwanie przed procesorem do czasu włączenia przerwania. Bit ten jedynie ukrywa przed procesorem ustawienie flagi. Flaga jednak i tak zostanie ustawiona przy zmianie stanu pinu PortD.2, nawet jeżeli wyłączy się przerwanie. I jeżeli włączy się przerwanie to procesor...
Mam taka procedure przerwania: Przerwanie: If Z_lampa = 0 Then 'jesli jest zgoda na zalaczenie lampy Incr Cz_lampa If Cz_lampa >= 12 Then 'jesli uplynela 1 sekunda troche mniej Cz_lampa = 0 'wyzeruj czas lampy If Prz_lampa = 0 Then Set Prz_lampa Else Reset Prz_lampa End If End If End If If Z_tr = 0 Then 'jest zgoda na zalaczenie transformatora mocy...
Prawie że na kolanie napisane: #include <avr/io.h> #include <avr/interrupt.h> #define USART_BAUDRATE 57600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) // maksymalna liczba znaków polecenia #define UART_MAXBUFF 16 // bufor znaków polecenia (UART_MAXBUFF znaków + jeden pod znak zero)...
raz tez nie pomaga, o to przykład: Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read parport port = 0x378 srst_only srst_pulls_trst srst_gates_jtag srst_open_drain Warn : use 'at91sam7s.cpu' as target identifier, not '0' Info : clock speed 500 kHz Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f...
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
Niestety nie podziałało. Sformuję pytanie inaczej: Jak wyjść z pętli do loop, w której znajduje się encoder(). ? dodam że pętla while wend w tym przypadku nie działa. Dodano po 26 Oto fragment mojego kodu: Program znajduje się w funkcji "ustawzwoje" naciskając włącznik (pinc.3) program przechodzi do "ustawobroty" i w tym momencie zatrzymuje się timer2,...
Witam! Nie mogę dojść do tego co się dzieje. W zamierzeniu program powinien czekać na ustalone znaki z USARTa i odpowiedzieć kilkunastoma znakami tekstu. Objaw jest taki, że po otrzymaniu 1 znaku odpowiada trzema prawidłowymi znakami a potem siedzi w przerwaniu z którego nie może się wykaraskać (tzn. nie robi nic innego). Zdarzyło mi się też zaliczyć...
Dziękuję za szybką odpowiedź. Właśnie podczas kompilacji żadnych błędów na temat delay. Tak oczywiście wiem jak działa switch. Założenie jest takie żeby żeby przechwycić wciśnięcie przycisku bistabilnego i licz++; if(licz == 4){licz=0;} i właśnie zatrzymałem się na metodzie przechwycenia tego przycisku żeby w każdej chwili działania programu dało się...
Skąd wiesz, że przerwanie się nie wykonuje? Wnioskuję po tym, że wrzucając do przerwania instrukcję RTC_Read_Time() wyświetla się godzina 00:00, a jeżeli wrzucę ustawianie flagi to nic się nie wyświetla. Dalej - włącz podciąganie na linii przerwania. Znalazłem jedno miejsce w kodzie gdzie ten rezystor mógł być przypadkowo odłączany i poprawiłem, ale...
A tu jest przerwanie [syntax=c] uint16_t licznik = 0x1000; ISR (INT0_vect) //obsługa przerwania INT0 { // Linia 1 - obrót w prawo if ((((PIND & 4)==4) & ((EICRA & 1) == 1 )) & ((PIND & 2)==0)) { EICRA &= ~(1 << ISC00); ++licznik; return;} // Linia 2 - obrót w prawo if ((((PIND & 4)==0) & ((EICRA & 1) == 0 ))...
Nic to nie zmieniło. HandleEncoder jedynie sprawdza czy zmienna została zmieniona, nic tam nie wpływa na samo działanie interrupt'a. ponadto w Encoder.h obie funkcje są używane wielokrotnie więc to kiedy ja ich użyje i tak raczej zostanie nadpisane. Oto zawartość Encoder.h: [syntax=c]/* Encoder Library, for measuring quadrature encoded signals * * Copyright...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Nie może mi skompilować po wstawieniu tych kodów. collect2.exe: error: ld returned 1 exit status exit status 1 Błąd kompilacji dla płytki NodeMCU 1.0 (ESP-12E Module).
Chyba zaczyna się ujawniać wyższość procesorów o możliwie długim słowie danych - nawet operacje 32 bitowe będą atomowe. Nie będą niestety o ile operacja RMW będzie realizowana przez kilka rozkazów, które mogą być przerwane. Będzie natomiast w systemie, który będzie modyfikować pamięć jednym rozkazem, który nie może być przerwany (a często mogą być...
Podczas obslugi przerwania wykonuje inkrementacje jakiegos tam rejestru GPR, ale czemu podczas obslugi kolejnych przerwan rejestr ten nie zwieksza sie ? Dodam ze jak wpisze konkretna wartosc to podczas przerwania wpisuje sie ona do rejestru, ale jak juz z kazdym przerwaniem chce zwiekszac zawartosc rejestru to nie da rady :( (programowalem kilka razy...
O ile pamiętam, właśnie wejście w procedurę obsługi przerwania spowoduje odłożenie na stos PC oraz PSW. Instrukcja reti zdejmie je ze stosu. Natomiast instrukcja ret zdejmuje tylko PC. O ACC musisz w każdym wypadku zatroszczyć się sam. Pozdrawiam :) Wejście w procedurę obsługi przerwania nie powoduje odłożena na stos rejestru PSW. Poniżej opis rozkazów...
Witam. Chciałbym zrobić odbiór danych z rs232 w przerwaniu. Programuje w C w WinAVR. Nie mogę znaleźć uchwytu przerwania od USART, jest jedynie od UART i nie chce działać. Nie wiem co robie źle. Dziękuję za wszelką pomoc. #include <avr/io.h> #include "delay.h" #include <avr/interrupt.h> #include <avr/signal.h> #define FOSC 16000000//...
dziechu - sliczne dziek za zwrocenie uwagi na makro banksel w momencie zapamietywania rejestru STATUS. Masz racje - banksel zmienia go wiec moj sposob byl bledny. Adresy 70h-7Fh sa idealne do tego typu operacji. Odnosnie mojego pytania o goto, stwierdzilem, ze w przerwaniu mozna go uzyc ALE jako skok LGOTO (poniewaz do przerwania mozna wejsc z kazdej...
Witam Mam dwa układy: nadajnik (ATMega88, MC145026), odbiornik (ATMega16L, MC145027). Narazie połączyłem MC145026 z MC145027 kablem. Piny przerwań INT0 i INT1 w ATMega16L mam już zajęte. Chcę wykorzystać przerwanie INT2. Napisałem programy i niestety coś jest nie tak. Odbiornik nie wykrywa przerwania. W nadajniku linie danych mam podłączone do pinów...
Witam! Mam następujący problem: Kiedy włączam obsługę przerwania z portu szeregowego, procesor strasznie zwalnia, nie wyrabiam się w czasie z programem... Program jest w Bascomie, kontroler to Atmega32. Wszystko zwalnia tragicznie, nawet jeśli w podprogramie przerwania napiszę od razu powrót: Serial_int: Return Sprawdziłem też: Serial_int: Toggle PORTB.3...
nie chcę siać zamętu, ale jeśli dobrze pamiętam to istnieje błąd w Bascomie, który źle kompiluje powrót w subie zawartym w przerwaniu (wstawia RETI zamiast RET) Obecnie takiego błędu kompilator nie wykazuje: ;---- test.bas ----------------------------------------... RJMP RESET RETI RETI RETI RETI RETI RETI...
Witam. Kłopot mam następujacy... walczylem dziś z modelarskim servo. Znalazłem program "gotowca" na AVRFreaks. kod poniżej: #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> /**************** Globale variable **************/ static enum {av1,paa1} servo1=paa1; static enum {av2,paa2} servo2=av2; unsigned...
Wykona się Return z "Obslugaprzerwania" które wcale nie będzie RETI tylko RET, a puźniej wykona się Return z "Przerwanie" które to jest RETI. Czyli wszystko jest ok.
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
Steruje dwoma silnikami, jednak chciałbym aby jeden z nich się zatrzymał i zaczął cofać przez kilka sekund w momencie załączenia krańcówki. Podpięcie pinów opisane w kodzie. Krańcówka pod INT0 i pod INT1 i z drugiej strony do masy. Wąs = krańcówka. $regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Output 'dioda Config Portd.7 = Output...
Witam, walczę z tym cały dzień i nie potrafię zrozumieć dlaczego program nie działa. Próbuje poprostu "uruchomić" przerwanie podczas przepełnienia timera0. Jak widać niżej jest bardzo prosty kod który powinien zapalać i gasić diodę. Preskaler ustawiony na 1024, ustawiona odpowiednia flaga w rejestrze TIMSK ...i nei działa. Jeśli w pętli while wrzuce...
Witam Od niedawna bawię się uC STM32 i krok po kroku próbuję nauczyć się ich obsługi. Słowem wstępu: Mam płytkę ZL31ARM, pewne doświadczenie z programowaniem w C/C++ i zupełny brak doświadczenia z mikrokontrolerami. Mam już za sobą mruganie diodami i proste pętle opóźniające; obecnie chcę nauczyć się obsługi przerwać przy wykorzystaniu EXTI i IO. Korzystam...
oprócz zmiennej temp reszta czyli aż int0_flag jest volatile większa cześć kodu jest z słynnej ostatnio książki na forum. jeszcze nie zdążyłem za dużo pozmieniać [syntax=cpp] /* * main.c * * Created on: 2012-02-14 * Author: Jacek */ #include <avr/io.h> #include <stdlib.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include...
tablica wektorow przerwań jest ustawiona na bootloader. chyba ze to źle robie... boottest2.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000158 00001800 00001800 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 0000002a 00800060 00001958 000001ec 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000002...
Witam, mam napisany spory program, w którym są min przerwanie FIQ i wszystko działa pięknie. Niestety pojawiła się konieczność obsługi odmierzania czasu co 0,125 ms. Początkowo miałem obsługę przerwania wrzucona do FIQ razem z przerwaniami zewnętrznymi. Ale żeby FIQ wykonywało się możliwie najszybciej chciałem przerwania z timera0 ustawić jako IRQ....
maximus - cls nie ma tu NIC do rzeczy bo nawet LCD nie używasz. Podejrzewam że program wywala ci się na deklaracji SUB, tym bardziej że używasz debounce jako GOTO a nie GOSUB, i potem próbujesz wracać returnem. No i SUB, a GOSUB to nie to samo :-) Zrób test - program powinien ci się wywalić gdy wciśniesz któryś z 2 przycisków, natomiast RC5 powinno...
Witam. Piszę sobie sterownik temperatury w Bascom '51 i mam problem z przerwaniem. Otóż serce układu to AT89C52 do niego jest podłączony RTC DS1678. Ustawiłem RTC, aby na wyjściu INT generował co sekundę impuls. Podaję ten impuls na wejście INT0 procesora. W obsłudze przerwań dałem ustawienie zmiennej Bit na 1, na podstawie jego inicjuję w pętli głównej...
Od kilku dni zabawiam się kamerką OV7670, próbuję pobrać z niej obraz w formacie RGB565 i o mało ambitnej rozdzielczości QCIF(bo taki zmieści się w całości w RAM). Program, który napisałem ma za zadanie w przerwaniu pobrać obraz do pamięci, zatrzymać przerwanie i zapisać zawartość do pliku bmp. Oto mój kod : Otw. pliku 0 Init OV7670 1 System Clock 120...
Wkleję cały program: = 0x33" naprawiło problem, więc gdzieś tu tkwi szkopuł. Bo jeśli dobrze rozumuję , to: bajt XX10 XX11 & ~0x33 1100 1100 ( czyli ~(0011 0011)) bajt XX00 XX00 PD7 jest niepodłączone. PD6 to wyjście na tranzystor (przez rezystor). Nie mam schematu, ale układ elektrycznie działa ok. PD2 i PD3 to switch'e zwierające do masy. Drugi...
Witam, Mam problem z realizacją przerwania z USART3 na STM32L152RBxx. W momencie wywołania przerwania debugger zatrzymuje się na funkcji default_handler(). Poniżej umieszczam kod: main: #include "stm32l1xx.h" #include "stm32l1xx_conf.h" #include <string.h> void GPIO_Conf(void); void RCC_Conf(void); void NVIC_Conf(void);...
Witam. Mam taki dziwny problem - odpalam sobie przerwanie co 10ms, w nim chciałem zrobić coś w stylu bufora dla danych wejściowych, ponieważ mam przerwanie z innego timera, które trwa dość długo (odczyt temp, ustawienie na podstawie tej wartości stanu wyjść, wypisanie temp. na lcd). Na to przerwanie dałem wyższy priorytet, i po prostu sprawdzam stan...
Użytkuję płytkę STM32F429-Discovery, środowisko budowałem w oparciu o poradnik od Freddiego, makefile oraz skrypt linkera także od Freddiego, tak słowem wstępu. Problem który napotykam jest związany z powrotem z przerwania EXTI0. Jeżeli przerwanie zostanie wyzwolone, w tym przypadku pojawi się zbocze narastające na PA0 do którego mam podpięty przycisk,...
Wykonałem pewien test na moim algorytmie. (at)dondu , zmienna intliczba znacznie odbiega od wartości przechowywanej w licznik . W niektórych przypadkach zwiększa się nawet od 5 do 10 razy przy jednym skoku impulsatora. Z testu wynika że procesor reaguje na każde drgnięcie, uruchamiając kolejne przerwania, ale z powodu nieustabilizowania się stanów na...
hmmm chyba sie nie myle bo co to jest jak nie fragment parsowania linii NMEA: header[0] = header[1]; header[1] = header[2]; header[2] = znak; if ((header[0] == 'G') && (header[1] == 'G') && (header[2] == 'A')) { new_ggaHeader_flag = 1;...
Witam ,przeszukuje internet w poszukiwaniu rozwiązania na przerwania GPIO w gcc dla raspberry pi b+ , biblioteka wiringPi po mimo prawidłowo skompilowania kodu i ustawienia pinu , nie wykazuje w testach aby przerwanie od zbocza opadającego prawidłowo działało :( Dodano po 1 [syntax=csharp] #include <stdio.h> #include <string.h> #include...
Mam problem z rozumieniem języka ASM. Niby wszystko działa OK ale jest pewien fakt dla mnie niezrozumiały i aż zjadam zęby. Krótki opis działania programu: w podprogramie ustawiany jest 7 bit w zmiennej bajt który następnie jest sprawdzany w głównej pętli i jeśli jest ustawiony to zmienia się na 0 logiczne, a następnie zmienia się stan na przeciwny...
Coś się w tym algorytmie nie trzyma kupy. Wciśnięcie przycisku zajmuje człowiekowi czas rzędu 1-10 sekundy (ok, przy trzymaniu palca na guziku daje się zejść do 1/40). Przez 1/40 sekundy przy 8 MHz próbkowaniu można zarejestrować 200 tysięcy próbek, a bufor mamy na kilka tysięcy. No to co my tu udajemy? Jakie użyteczne dane można złapać w parę kB pamięci...
Witam Procesor ATmega328 Napisałem krotki programik ukazujący na wyświetlaczu liczbę zmian stanów po naciśnięciu przycisku, w którym nie został zaimplementowany debouncing. [syntax=c] typedef enum {wyzwalanie_zboczem,wyzwalanie_poziomem} TRYB; inline void ustaw_wyzwalanie_zboczem(void) { EICRA |= _BV(ISC10); } inline void ustaw_wyzwalanie_poziomem(void)...