volatile przerwan

Znaleziono około 2925 wyników dla: volatile przerwan
  • [avr-gcc] Kiedy używać zmiennej volatile w programowaniu mikrokontrolerów AVR?

    Po prostu uzywamy zmiennej typu volatile, gdy chcemy miec zawsze biezaca wartosc zmiennej, i cos innego moze nam ja zmienic w polowie wykonywania fkcji. Jesli masz na przyklad fkcje czytajaca z klawiatury na timerze (a wiec na przerwaniu), oraz glowny program, wykonujacy jakies zadania w zaleznosci od tego, co zostalo wcisniete - nalezy uzyc zmiennej...

    Mikrokontrolery   14 Lis 2005 12:26 Odpowiedzi: 6    Wyświetleń: 7924
  • Attiny13 - przerwania: LED nie gaśnie po 5 sek. po naciśnięciu switcha

    Co jest źle? To co zwykle, to co zawsze, to o czym pisane jest w 95% tematów o problemach z przerwaniami. http://en.wikipedia.org/wiki/Volatile_va... 4\/3!!

    Mikrokontrolery   03 Sty 2011 17:51 Odpowiedzi: 1    Wyświetleń: 927
  • REKLAMA
  • Nie znalazłeś odpowiedzi? Zadaj pytanie Sztucznej Inteligencji

    Czekaj (1min)...
  • AtMega 128 - problem z odczytem UART i przerwaniami RXCIE, TXCIE

    Czy z przerwania mogę zwrócić daną do głównego programu (jako dana globalna) ?? Tutaj znajdziesz odpowiedź: http://mikrokontrolery.blogspot.com/2011...

    Mikrokontrolery AVR   05 Maj 2011 22:22 Odpowiedzi: 26    Wyświetleń: 1722
  • [C][Attiny2313]Dlaczego ten kod zajmuje tyle miejsca ?

    Witam, Przyczyn jest kilka: 1.stosowanie procedury _delay_ms() Ponieważ procedura ta ma atrybut "always_inline" to w momencie gdy jej użyjesz w swoim programie nastąpi wstawienie całego kodu tej procedury w każdym miejscu jej użycia. Czyli użyjesz 20 razy to 20 razy zostanie powielony kod. Usunięcie _dalay_ms zmniejsza kod do ok 1800 bajtów. Ponieważ...

    Mikrokontrolery AVR   04 Lut 2011 16:02 Odpowiedzi: 9    Wyświetleń: 1517
  • REKLAMA
  • Jak ustawić przerwanie INT0 do zmiany działania pętli while w sterowaniu diodami?

    Pisane z głowy i na szybko. [syntax=cpp] volatile int8_t stan; ISR (INT0_vect) { if (stan == 1) stan = 0; else stan = 1; } int main(void) { DDRD=0xff; PORTD=0x00; DDRC=0xff; stan = 0; MCUCR |= (1<<ISC01);//poczytaj o tym GICR |= (1<<INT0);/// i o tym sei(); uruchamia mozliwos uruchamiania przerwan while(1) { if (stan == 0) { while(1) { cośtam...

    Mikrokontrolery   27 Gru 2011 17:46 Odpowiedzi: 7    Wyświetleń: 965
  • REKLAMA
  • Atmega8A - Miernik częstotliwości - niepoprawne wskazania

    Nie mam takiego sprzętu. Napisałem coś takiego: [syntax=c] volatile uint8_t i=0; // LICZBA PRZERWAN volatile uint8_t freq=0; // CZESTOTLIWOSC volatile uint8_t pr=0; // ZMIENNA USTAWIANA CO PODSTAWE CZASU 0,025 S int main(void) { lcd_init(); // INICJALIZACJA WYSW. sei();// GLOBALNE PRZERWANIA TCCR2=(1<<WGM21)|(1<<CS22)|(...

    Mikrokontrolery AVR   07 Kwi 2013 16:02 Odpowiedzi: 10    Wyświetleń: 1545
  • [ATmega8][C] - TIMER1 kontrolowany przerwaniami INT0:1

    twój program doskonale miga diodą zgodnie z zamierzeniem ale musisz poczekać nie sekundę a kilka minut bo z powodu niezerowania licznika count kolejne mrugnięcie zachodzi dopiero po przekręceniu inta :) (btw. w tej sytuacji volatile jest niepotrzebne)

    Mikrokontrolery AVR   04 Lis 2012 12:30 Odpowiedzi: 3    Wyświetleń: 1638
  • Xmega128A3 - uart na przerwaniach, biblioteka Atmela, echo na terminal.

    (at)dawid.barracuda Na pewno nie powinieneś robić na siłę samemu. Potrzebujesz modułu, który implementuje algorytm FIFO aby w elegancki sposób obsłużyć UARTA. Warto się posłużyć implementacją, która już działa. Możesz pokusić się o własną implementację ale mimo wszystko wzorować się na czymś sprawdzonym. Taki moduł będziesz mógł sobie w przyszłości...

    Mikrokontrolery AVR   09 Kwi 2017 14:24 Odpowiedzi: 6    Wyświetleń: 990
  • Atomowość w C: Zmienna _co20ms w przerwaniach i możliwe błędy

    Teraz zauważyłem, że trochę się machnąłem (dwa odejmowania jedynki). Oczywiście, że możesz tak zrobić - ja wydzieliłem dodatkową zmienną ze względu na optymalizację: aby uniknąć dwóch odczytów zmiennej volatile. Różnica będzie w dosłownie czterech czy pięciu cyklach. Jak chcesz, to możesz nawet napisać tak: [syntax=C]ISR(TIMER...) { if(cnt_busy && --cnt_val...

    Mikrokontrolery   12 Sie 2011 13:22 Odpowiedzi: 7    Wyświetleń: 1543
  • REKLAMA
  • obsługa wyświetlacza LED przerwaniami i wyświetlanie zmiennej z pętli głównej

    Jeżeli odwołujesz się do zmiennej w pętli głównej i w przerwaniu zadeklaruj ją jako volatile .

    Mikrokontrolery Początkujący   14 Paź 2013 16:56 Odpowiedzi: 16    Wyświetleń: 2805
  • [atmega16] [atmega16][c/avr-gcc] UART w przerwaniach - nieoczekiwane działanie programu

    Oto kod: Nie wiem, czy to może być przyczyną, ale taka deklaracja oznacza "wskaźnik na ulotne dane", a potrzebny jest "ulotny wskaźnik" czyli [syntax=c] char * volatile wskaznik; [/syntax] Oczywiście volatile z przodu też może być niezależnie.

    Mikrokontrolery AVR   29 Cze 2012 11:49 Odpowiedzi: 25    Wyświetleń: 2463
  • [c/AS6] Debugowanie kodu C dla AVR: problem z SPI i przerwaniami w symulatorze

    Jeszcze przy zmiennych występujących w przerwaniach dodaj modyfikator volatile .

    Mikrokontrolery AVR   17 Maj 2013 17:10 Odpowiedzi: 14    Wyświetleń: 2874
  • Dlaczego zmienna volatile działa w przerwaniach w WINAVR?

    Nie mam teraz kodu przed oczami ale mniej wiecej wyglada to tak w duzym skrocie, wszystkie ustawienia timera itd sa poprawnie zainicjowane: unsigned int timovf; SIGNAL (SIG_OVERFLOW0) { timovf++; } void initialize(void) { //ustawienia timera,przerwan,wlaczenie wszystkiego timovf = 0; } int main(void) { initialize(); for(;;) { if(timovf == 15) { timovf...

    Mikrokontrolery   17 Paź 2005 21:34 Odpowiedzi: 6    Wyświetleń: 1061
  • [ATmega32][c] Przerwanie od porównania w timer1 - ograniczenia

    Niestety problem znów się pojawił: Program nie wchodzi do pętli while, gdzie warunek jest niespełniony dopiero po zatrzymaniu dopiero co ustawionego rejestru licznika, próbowałem jeszcze inny sposób, z bitami zmiennej flag ustawianymi w przerwaniach - do przerwania wchodzi, ale jak wróci do programu to nie wychodzi z pętli - tak jakby warunek był cały...

    Mikrokontrolery AVR   21 Lis 2011 17:23 Odpowiedzi: 10    Wyświetleń: 2464
  • [ATmega 644p][C] Analizator - problem z przerwaniem

    Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> volatile uint8_t dol;...

    Mikrokontrolery AVR   01 Wrz 2010 14:56 Odpowiedzi: 14    Wyświetleń: 3458
  • Jak wyłączyć optymalizację dla wybranych funkcji w (Win)AVR gcc?

    Pomoglo i juz wszystko ladnie hula nie wiem czemu ale volatile jakos zwykle kojazylo mi sie ze zmniennymi wspoluzywanymi w procedurach obsl przerwan no coz... czlowiek sie cale zycie uczy i umiera ... Dzieki za pomoc!

    Mikrokontrolery   30 Mar 2007 21:51 Odpowiedzi: 4    Wyświetleń: 1916
  • Jak użyć warunku if i przerwania UART do obsługi czasu w C?

    Witam volatile struct _sTime { volatile uint8_t uiHours; volatile uint8_t uiMinute; volatile uint8_t uiSecond; }; ... ... if((60*sTime.uiMinute + sTime.uiSecond)>=600) { eMAIN_AutomatState = SERVICE_accepted; } if(true==volatileEverySecondsToggle && FREE==TxBufor_0.eTxStatuss)//tylko do spr. że...

    Mikrokontrolery AVR   06 Gru 2010 15:51 Odpowiedzi: 4    Wyświetleń: 1362
  • avr atmega32[c] - odliczanie sekundy ,zliczenie 15625 przerwan ?

    Bzdura. Zmienna jest volatile. Twój "optymalny kod" nie ma nic wspólnego z założeniami. Prawdopodobnie nie wiesz co znaczy volatile I dlaczegozostal użyty. Twój "super kod" idealnie się nadaje do sprawdzania zmiennej w przerwani u

    Mikrokontrolery AVR   25 Sty 2017 11:12 Odpowiedzi: 62    Wyświetleń: 4170
  • RFID - kontrola dostępu - zmiana sposobu otwierania drzwi.

    Nie umiem arduino i zrobiłem na rejestrach dla UNO z megą 328/328p. Powinno działać. Dla mega wystarczy zmienić nazwy rejestrów w funkcjach startujących i zatrzymujących timer. Obsługa opóźnienia zrealizowana na timerze pierwszym. [syntax=c]#include <avr/interrupt.h> volatile int timer_cnt=0; // tutaj definiujesz co po jakim czasie przekaznik...

    Arduino   19 Wrz 2017 00:26 Odpowiedzi: 6    Wyświetleń: 1428
  • Błąd czasowy w pętli z volatile unsigned int Time_out w przerwaniu 25ms

    [syntax=c] ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {Time_out=0;}; int x; do { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { x=Time_out;); } while (x < 1000); [/syntax]

    Mikrokontrolery   25 Gru 2011 21:08 Odpowiedzi: 14    Wyświetleń: 1515
  • Atmega8: Zmienna volatile i przerwania - problem z opóźnieniem w pętli while

    Powód jest bardzo prosty: zmniejszenie zmiennej w pamięci nie jest operacją atomową. Co prawda za każdym razem następuje odczytanie zmiennej, zmniejszenie jej a następnie zapis, to jeśli przerwanie wystąpi pomiędzy odczytem a zapisem, to utracisz zmianę dokonaną w przerwaniu. W przypadku gdy przerwanie i funkcja main konkurują o jeden zasób, musisz...

    Mikrokontrolery AVR   25 Kwi 2010 12:42 Odpowiedzi: 2    Wyświetleń: 1359
  • Czy odczyt stanu pinu w przerwaniu timera jest poprawny? Zmienna volatile

    Właściwie nie musi mieć. Jeśli przerwania są co kilka-kilkanaście ms to eliminacja drgań robi się niejako przy okazji.

    Mikrokontrolery AVR   06 Maj 2010 21:56 Odpowiedzi: 12    Wyświetleń: 1526
  • AtMega16 język C - zmienna Volatile nie przekazuje wartości z przerwania do main

    a co jest nie tak z pętlą while(1) bo nie mogę się dopatrzeć To, że jest pusta. Stan zmiennej flaga sprawdzasz tylko raz na początku programu, po czym zapętlasz go w pustej pętli. Poza tym sprawdzanie if(flaga=1) jest błędem, zapewne miało być if(flaga==1) - przeczytaj ostrzeżenia kompilatora generowane w czasie kompilacji.

    Mikrokontrolery Początkujący   22 Sty 2015 18:56 Odpowiedzi: 14    Wyświetleń: 1422
  • [Atmega168][C] Odliczanie dokładnie jednej sekundy

    Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...

    Mikrokontrolery AVR   16 Maj 2012 10:20 Odpowiedzi: 2    Wyświetleń: 1345
  • WinAvr: Przerwania TC1 i zmienne volatile, brak aktualizacji czasu na LCD

    Problem tkwi w miejscu gdzie są inicjowane wartości zmiennych do odnierzania czasu. Niestety nie :( Problem tkwi tu: /* TIMSK = 130; // globalne odblokowanie przerwań /* TIMSK |=(1<<TOIE1); Skąd wytrzasnąłeś te 130 :?: Piotrek PS A jaki to proc :?:

    Mikrokontrolery   20 Mar 2007 23:31 Odpowiedzi: 6    Wyświetleń: 1131
  • Zliczanie zmiennej w przerwaniu w C - zmienna nie wpływa na podprogramy

    I funkcje opóźniające w przerwaniu to trochę głupia rzecz. Prócz tego poczytaj może o słowie kluczowym volatile.Oczywiście jak już poprawisz te wcześniej wspomniane rejestry...

    Mikrokontrolery   09 Mar 2008 16:28 Odpowiedzi: 12    Wyświetleń: 1742
  • Jak zmierzyć czas przerwania DMA z I2S z rozdzielczością 1us?

    Chciałbym zmierzyć jak długo wykonuje się przerwanie od DMA po zakończeniu transmisji z I2S. Myślałem nad uruchomieniem jakiegoś timera, który będzie zliczał mikrosekundy, ale kiedy wykonuje się jedno przerwanie z najwyższym priorytetem to inne są hamowane. Dobrze kombinujesz! Ale trochę przekombinowujesz :). Nie potrzebujesz żadnych dodatkowych przerwań...

    Mikrokontrolery ARM   21 Lut 2024 22:50 Odpowiedzi: 6    Wyświetleń: 264
  • WS2812 na choince w przerwaniach od USART - AVR Mega

    https://obrazki.elektroda.pl/7496355900_... Niby nic szczególnego, 120 ledów uC Mega324 taktowana 18,4321MHz. Schemat jest bardzo prosty, więc sobie go daruję (procek, kwarc, bramka NOT), nietypowe jak na AVR mega jest sterowanie przez USART na przerwaniach. Poniżej istotny fragment kodu: W sumie to mogą być włączone przerwania SIGNAL...

    DIY Konkurs   09 Sty 2018 14:44 Odpowiedzi: 25    Wyświetleń: 5802
  • ATmega16 i USART: ISR(USART_RXC_vect) nie działa poprawnie, co robić?

    1/ jak kolwiek brakuje Ci w kodzie wywolania usart_init() 2/ brakuje tez brakuje zalaczenia przerwan: asm volatile("sei"::&#... 3/ kolejna sprawa, to ze niewiem, czy zmienna "events" jest z atrybutem volatile - jesli nie, to: while(!events) { }; skompiluje sie do czegos takiego: if(!events) while(1)...

    Mikrokontrolery   15 Lip 2007 17:03 Odpowiedzi: 1    Wyświetleń: 1643
  • Przerwanie pętli arduino proszę o szybką poradę

    Potrzebuję pomocy w przerwaniu pętli while (linijka 146) założenie jest takie jeżeli BlutoothDane=s to ma wykonać tą pętle a jeżeli BlutoothDane=d to ma ją przerwać. problem jest taki, że nie przerywa pętli cały układ ma działać jako sterownik Led na bluetooth. Proszę o szybką pomoc. Masz tu kilka nieprawidłowości; Jakie znaczenie i zastosowanie ma...

    Arduino   04 Sie 2020 00:47 Odpowiedzi: 5    Wyświetleń: 1422
  • [ATMega8][c] - problem z tablicą uzupełnianą w przerwaniu

    Wystarczy policzyć. 19200 bps = 1920 znaków na sekundę, czyli znak co ~0,5 ms. Przy taktowaniu 4MHz masz +/- 2080 cykli procesora pomiędzy przerwaniami od UARTa, czyli duuużo czasu na wykonywanie instrukcji w pętli głównej. Na Twoim miejscu skupiłbym się na przetwarzaniu tekstu np. linia po linii - przerwanie wypełnia bufor, a po wykryciu sekwencji...

    Mikrokontrolery AVR   03 Paź 2009 19:03 Odpowiedzi: 21    Wyświetleń: 2953
  • [atmega16] [atmega16][C] Przerwania INT0/INT1 nie działają, brak reakcji na płytce

    Mam do zrobienia program o następującym działaniu: przerwaniem zewnętrznym (INT0) uruchamiam całą machinę - czas zaczyna być mierzony, kolejnym przerwaniem zewnętrznym (INT1) robię STOP, i w tym momencie wynik powinien być wyświetlony na wyświetlaczu LCD. Niestety jak chce odpalić program już na płytce to się nic kompletnie nie dzieje. Zapewne coś jest...

    Mikrokontrolery AVR   20 Cze 2010 20:12 Odpowiedzi: 6    Wyświetleń: 2267
  • [atmega8] [atmega8][c] - Timer0 nie zmienia wartości zmiennych licznik i czas

    1. Do tego co napisał Fredy wyżej: http://mikrokontrolery.blogspot.com/2011... 2. Zmienną akt_wyswietlacz zdefiniuj sobie jako lokalną statyczną w funkcji przerwania. 3. F_CPU definiuj w opcjach, a nie w kodzie: http://mikrokontrolery.blogspot.com/2011... 4. W jakim celu zerujesz TCNT2 w przerwaniu...

    Mikrokontrolery AVR   20 Gru 2012 00:39 Odpowiedzi: 4    Wyświetleń: 1293
  • STM32F0 DISCOVERY - Odczyt pinu wejściowego w przerwaniu.

    http://4programmers.net/C/Volatile , kolejność jest taka język c i konsola na kompie , a później mikro kontrolery , bo będziesz się bujał z takimi głupimi błędami

    Mikrokontrolery ARM   06 Sty 2014 19:49 Odpowiedzi: 16    Wyświetleń: 1656
  • Jak bezpiecznie modyfikować zmienne globalne w przerwaniu w C?

    Raczej doczytał, bo wstawił przed deklaracjami zmiennych, a jeśli rozwiązaniem jest wstawienie volatile też wewnątrz struktury, to raczej nie jest to oczywiste bez doświadczenia z C.

    Mikrokontrolery AVR   26 Lis 2011 11:03 Odpowiedzi: 5    Wyświetleń: 1227
  • STM32 Przerwanie SYSTICK. Jak wrócić do funkcji main?

    myślałem że mogę wpisać praktycznie częstotliwość taktowania procka. Po zastanowieniu wiem że to niemożliwe. Podzielnik przez 8 można włączyć. Dodano po 4 Nie każdy pływa z zamiarem udziału w olimpiadzie ;-) Jest coś takiego jak hobby, ciekawość... na różnym poziomie wiedzy. Tu użyj CubeMX. Prosto, szybko i przyjemnie. Dużo kursów jest na Forbocie,...

    Mikrokontrolery ARM   09 Cze 2019 00:09 Odpowiedzi: 11    Wyświetleń: 984
  • [AVR][C] Zerowanie i przechwycenie wartości timera przerwaniem

    Przepraszam ze nie odpisałem ale nie miałem zupełnie czasu. Wymyśliłem coś takiego (program ma dzialac na Atmega99PA czestotliwość zegara to ok 100kHz: [syntax=c] #include <avr/interrupt.h> . . . /*przerwania*/ volatile unsigned int licznik=0; uint8_t przerwanie=1; ISR (INT0_vect) { if (przerwanie==1) { TCNT1=0; EICRA=_BV(ISC01)|_BV(ISC00); /*Reakcja...

    Mikrokontrolery   10 Lis 2014 18:57 Odpowiedzi: 4    Wyświetleń: 1431
  • Zobrazowanie zjawiska drgania stykow - przerwania zewnetrzne

    W pętli głównej robisz operację R-M-W na rejestrze EICRA, który modyfikujesz też z przerwania. Do tego Twoja funkcje ustaw_wyzwalanie_poziomem() i ustaw_wyzwalanie_zboczem() na 100% nie robią tego co chcesz, bo aby to robiły to musiałbyś zerować też kilka innych bitów, a nie tylko używać "|=". Spojrzałem jeszcze raz w dokumentacje. Okazało się że pomyliłem...

    Mikrokontrolery Początkujący   20 Mar 2018 16:48 Odpowiedzi: 17    Wyświetleń: 843
  • [ATMEGA32] [C] jak zrobić arduinowe serial.available, Przerwanie od UART.

    Zmienną 'flaga' ustalasz w przerwaniu wiec powinna być volatile. p.s. Samych rejestrów nie sprawdzalem.

    Mikrokontrolery   29 Gru 2017 18:13 Odpowiedzi: 8    Wyświetleń: 777
  • Atmega8 - jak kontynuować działanie silnika po przerwaniu z krańcówki?

    Wydaje mi się że po prostu użyj jakieś flagi i zmiennej globalnej która zapamięta wartość PORTC w momencie wejścia do przerwania. Aby rzeczywiste wartość ta była zachowane użyj zmiennej volatile char to znaczy wchodząc do przerwania funkcja będzie wykonywana na tej zmiennej a nie na jej kopii.

    Mikrokontrolery AVR   10 Sty 2010 08:12 Odpowiedzi: 14    Wyświetleń: 1989
  • [atmega8] [atmega8][C] - Timer0 odlicza za szybko przy 8MHz, jak ustawić preskaler?

    Nie chcę grać roli lokalnego guru (zwłaszcza korzystającego z cudzych stron WWW), ale widzę następujące błędy: F_CPU nie defniuje się w kodzie -> http://mikrokontrolery.blogspot.com/2011... Twoje zmienne używane w przerwaniu powinny być volatile -> http://mikrokontrolery.blogspot.com/2011... Nie...

    Mikrokontrolery Początkujący   22 Lip 2013 10:32 Odpowiedzi: 8    Wyświetleń: 1248
  • [ATtiny13][c] int0 - problem w obsługą przerwania

    Kliknij tutaj: [url=http://avr-libc.nongnu.org/user-man...

    Mikrokontrolery AVR   07 Lis 2010 19:47 Odpowiedzi: 4    Wyświetleń: 1237
  • [c] [Atmega16] Przerwanie INT0 nie inkrementuje zmiennej - co poprawić?

    a słyszałeś kiedyś o zmiennych typu volatile ???? poczytaj sobie do czego służy słówko volatile a na pewno szybko poradzisz sobie z tym problemem

    Mikrokontrolery AVR   22 Sty 2010 15:17 Odpowiedzi: 2    Wyświetleń: 1314
  • Miernik częstotliwości na ATmega16 - przerwania i liczniki T0, T1

    Uwaga! 1) Jeżeli zmienną licznik będziesz miał zadeklarowaną wewnątrz funkcji obsługującej przerwanie to przykładowa deklaracja powinna wyglądać tak: static uint8_t licznik = 0; 2) Jeżeli natomiast zmienną licznik zadeklarujesz gdzieś w programie głównym, wtedy powinieneś ją przykładowo zadeklarować jako: volatile uint8_t licznik = 0; po co te "przedrostki"...

    Mikrokontrolery   15 Lut 2008 16:19 Odpowiedzi: 12    Wyświetleń: 3441
  • [ATMega][SN75176][c] - problemy z UARTem (przerwania)

    i jak zwykle, odpowiedz standardowa - volatile. ile razy bedzie musiala jeszcze pasc, aby forumowicze znajdywali ja w wyszukiwarce, a nie pytali o nia co chwile? 4\/3!!

    Mikrokontrolery AVR   04 Mar 2009 12:54 Odpowiedzi: 3    Wyświetleń: 2087
  • Atmega644PA - Obsługa przerwania, multipleksowanie ADC

    Jeśli wartość OKRES nic nie zmienia, to masz gdzieś gruby błąd. Prawdopodobnie skrzyżowałaś różne kawałki kodu i wyszło coś, nad czym nie panujesz. W moim kodzie 3 kanały są ciągle mierzone przez ADC, a wartość OKRES reguluje tylko to, jak często czytasz/przetwarzasz te pomiary. Tak to się robi w rzeczywistych zastosowaniach, gdzie zwykle musisz mieć...

    Mikrokontrolery   10 Sty 2016 16:07 Odpowiedzi: 53    Wyświetleń: 2865
  • [atmega88] [atmega88][C] Błąd 'index' undeclared w przerwaniu ISR(INT0_vect)

    Poczytaj o zmiennych globalnych typu volatile. Zamykam

    Mikrokontrolery AVR   07 Lis 2010 13:16 Odpowiedzi: 1    Wyświetleń: 906
  • Atmega8 - Tym razem; przerwanie sprzętowe - nie działa

    Wyrzuć te delay'e. Zmienną licznik jak radzili koledzy zmień na volatile. Zmień sei(); na SREG |= (1<<7); Jeśli będzie działać, to zapytam jakiej wersji avr studio używasz? [syntax=cpp] #include <avr/io.h> #include <avr/interrupt.h> volatile uint8_t Count = 0; ISR(TIMER0_OVF_vect) { Count++; TCNT0 = 0; } int main(void) { DDRB = 0xFF;...

    Mikrokontrolery Początkujący   03 Kwi 2013 20:44 Odpowiedzi: 30    Wyświetleń: 3780
  • Błąd kompilacji przy użyciu goto w C po przerwaniu SIG_INTERRUPT0

    Tego rodzaju kod najprościej Ci będzie opisać za pomocą automatu, może kod nie będzie aż tak szybki, ale na pewno będzie się go dało zrozumieć :) setjmp/longjmp też może być, ale to działa raz (tj. dla jednego przerwania), struktura sigjmp_buf zajmuje 23/24 bajty na AVR a zapamietanie/wykonanie skoku też zajmuje kilkanaście instrukcji. Szkielet implementacji...

    Mikrokontrolery   20 Paź 2008 09:22 Odpowiedzi: 8    Wyświetleń: 7185
  • [WinAVR][C] - zamiana zmiennej na stan portów / przerwania.

    Witam, Zmienna l (i wszystkie inne uaktualniane w przerwaniach) powinna być zadeklarowana jako volatile: volatile unsigned int l; Dzięki temu kompilator wie, że może ona zmienić wartość poza kontrolą kompilatora np. w przerwaniu. Takiej zmiennej kompilator np. nie usunie podczas optymalizacji Twojego programu :) PS. w PHP operatory wyglądają tak samo,...

    Mikrokontrolery AVR   12 Sie 2008 13:04 Odpowiedzi: 14    Wyświetleń: 4401
  • Atmega168 Bascom - Przerwanie co 5us i odczyt 8 bitów

    optymalizacje mam na -OS, przestawić na O2 lub O3 ?? Przy tak minimalnym kodzie nic to nie zmieni Spróbuj z taką procedurą przerwania: [syntax=c]ISR(INT0_vect, ISR_NAKED) { asm volatile( "pushr24" "\n\t" "inr24, 0x09" "\n\t" "pushr0" "\n\t" "inr0, 0x3f" "\n\t" "pushr0" "\n\t" "pushr1" "\n\t" "pushr25" "\n\t" "pushr30" "\n\t" "pushr31" "\n\t" "ldsr25,...

    Mikrokontrolery Początkujący   18 Lis 2014 09:04 Odpowiedzi: 65    Wyświetleń: 4776
  • [C] Atmega32 przerwania. Zmienna nie działa w programie.

    Dopisz "volatile".

    Mikrokontrolery AVR   11 Lis 2010 16:43 Odpowiedzi: 3    Wyświetleń: 1785
  • AVR-GCC - Uniknięcie hazardu (race condition) przy przerwaniach

    Procedura obliczenia() musi być wykonana po każdym przepełnieniu timera i tylko po przepełnieniu timera (musi się wykonać dokładnie tyle samo razy ile razy wystąpiło przerwanie timera). Wymagana jest też w szybka reakcja na inne przerwania - szybsza niż trwają obliczenia() Prawie dobre rozwiązanie nr 1(pseudokod): Proszę wytknięcie błędów, opinie który...

    Mikrokontrolery AVR   26 Mar 2014 00:07 Odpowiedzi: 2    Wyświetleń: 1185
  • AVR GCC TIMER0: Błąd kompilacji przy deklaracji '__vector_11' w przerwaniu

    #include <avr/io.h> #include <avr/interrupt.h> // funkcje sei(), cli() #include <stdlib.h> volatile int a=0; ISR(TIMER0_OVF_vect) { a+=1; } int main( void ) { //rejestry od timera 0 TCCR0 = _BV(CS02)|_BV(CS00);//pr... 1024 TIMSK = _BV(OCIE0); //włącza przerwanie...

    Mikrokontrolery   07 Mar 2008 20:04 Odpowiedzi: 6    Wyświetleń: 7897
  • [AVR-GCC] Dlaczego zmienna 'status' ma nieoczekiwaną wartość w przerwaniu TWI?

    Nie masz dostępu do zmiennej, czy po prostu odczyt zawsze zwraca tą samą wartość (efekt braku volatile przy deklarowaniu zmiennej używanej przez przerwanie)? Bez "volatile" kompilator zoptymalizuje odwołania do zmiennej "status" w funkcji main - zmienna nie jest nigdy odczytywana (kompilator nie uwzględnia tego, że może przyjść przerwanie - widzi tylko...

    Mikrokontrolery AVR   08 Sie 2009 09:02 Odpowiedzi: 6    Wyświetleń: 1584
  • Atmega 32 - Jak przekazać wartość sekund z przerwania timer0 do main?

    Wpisać magiczne "volatile" volatile int sekunda=0;

    Mikrokontrolery AVR   30 Maj 2009 20:48 Odpowiedzi: 2    Wyświetleń: 2728
  • STM32F4: Podwójne przerwania AWD przy optymalizacji -Os, dlaczego?

    1. Zbędny atrybut volatile w deklaracji AdcVal. 2. Czy AWD jest jedynym źródłem przerwania ADC? 3. Kasować bit zgłoszenia przerwania należy na początku procedury obsługi przerwania. nie wiem, aj to jest W STM32, ale w wielu innych Cortexach Zgłoszenie przerwania nie zdąży się w takiej sytuacji skasować i powtórnie wejdziesz w obsługę przerwania.

    Mikrokontrolery ARM   02 Kwi 2013 15:49 Odpowiedzi: 41    Wyświetleń: 5361
  • Komunikacja między Arduino przez SPI i TWI - tylko pierwsze przerwanie działa

    Nie wiem, skąd jest ten przykład "wzięty", ale odbieranie danych przez klienta I2C powinno być realizowane w funkcji receiveEvent() (wywoływana z ISR), a nie w pętli loop(). [syntax=c] volatile byte buf [32]; // called by interrupt service routine when incoming data arrives void receiveEvent (int howMany) { for (byte i = 0; i < howMany; i++) { buf...

    Arduino   02 Kwi 2019 12:07 Odpowiedzi: 4    Wyświetleń: 339
  • ATmega32, C, przerwanie ADC - program przestaje działać po kilku minutach

    o volatile się zapomniało :P // no tak w przerwaniu :P a ruszasz coś układem? może źle jest cuś przylutowane ? Z taktowaniem może też coś nie tak? Może z zasilaniem? Może to wpływ wiatrów słonecznych ?

    Mikrokontrolery AVR   12 Kwi 2011 19:37 Odpowiedzi: 13    Wyświetleń: 2539
  • [atmega8] [C] - Ustawianie bitów na porcie D a niechciane przerwania.

    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...

    Mikrokontrolery Początkujący   24 Lis 2012 22:20 Odpowiedzi: 4    Wyświetleń: 1272
  • Nazwa uchwytu w SIGNAL dla przerwania odbioru znaku w USART?

    obsłużyć wydarzenie jakim jest skonczenie odbierania znaku ? Chodzi mi to to aby program w pętli głównej robił co do niego należy, nie wiedząc kiedy ma spodziewac się znaku, jednakże cały czas byłby na to gotowy-aby go odebrać. tak na szybko algorytm: volatile char bufor[50]; volatile int ilosc_znakow; volatile char bufor_2[50]; int...

    Mikrokontrolery AVR   25 Lis 2010 12:11 Odpowiedzi: 6    Wyświetleń: 1695
  • ATmega8L: Jak mierzyć szerokość impulsu za pomocą przerwania INT1?

    Czesc Program ma za zadanie mierzyc szerokosc impulsu za pomoca przerwania INT1. W skrocie dziala to tak ze podczas zbocza narastajacego wykonuje sie przerwanie ktore wlacza timer. Timer ma swoje wlasne przerwanie od przepelnienia i zlicza pelne cykle przepelnienien. Gdy pojawi sie zbocze opadajace to wylacza timer i zapisuje jego wartosc ktora nastepnie...

    Mikrokontrolery AVR   24 Sie 2017 20:41 Odpowiedzi: 5    Wyświetleń: 999
  • Attiny2313 - Konfiguracja Timer0 w C w Atnel Studio 6, jak napisać kod?

    Load Timer0 = 45 - jak sądzę oznacza nadanie wartości początkowej timerowi. Oznacza to, że powinieneś załadować tę wartość do rejestru TCNT0. Zakładam, że funkcja inicjująca BASOM inicjuje go w tryb normalny (czyli mode 0). W funkcji przerwania: - Incr A, Incr B - po prostu dodaj jeden do zmiennych A i B lub wykonaj inkrementację - If A = 305 Then ......

    Mikrokontrolery AVR   03 Lip 2014 18:00 Odpowiedzi: 8    Wyświetleń: 2178
  • [Atmega32] Timer0 nie wywołuje przerwania SIG_OVERFLOW0 w skanerze 3D

    ps. w manualu wyczytałem, że TIM0_OVF_vect jest tylko dla atiny. Dla atmegi32 jest TIMER0_OVF_vect pomyliłem się, sorki. i jest błąd bo volatile uint8_t overflow; uint8_t to 0-255, nie wiem jak to wygląda po skompilowaniu. if (overflow < 512) { PORTC = 1 << 1; } else { PORTC = 1 << 2; } if (overflow >...

    Mikrokontrolery AVR   15 Maj 2009 14:59 Odpowiedzi: 13    Wyświetleń: 3966
  • [STM32F3] - USART1 działa, USART2 i USART3 nie działają oraz przerwanie

    Czy pamiętałeś o włączeniu portów w ODPOWIEDNIM rejestrze APBENR? volatile nie ma nic wspólnego z AVR. Tego atrybutu używa się np. wtedy, kiedy zmienna modyfikowana przez obsługę przerwania jest testowana przez inny fragment kodu. Pokaż kod procedury przerwania, bo coś tam narozrabiałeś.

    Mikrokontrolery ARM   15 Sie 2013 22:36 Odpowiedzi: 3    Wyświetleń: 1131
  • Atmega8 - Timer1 nie odlicza czasu przy kwarcu 16MHz i preskalerze 64

    Zmienna sek powinna być volatile: http://mikrokontrolery.blogspot.com/2011... ssek natomiast zrób statyczną w funkcji przerwania: unsigned tam gdzie liczby nie będą ze znakiem. Wprawdzie ani godziny, ani minuty, czy też sekundy nie przekroczą maksymalnych ich wartości, ale porządek warto mieć. Poza tym, taktujesz swój mikrokontroler...

    Mikrokontrolery AVR   08 Gru 2014 22:35 Odpowiedzi: 7    Wyświetleń: 1065
  • AVR ATmega8 Timer0 CTC – konfiguracja rejestrów do przerwania co 2ms

    Dałem pętlę while(1) w main i dioda nadal nie miga. Gdze ją dodałeś? U mnie działa. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define LED_PIN (1<<PD7) #define LED_TOG PORTD ^=LED_PIN volatile int licz; int main(void) { DDRD |= LED_PIN; TCCR0 |= (1<<CS02); TIMSK |= (1<<TOIE0);...

    Mikrokontrolery Początkujący   03 Kwi 2015 20:23 Odpowiedzi: 39    Wyświetleń: 3900
  • [C] [C][asm] Jak przyspieszyć wykonanie przerwania PWM dla 12 kanałów?

    Tak jak piszą koledzy - utworzyć lokalną kopię zmiennej counter, żeby nie była volatile w przerwaniu. Ale prawdziwa optymalizacja to zmiana algorytmu - jak pamiętam chodzi ci o 12-kanałowy PWM. Lepiej więc zrobić tablicę przechowującą stan kanałów w danej jednostce czasu, wtedy 16-kanałowy PWM to będzie tylko PORTB=channel[counter].lo; PORTD=channel[counter].hi....

    Mikrokontrolery AVR   31 Paź 2010 14:32 Odpowiedzi: 18    Wyświetleń: 2292
  • [C] ATMega8 - Timery i przerwania nie działają w kodzie C, WinAVR 20100110

    Spróbuj zrobić od przepełnienia. W proteus'ie też port zmieni raz stan i nic. volatile int flaga; #include <avr/io.h> #include <avr/interrupt.h> int main (void) { DDRC = 0xff; // Ustaw jako wyjście LED TIMSK = 0x04; // Włącz przerwania przepełnienia (1 <<TOIE1) SREG = 0x80; // włącz przerwania globalne sei()...

    Mikrokontrolery AVR   20 Maj 2011 18:47 Odpowiedzi: 14    Wyświetleń: 2166
  • [ATMEGA8] [ATMEGA8][C] Reset mikrokontrolera zamiast obsługi przerwania INT1

    1. Na poczatku użyłeś obecnie obowiązująca formę w odniesieniu do przerwania INT1 : ISR(INT1_vect) a teraz starszą w odniesieniu do przerwania INT0 SIGNAL(SIG_INTERRUPT0) Czy zainstalowałeś starszą wersję WinAVR ? 2. O co chodzi z : asm volatile ("WDR"::); i jak to się ma do _delay_ms(); skoro w programie...

    Mikrokontrolery AVR   30 Gru 2010 23:13 Odpowiedzi: 54    Wyświetleń: 6060
  • [ATmega8] [ATmega8][C] Przerwanie licznika nie generuje opóźnień, brak wyświetlania tekstu

    a _delay_ms i _delay_us Ci nie wystarcza ? Do opóźnień nie trzeba wykorzystywać koniecznie przerwań timera. Można wykorzystać flagi timera (o ile się da, ale wszystko zależy). Poza tym, zmienna deb w Twoim programie zapewne nie jest volatile, ale wrzuciłeś nam NIC, także pomoc też nijaka

    Mikrokontrolery AVR   05 Paź 2010 18:38 Odpowiedzi: 2    Wyświetleń: 731
  • ATmega32, jak poprawnie ustawić przerwanie TIMER1 w C na zestawie and-tech EvB 4.3

    słowo kluczowe "volatile"

    Mikrokontrolery Początkujący   29 Gru 2011 20:59 Odpowiedzi: 4    Wyświetleń: 1533
  • NUCLEO-F103RB: SysTick_Config(8000000) generuje przerwania co 0.1s zamiast 1s

    W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję się zarazem schematem z zegarów z CubeMX . Całość odbywa...

    Mikrokontrolery ARM   14 Maj 2018 14:20 Odpowiedzi: 7    Wyświetleń: 525
  • [C] [C][ATmega8] - Problemy z przerwaniem zewnętrznym i sterowaniem serwami

    Witam, jestem w trakcie pisania programu dla line follow'era i chciałbym za pomocą switcha włączać i wyłączać robota (konkretnie serwa), coś na zasadzie przycisku on/off. Do tego celu chcę użyć przerwań zewnętrznych w ATmedze8 i switcha, za pomocą którego będę zmieniał stan na pinie PD2 (INT0). Program niestety nie działa jak należy. Raz na kilka przypadków...

    Mikrokontrolery AVR   05 Wrz 2013 19:54 Odpowiedzi: 17    Wyświetleń: 3444
  • Zmienne globalne wykorzystywane przez przerwania i inne.

    Dla przyszłych czytelników tego tematu - warto przeczytać: http://mikrokontrolery.blogspot.com/2011...

    Mikrokontrolery Początkujący   28 Kwi 2021 13:48 Odpowiedzi: 47    Wyświetleń: 2841
  • [M16] Jak obsłużyć przerwanie UART i string w M16 przy baudrate 57600?

    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)...

    Mikrokontrolery AVR   03 Lip 2008 19:30 Odpowiedzi: 10    Wyświetleń: 4918
  • atmega8[C] - Niedziałające przerwania od przepelnienia licznikow T0 i T1

    Witam, Mam problem z obsluga przerwan od przepelnienia licznikow. W projekcie wykorzystuje 3 liczniki w atmega8, timer2 wykorzystuje do generacji sygnalu 40kHz natomiast pozostale dwa maja zliczac czas od nadania sygnalu do otrzymania echa. Narazie napisalem osobną obsluge kazdego z timerow i dzialalo. Po wrzuceniu wszystkiego do jednego projektu dziala...

    Mikrokontrolery AVR   09 Lis 2012 19:40 Odpowiedzi: 4    Wyświetleń: 1392
  • ATmega16 [C] [AVRStudio5] - Przerwanie od odbieranej danej UART

    temp powinno być volatile. Inaczej się optymalizuje w pętli głównej, spójrz na wygenerowany kod asemblerowy. Dodano po 1 Zarówno "temp" jak i "i" powinny być volatile. i nie musi. Jest wykorzystywane tylko w przerwaniu. Za to powinno być zadeklarowane jako static w funkcji obsługi przerwania. Dzięki za szybką odpowiedź, ale to chyba nie jest problemem......

    Mikrokontrolery AVR   16 Kwi 2013 19:39 Odpowiedzi: 22    Wyświetleń: 2124
  • [STM32F107VBT6][C/Keil] Obsługa I2C slave przez przerwania

    Sporo się namęczyłem, zanim ruszył mi slave transmitter w STM32F103. W 107 będzie tak samo. Po pierwsze zobacz do errat - tam między innymi napisali, że przerwanie i2c musi mieć najwyższy priorytet, bo inaczej się wiesza. Poza tym przykłady nie zadziałały mi od razu, a problemy mają też inni, o czym możesz poczytać na main.c // main.c main()...

    Mikrokontrolery ARM   09 Lis 2011 08:30 Odpowiedzi: 9    Wyświetleń: 6454
  • atrybut "volatile" dla struktury danych - niezgodność

    Zgadza się, jeśli zmienna jest volatile, to kompilator musi bezwzględnie realizować wszystkie dostępy bez buforowania odczytu ani opóźniania zapisu. Jak by nie patrzeć, kompilator optymalizuje kod zakładając liniowy(sekwencyjny) sposób wykonywania: w obrębie danej funkcji (jaka by ona nie była: program główny, przerwanie czy cokolwiek innego) można...

    Mikrokontrolery   28 Sie 2011 09:32 Odpowiedzi: 23    Wyświetleń: 3667
  • [AVR] Atmega gubi przerwania USART - jak rozwiązać problem z odbiorem danych?

    A może masz gdzieś funkcję obsługi tego przerwania? Dodano po 4 Dodam, że korzystam z programowego bufora cyklicznego, który w przerwaniach odbiera dane od UDR. Jedyne co mi przychodzi na myśl to to, że przerwanie tak szybko się wykona (odebranie danych do bufora i skasowanie flagi RXC), że część programu: while ( !(UCSRA & (1<<RXC)) ); nawet...

    Mikrokontrolery   13 Lip 2011 00:58 Odpowiedzi: 21    Wyświetleń: 5714
  • Odczyt czasu między przerwaniami z AD9850 przez Timer1 - błędy

    Dla przypomnienia: volatile: GWARANTUJE: odczyt sensownej liczby, tj wszystkie bajty z tej samej chwili czasowej, i jest to jedyna gwarancja Niezupełnie. Kwalifikator volatile instruuje kompilator, że zmienna ma być przechowywana tylko w pamięci (a nie np. w rejestrach MCU), przez cały czas jej życia w programie. Operacje na zmiennych volatile nie...

    Arduino   16 Maj 2021 21:42 Odpowiedzi: 29    Wyświetleń: 1005
  • RC5 atmega8 przypisanie przyciskowi konkretna funkcję

    1. Komentuj bogato swój własny kod, bo sam się w nim pogubisz, a i nam trudniej analizować, nie wiedząc co chcesz w danym fragmencie zrobić. 2. deklarujesz zmienną globalną cod , w przerwaniu nadajesz jej wartość cod=code : 2a. ale jej nie używasz w pętli głównej i nigdzie indziej - do czego więc jest? 2b. aby ją wykorzystać w pętli głównej cod musi...

    Mikrokontrolery AVR   04 Sty 2012 03:05 Odpowiedzi: 1    Wyświetleń: 1025
  • Przerwania proste i przyjemne - część 2 - zmienne, bufory i latencja

    ... w dodatku tutaj jest błąd: Szkoda, że artykuł zupełnie pomija kwestie dostępu RMW oraz użycie volatile - dwie kluczowe sprawy. http://mikrokontrolery.blogspot.com/2011...

    Artykuły   08 Mar 2022 00:35 Odpowiedzi: 18    Wyświetleń: 2688
  • [C][ATmega16] - Niechciana zmiana częstotliwości przerwania (Timer1)

    Ojej... rzeczywiście strasznie głupi błąd. Po prawdzie kod był pisany na szybko i nawet nie przyszło mi do głowy że to może być wina umieszczenia całej funkcji w przerwaniu. Dzięki wielkie Panowie :D. Wrzucam kod, być może komuś się kiedyś przyda. [syntax=c]#include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> #include <avr/interrupt.h>...

    Mikrokontrolery AVR   12 Sie 2012 16:25 Odpowiedzi: 3    Wyświetleń: 1434
  • Problem z przerwaniami w ESP32 pochodzącymi z transoptora PC817C

    Witam, jak w temacie, mam problem z wykrywaniem przerwań od transoptora PC817C. Napięcie to 3.3V a emiter transoptora (nóżka nr. 3) mam podłączoną do ESP32 z pinem GPIO35, z zewnętrznym pulldownem w postaci rezystora 10K Ω podłączonym do GND. Ustawiłem ten pin jako INPUT a tryb przerwania jako FALLING. ESP32 wykrywa przerwanie ale nie jest synchroniczne,...

    ESP8266 i ESP32   26 Kwi 2021 17:06 Odpowiedzi: 12    Wyświetleń: 1575
  • [AVR][C] - Sterowanie dwoma silnikami krokowymi / Wątki?

    Jeśli nie potrzeba dużej precyzji bo to ma machać tylko w te i w tamte ;) to jeden licznik do obu silników w przerwaniu. Jedno przerwanie jest lepsze niż dwa ponieważ każde wywołanie zużywa czas na wejście i wyjście, nawet jak się pisze w C. Z resztą z tego powodu, przy tak czestych przerwaniach, można tylko tikać w przerwaniu np: [syntax=c]volatile...

    Mikrokontrolery AVR   20 Lis 2014 13:11 Odpowiedzi: 15    Wyświetleń: 2421
  • Atmega328p - Odczyt potencjometrów z przerwaniami, wartości 0-255

    Próbowałem kilka dni uruchomić FreeRunning - niestety bez skutku. Stwierdziłem, że może lepie pójdzie mi z Timerem ale tutaj też klapa. Czy ktoś mógłby mi "łopatologicznie" wyjaśnić gdzie popełniam błąd? Teraz mam taką sytuację, że tylko raz dokonywany jest pomiar i wyświetlony, w dodatku na obu liniach LCD. [syntax=c] #define wej_2 PC2 #define wej_3...

    Mikrokontrolery Początkujący   20 Lut 2020 21:14 Odpowiedzi: 14    Wyświetleń: 1113
  • atmega8 - przerwania od timer0 i timer1 nie działają razem

    Mam taki problem: chcę w programie wykorzystywać przerwania od przepełnienia dwóch timerów (0 i 1). W timer0 mam obsługę wyśw. LED i opóźnienie dla klawiatury a w timer1, z założenia wywoływanym co 100ms, coś jakby zegar z minutami i sekundami, choć nie jest to najważniejsze bo to program testowy. Problem w tym, że przerwanie od timer1 wcale się nie...

    Mikrokontrolery AVR   28 Lis 2009 22:30 Odpowiedzi: 2    Wyświetleń: 2609
  • Generator funkcyjny DDS na mikrokontrolerze - zniekształcenia przy dużych dX

    Na szczęście zbliżamy się już do końca, udało się wytworzyć stabilne przebiegi właśnie z użyciem Float. [syntax=c] volatile float X, dX; volatile float Y, Y0, Y1; int16_t TAB[VCO_MAXPOINT]; volatile uint32_t X0, X1; int main(void) { dX=153.72; while(1) void SysTick_Handler(void) //podprogram przerwan { X0=X; //pierwszy element X1=X + dX; //następny...

    Mikrokontrolery   11 Gru 2016 11:55 Odpowiedzi: 137    Wyświetleń: 4407
  • INT0 reagowanie na dwukrotne naciśnięcie przycisku

    Obsługa tego w przerwaniu wynika z tego, że układ będzie zasilany bateryjnie i będzie pozostawał w uśpieniu do czasu wywołania przerwania INT. Aby uniknąć drgań styków mam zamiar zastosować kondensator. Mój aktualny pomysł wygląda następująco: [syntax=c] volatile char click=0; ISR(INT0_vect,ISR_NOBLOCK){ timer=0; // click++; while(timer<100 &&...

    Mikrokontrolery   13 Lut 2012 21:25 Odpowiedzi: 2    Wyświetleń: 1046
  • ATmega128 [C] - Pomiar czasu na Timer2 dla sygnału 15-150Hz

    Witam ! Tworzę mały sterownik do auta i mam problem. Dotyczy on pomiaru częstotliwości (a właściwie czasu trwania stanu niskiego lub wysokiego) na Atmedze 128, która po dalszych przeliczeniach będzie mierzyć obroty silnika. Sygnał , który będzie mierzony to prostokąt o wypełnieniu 50% i częstotliwości w granicach 15-150Hz. Jak w tytule pomiar ma się...

    Mikrokontrolery AVR   07 Lip 2016 06:44 Odpowiedzi: 1    Wyświetleń: 981
  • [avr] jak wyjść z watością (zmienną) poza przerwanie

    Pytałem o to samo zadanie w innym temacie, ale zmieniłem koncepcję i już do tamtego tematu się to nie nadaje. Dlatego zakładam nowy temat. W przerwaniu wygenerowanym przez USART_RXC_vect odczytuję wartość wysłana przez port szeregowy. Chcę tą wartość wynieść do main'a. Poniższy napisany przeze mnie kod nie działa: [syntax=c] #define F_CPU 1000000ul...

    Mikrokontrolery AVR   03 Maj 2011 18:59 Odpowiedzi: 4    Wyświetleń: 1181
  • Atmega16 - Obsługa TWI i zegara czasu rzeczywistego

    Zmagam się z odczytaniem czasu układu PCF8583. Napisałem krótki kod na podstawie instrukcji napisanych w manualu Atmegi, który ma odczytać wyłącznie wartość sekund. Problem jaki się pojawił to zatrzymanie programu na funkcji oczekiwania odbioru flagi przerwania po zakończeniu transmisji instrukcji startu magistrali TWI: [syntax=c]while (!(TWCR &...

    Mikrokontrolery AVR   12 Gru 2012 19:30 Odpowiedzi: 3    Wyświetleń: 1494
  • [STM32] Skok do aplikacji użytkownika w bootloaderze CAN dla STM32F103VE - problem

    Witam. Jestem w trakcie pisania bootloadera po magistrali CAN dla STM32F103VE. Opieram się głównie na publikacji AN2557 zamieszczonej na stronie ST. Potrafię przesłać aplikację użytkownika po magistrali CAN do uC i zaprogramować pamięć Flash od wybranego adresu w górę. Na wstępnie odblokowuje pamięć Flash (FLASH_Unlock(); ) następnie podgrywam aplikację...

    Mikrokontrolery ARM   17 Lis 2009 09:05 Odpowiedzi: 8    Wyświetleń: 4223
  • [STM32F103] Implementacja transmisji przez UART w przerwaniach

    Witam, Pracuje nad kodem programu do komunikacji przez UART (mikrokontroler <-> komputer) i zastanawiam się nad sposobem implementacji w przerwaniach. Na razie zrobiłem to w taki sposób: - Nadawanie danych wykonuje w taki sposób, że w programie głównym zmieniam w wskaźniku adres początku tablicy którą aktualnie przesyłam przez UART, w przerwaniu...

    Mikrokontrolery ARM   06 Lip 2018 13:06 Odpowiedzi: 3    Wyświetleń: 714
  • ATmega128 i PCF8583: brak wyzwalania przerwania INT4, jak rozwiązać?

    OK, ale sam program po wyrzuceniu wszystkich dodatków to nadal prawie 500 linii. Więc zamieściłem tylko część inicjującą. Czy coś przeoczyłem? static volatile unsigned char key1=0, key2=0, key3=0, key4=0; static volatile unsigned char odczyt_keys=0; static volatile unsigned char odczyt_time=0; SIGNAL(SIG_INTERRUPT6) { if(!(PINB&0x01))...

    Mikrokontrolery AVR   22 Lut 2011 18:12 Odpowiedzi: 16    Wyświetleń: 2096
  • [C] Nierówne zliczanie impulsów w przerwaniach INT0 i INT1

    Rozwiązanie 1 jest złe. Gdy sygnał A przyjmie poziom aktywny (niski), obsłużysz przerwanie a po chwili sygnał B poziom aktywny w sytuacji gdy A cały czas ma poziom niski, to ne zauważysz sygnału B. Podobnie gdy B aktywny, obsługa przerwania, B i A aktywny. W takich sytuacjach będziesz widział tylko jeden z sygnałów. Co do gubienia przerwania INT 1,...

    Mikrokontrolery AVR   27 Paź 2018 14:56 Odpowiedzi: 20    Wyświetleń: 1419
  • atmega8 - możliwe przyczyny dziwnego zachowania pamięci w programie z przerwaniami

    Przerwanie nie modyfikuje SP (z punktu widzenia przerwanego kodu). Wartość SP po powrocie z przerwania jest taka sama, jak przed wywołaniem. I tu właśnie problem, bo też tak myślałem, dlatego pisałem wcześniej że błędu w logice nie ma. Mój kod nie jest błędem. Dodałem brakujące CLI i kod od godziny chodzi bez zarzutów. Spójrz na to: zapamiętaj SREG...

    Mikrokontrolery AVR   21 Sie 2015 09:34 Odpowiedzi: 26    Wyświetleń: 1482
  • Zliczanie impulsów w przerwaniach - Arduino, błędne wartości impulsów

    Witam wszystkich! Mam problem, otóż stworzyłem prosty projekt, którego zadaniem jest wyświetlanie temperatury/wilgotności z DHT-11 na wyświetlaczu i zliczanie impulsów. Niestety, coś jest nie tak - zliczane są jakieś dziwne wartości, przypuszczam, że błąd wynika z mojej niewiedzy, lub z jakiegoś błędu w składni. Przerwanie działa poprawnie - zapala...

    Arduino   22 Paź 2017 20:28 Odpowiedzi: 21    Wyświetleń: 2709