atmega volatile zmienna

Znaleziono około 861 wyników dla: atmega volatile zmienna
  • Atmega 1280: Czy BUFF_SIZE 8 jest za duże dla UARTBuffer?

    volatile unsigned char UART0recv, UARTBuffer[BUFF_SIZE], UARTCount, UARTGet, rx_counter; A czy przypadkiem tylko pierwsza zmienna będzie volatile przy takiej deklaracji?

    Mikrokontrolery AVR   27 Lut 2010 07:32 Odpowiedzi: 13    Wyświetleń: 1756
  • Jak obsłużyć usypianie i wybudzanie ATmega 32 jednym przyciskiem PD2?

    Witam. Zmontowałem przed chwilą i sprawdzone. Zostaje tylko pozbycie się drgań styków klawisza. [syntax=c]#define F_CPU 16000000UL // Atmega644 #include <avr/io.h> /*biblioteka avr*/ #include <string.h> /*biblioteka napisy*/ #include <stdio.h> /*biblioteka podstawowa C*/ #include <stdlib.h> /*biblioteka C*/ #include <stdbool.h>...

    Mikrokontrolery Początkujący   03 Lis 2019 19:57 Odpowiedzi: 21    Wyświetleń: 1068
  • REKLAMA
  • Nie znalazłeś odpowiedzi? Zadaj pytanie Sztucznej Inteligencji

    Czekaj (2min)...
  • WinAVR: Jak poprawnie zdefiniować zmienną volatile dla ATMega8?

    Taki zapis ( definicja )powinien być w jednym pliku C (zmienna globalna) volatile unsigned char stan = CZEKAJ; w pliku headera (chyba sensor.h) tylko deklaracja extern volatile unsigned char stan; w żadnym wypadku nie można dawać w headerze (pliku *.h) includowanym do wielu plików *.c definicji zmiennej statycznej static unsigned char stan = CZEKAJ;...

    Mikrokontrolery   07 Gru 2006 11:02 Odpowiedzi: 2    Wyświetleń: 1961
  • 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ń: 1362
  • [atmega8] [atmega8][c] Zmiana zmiennej w pętli nie działa w AVR Studio 4. Dlaczego?

    Jeśli zmienna nie jest oznaczona jako "volatile", to kompilator jeśli zdecyduje, że zmienna na nic nie wpływa, może ją zoptymalizować (czytaj: usunąć). Kompilator nie sprawdza, czy zmienna jest używana w przerwaniach, gdyż dla niego są to osobne funkcje, które muszą być wywoływane (a te nie są w twojej funkcji wywoływane). Masz dwa rozwiązania: zmienną...

    Mikrokontrolery AVR   02 Wrz 2008 11:33 Odpowiedzi: 30    Wyświetleń: 3190
  • REKLAMA
  • Atmega 128A - Zapis i odczyt dużych liczb w eeprom przy użyciu języka C

    tak dokładnie jako uint_16_t czyli następująco: volatile uint16_t zmienna = 0; Zastanawiam się czy dobrze mam fusy ustawione - bo nic innego do głowy mi juz nie przychodzi.

    Mikrokontrolery AVR   15 Lis 2020 11:30 Odpowiedzi: 6    Wyświetleń: 672
  • Atmega 32 - kiedy stosować specyfikator volatile w kodzie C?

    Cześć Załóżmy że mam pewną funkcje w której zwiększam zmienną a o jeden. W funkcji main wywołuje funkcje i wynik przypisuje do zmiennej b. Załóżmy też że mam przerwanie które też zwiększa a o jeden. W celu optymalizacji operacje na zmiennej a będą wykonywane w wolnym rejestrze i przy wyjściu z funkcji wynik rejestru zapiszemy do zmiennej załóżmy że...

    Programowanie Początkujący   20 Kwi 2015 12:29 Odpowiedzi: 7    Wyświetleń: 1107
  • AVR Studio: Zmienna volatile int nie zeruje się na rzeczywistym układzie

    Witam. Poniżej przedstawiam dość specyficzny problem. Mamy np zmienną k zadeklarowaną następująco: volatile int k; Jest ona zadeklarowana nie w głównej funkcji main tylko w funkcji bitin(); Na początku jest ona zerowana. k = 0; I tu zaczyna się ciekawie. W programowej symulacji działa wszystko ok. Natomiast gdy odpalam na rzeczywistym układzie zmienna...

    Mikrokontrolery AVR   16 Maj 2010 15:30 Odpowiedzi: 7    Wyświetleń: 1314
  • AVR/ATmega8 - Gdzie stosować volatile przy tablicach i strukturach?

    Witam, ostatnio pisze bibliotekę służącą do eliminacji drgań styków w przyciskach. Będzie to działało w ten sposób, że w timerze wywołujemy funkcje obniżającą czas po którym możemy wcisnąć przycisk kolejny raz. Tak samo w kodzie - używamy funkcji z biblioteki która robi wszystko za nas :) Jednak napotkałem na taki problem - gdzie zastosować volatile...

    Mikrokontrolery AVR   28 Sty 2017 07:43 Odpowiedzi: 40    Wyświetleń: 2559
  • REKLAMA
  • [avr-gcc] Kiedy używać zmiennej volatile w programowaniu mikrokontrolerów AVR?

    Witam, Czy może mi ktoś w przystępny sposób wytłumaczyć kiedy zmienna powinna mieć typ volatile a kiedy nie musi?? Szukałem na google, czytałem kilka definicji tej zmiennej, ale dalej nie wiem kiedy ją używać (w programowaniu mikrokontrolerów) a kiedy nie. Wiem (tzn. wyczytałem :P) że jeżeli zmienna globalna ma być zmieniana w przerwaniach, to wtedy...

    Mikrokontrolery   14 Lis 2005 12:26 Odpowiedzi: 6    Wyświetleń: 7978
  • Nano i Micro - Błędne wartości w zmiennych volatile (wielobajtowych)

    Mam następujący problem: Gdy zmieniam w przerwaniu zawartość zmiennej (co najmniej dwubajtowej) z kwalifikatorem volatile program w loop odczytuje czasem "hybrydową" wartość w której część bajtów pochodzi ze starej, a część z nowej wartości. Podobnie bywa przy odczycie w przerwaniu zmian wprowadzanych w loop. Sądzę, że problem pojawia się gdy przerwanie...

    Arduino   26 Lip 2016 16:55 Odpowiedzi: 51    Wyświetleń: 3477
  • Jak zadeklarować zmienną jako volatile w Bascom AVR?

    Mam problem w Bascom AVR. Program w pętli głownej ma wyświetlać odczyt na LCD 3,5 cyfry, tylko to. Wyświetlana wartość -zmienna jest modyfikowana w obsłudze przerwania. Problem jest taki, że pętla główna (wyświetlająca) nie widzi zmian zmiennej i cały czas wyświetla np "0". Pewnie jest to ułatwienie przy kompilacji - jeśli zmienna nie jest zmieniana...

    Mikrokontrolery   22 Kwi 2008 20:52 Odpowiedzi: 5    Wyświetleń: 1188
  • ATmega reset i utrata EEPROM silne zakłócenia EMI

    Witam ponownie, próbowałem ogarnąć na początek funkcję eeprom_write_block. Oto fragment kodu: [syntax=c] typedef struct { // tu są chary, inty, tablice } TEngine; // zmienna w RAM volatile TEngine Engine; // Kopia będzie w EEPROM TEngine EEMEM eeEngine; // i gdzieś w kodzie dalej eeprom_write_block( &Engine, &eeEngine, sizeof(Engine) ); [/syntax] Przy...

    Mikrokontrolery AVR   08 Sty 2020 21:50 Odpowiedzi: 7    Wyświetleń: 1050
  • REKLAMA
  • ATMega328P Arduino - Mniej sprzętowych PWM do dyspozycji niż trzeba

    Raczej nie wydłuży obsługi przerwania,a w przypadku uC wydajniejszych od ATmega wręcz ją skróci, bo modyfikacje zmiennej bez atrybutu volatile zajmują zwykle mniej czasu, niż modyfikacje stanu portu. Być może w AVR jest tak samo - to zależy i od sprzętu i do kompilatora. Po prostu te operacje, które wykonujesz na porcie, należy wykonywać na zmiennej...

    Arduino   06 Gru 2014 20:50 Odpowiedzi: 9    Wyświetleń: 1419
  • ATmega128 wew1MHz WINAVR [C] + lcd PG12864 złe wyświetlanie

    Witam ! Tracąc dziesiątki godzin szukania w Internecie i dwa tygodnie prób i błędów z w/w LCD proszę o pomoc (i pokazanie błędu) Dołączam kod w http://obrazki.elektroda.pl/7865128700_1... [syntax=c][/syntax] // --------- sterownik LCD -> chyba NT7108/NT7107 (podobny do KS0108 ) --------------- // ATmega 128 + POWERTIP -> LCD PG12864...

    Mikrokontrolery Początkujący   21 Lut 2015 16:44 Odpowiedzi: 5    Wyświetleń: 1023
  • Atmega 32 8MHz - kod do obsługi wyświetlacza LED nie działa, prośba o sprawdzenie

    Cześć Coś mi kod do obsługi wyświetlacza LED niedziała. Czy moglibyście rzucić na to okiem. [syntax=c] #ifndef DISPLAY_LED_H_ #define DISPLAY_LED_H_ //Załączenie plików bibliotecznych #include<avr/io.h> #include<avr/pgmspace.h> #include<avr/interrupt.h> //Deklaracja zmiennych na których wykonywane są operacje w przerwaniu extern volatile...

    Mikrokontrolery AVR   10 Maj 2015 11:43 Odpowiedzi: 5    Wyświetleń: 852
  • Atmega8A - Błędne wskazania miernika częstotliwości

    Pomóżcie mi bo mnie krew zalewa. Atmega mierzy impulsy na wejściu zewnętrznego przerwania INT1. Timer2 służy jako podstawa czasu. Od około 240 kHz na INT1 miernik mierzy nie poprawnie, to znaczy nie występuję przerwania od Timera2 w trybie CTC i program wisi w pętli while, ale gdy przełączę zakres na generatorze na mniejszy to wyświetla mi się wartość...

    Mikrokontrolery AVR   29 Kwi 2013 15:02 Odpowiedzi: 1    Wyświetleń: 1458
  • [ATMEGA16/32] [ATMEGA16/32][C] Timer2 - jak ustawić przerwanie co 1s?

    łał :) Super opis - co prawda wszystkiego się domyślałem i upewniałem przy próbach uruchomienia. A jak wygląda dokładniej ta praca asynchroniczna - technicznie wiem tylko programowo jak to obsluzyc. Drugi obecnie problem to wieszanie się / resetowanie mojego programu. Troszkę go zmodyfikowałem obecnie ma on postać: // Testowanie timera 2 #define F_CPU...

    Mikrokontrolery AVR   21 Paź 2008 20:20 Odpowiedzi: 5    Wyświetleń: 4430
  • Jak zmusić WinAVR do kompilacji instrukcji w pętli nieskończonej?

    Podpinam sie pod wątek. Sytuacja jest podobna. Oto kod, z ktorym nie moge sobie poradzic: #include <avr/io.h> #include <avr/interrupt.h> #define tau0 0; volatile unsigned char liczt=0; int main(void) { DDRD=0xFF; TIMSK=1<<TOIE0;//zezwolenie na przerwania od TC0 TCNT1=tau0; //wpisz stałą czasowa do TCNT0 TCCR0=0x07; //preskaler...

    Mikrokontrolery   30 Mar 2006 16:41 Odpowiedzi: 9    Wyświetleń: 1497
  • Atmega 328p - UART odbieranie stringów z Matlaba - niepełne dane

    Okej, ogólnie to działa, wielkie dzięki za tamto. Mam jednak dalszy problem troszkę. Ogólnie chcę osiągnąć coś takiego, że wysyłam najpierw z Matlaba liczbę - jakąś flagę, po której uC wejdzie do odpowiedniej pętli. Po wejściu do tej pętli dopiero w niej ma odbierać wysłaną z Matlaba wartość. Czyli np. najpierw wysyłam liczbę równą 2 z Matlaba do uC....

    Mikrokontrolery AVR   03 Sty 2017 15:14 Odpowiedzi: 18    Wyświetleń: 1563
  • Poprawa kodu dla 5-bajtowej ramki USART na ATMEGA8L - CRC i odbiór danych

    Witam! Mam prośbę o pomoc w poprawieniu kodu. Otóż mam zadeklarowane globalnie następujące zmienne: [syntax=c] volatile uint8_t x; volatile uint8_t recaive_complete; volatile uint8_t block_recaiver; volatile unsigned char bufferin[5]; [/syntax] W programie głównym mam 2 funkcje w pętli while. [syntax=c] while(1) { ReadKeypad(); ComRdFrame(); }[/syntax]...

    Mikrokontrolery AVR   11 Paź 2012 18:07 Odpowiedzi: 5    Wyświetleń: 1099
  • Jak sterować serwomechanizmami modelarskimi z mikrokontrolera ATmega16?

    Witam Was ponownie. Chciałbym abyście odnieśli się do tego kodu. Steruje na razie 1 serwem stąd atmega 8mhz (aby móc wysterować licznik2 do wartości 20ms) Mam rozumieć, że to jest programowy pwm? A może są jeszcze inne sposoby? #include <avr/io.h> #define F_CPU 8000000 #include <util/delay.h> #include <avr/interrupt.h> int volatile...

    Mikrokontrolery AVR   14 Sie 2009 15:49 Odpowiedzi: 42    Wyświetleń: 11926
  • Ładowanie lub odczyt z tablicy w języku C dla atmega 8

    Dodałem koszmarnie długi czas czekania po wciśnięciu klawisza i wygląda na to, że działa. Można wyświetlać kolejne cyfry z tablicy i nie ma przeskoków (losowych wyświetleń). W pętli głównej sprawdzam, czy jest wciśnięty przycisk i czy zmienna b ma wartość co najmniej 10. Jeśli tak, to program zabiera się za czynności przypisane do klawisza, a przerwanie...

    Mikrokontrolery Początkujący   16 Gru 2013 17:49 Odpowiedzi: 34    Wyświetleń: 5022
  • ATMEGA 8 + LCD - Zawieszanie programu przy użyciu sei() i przerwań

    Witam, mam problem z programem na mikroprocesor. Na początek dodam, że prototyp, zanim poszedł w odstawkę pół roku temu działał prawidłowo. Program w tym momencie ma za zadanie wyświetlić 4 zmienne na wyświetlaczu. Uruchomienie przerwań zawiesza program. W zależności od tego kiedy zostaną rozpoczęte, skutkuje to innym efektem. Umieszczając sei(); na...

    Mikrokontrolery AVR   25 Maj 2013 12:53 Odpowiedzi: 6    Wyświetleń: 2034
  • Atmega 169 - Konfiguracja PWM dla diody, brak zmiany jasności

    Witam Chciałbym napisać program, który będzie obsługiwał 12 diodek ze zmianą jasności świecenia każdej z nich. Chciałbym jednak najpierw zacząć od obsługi pojedynczej diody, żeby zając się potem częścią stricte programistyczną. Żadna z nich nie jest wyprowadzona do nóżki OC0A , OC1A, OC1B. Zdecydowałem się na tryb CTC, użyłem licznika drugiego. Poniższy...

    Mikrokontrolery Początkujący   18 Sty 2016 08:42 Odpowiedzi: 8    Wyświetleń: 972
  • Atmega 328P - Sterownik pomp do kotła +LCD zawiesza się

    Witam Zbudowałem prosty sterownik pomp do kotła węglowego bez podajnika (planuję dorobić wentylator, ale narazie jest odłączony). Problem polega na tym, że codziennie rano sterownik jest jakby zawieszony. tj LCD pokazuje cały czas to samo, nie reaguje na przyciski, nie załącza przekaźników. Pomaga odłączenie i podłączenie na nowo zasilania. Jestem bardzo...

    Mikrokontrolery   26 Kwi 2015 20:38 Odpowiedzi: 10    Wyświetleń: 1827
  • Atmega 16 - nieprawidłowe działanie przerwań INT0, INT1 przy 16MHz

    Mam problem z uzyskaniem oczekiwanego działania przerwań INT0 i INT1. Procesor to ATMEGA 16 z zewnętrznym taktowaniem 16MHz. PD2, PD3 są skonfigurowane jako wejścia z podciągnięciem do 1. W obu przerwaniach jedyną czynnością jest inkrementowanie zmiennych zdefiniowanych jako volatile uint32_t. ISR(INT0_vect) { N_T++; } ISR(INT1_vect) { N_F++; } Przerwania...

    Mikrokontrolery AVR   08 Kwi 2014 12:12 Odpowiedzi: 2    Wyświetleń: 2094
  • Czy ATMega 8 wystarczy do sterowania wzmacniaczem stereo z pilotem?

    Czyli rozumiem, że tą dodatkową diode w przyciskach podłączoną do int uC wpiąłem dobrze. Nie rozumiem tylko tej odpowiedzi: "*to raczej EEPROM jest nieulotny,SRAM jest podtrzymywana" Ja rozumiem ją tak że obie pamięci są nieulotne a tak chyba nie jest. Chodzi mi o taką, która nie straci swojej zawartości po wyłączeniu zasilania bo chce do niej zapisywać...

    Mikrokontrolery   28 Lut 2009 23:41 Odpowiedzi: 49    Wyświetleń: 8462
  • [atmega] Błąd w komunikacji UART na ATmega z użyciem avr-gcc i C - jak naprawić?

    Witam, mam problem z kodem ( no właśnie, to sie okaże :) ): #define F_CPU 16000000UL #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/pgmspace.h> #define UART_BAUD 115200 //prędkość transmisji #define UART_CONST (F_CPU/((16*UART_BAUD)-1...

    Mikrokontrolery AVR   11 Paź 2009 22:31 Odpowiedzi: 3    Wyświetleń: 2183
  • Atmega88PA i RS485 - błędy w komunikacji przy echosondzie

    Szanowni Koledzy, Buduję kontroler sterujący urządzeniami zewnętrznymi. Na chybcika skleciłem układ-programator AVR przez łącze LPT. Program napisany i skompilowany w WinAVR-20100110 (Win2k). Wszystko działa poprawnie (Linux Slackware 10 + avrdude) jeśli idzie o programowanie flesha. Od strony elektronicznej też jest wszystko w porządku (jak manual...

    Mikrokontrolery   15 Lip 2010 16:09 Odpowiedzi: 31    Wyświetleń: 6783
  • Lampka RGB by molszewski

    Dzięki wszystkim za opinie. Oddałem dziś projekt został oceniony na 5;] Dokonałem kilku zmian w programie więc wrzucam nową wersję: http://obrazki.elektroda.pl/8149391200_1... Jeśli już eliminujesz drgania styków programowo i w dodatku z użyciem timera, to mogłeś się pokusić o tak samo zrealizowane opóźnienia. Mnóstwo pamięci pożera...

    DIY Konstrukcje   08 Maj 2013 16:15 Odpowiedzi: 24    Wyświetleń: 20745
  • Atmega16: Błędy kompilacji przy użyciu funkcji w przerwaniu INT0

    Jeśli chcesz gotowego rozwiązania to napiszę jak sam robię takie systemy: Deklaruję pewną strukturę globalną, koniecznie volatile, w której umieszczam flagi w zależności od tego ile ich potrzebuję, np.: [syntax=c]volatile struct sZmienna { unsigned char Pomiar :1; unsigned char Timer :1; unsigned char Odswiez_LCD :1; //itd. }Zmienna;[/syntax] Następnie...

    Mikrokontrolery AVR   12 Lip 2012 19:31 Odpowiedzi: 29    Wyświetleń: 2216
  • Programowanie mikrokontrolera Atmega 328P dla wielokanałowego termometru C.O.

    Dzieje się tak, ponieważ po wyjściu z ostatniej pętli czyścisz ekran, zmieniasz wartość zmiennej "a" i kończysz program - wracasz z funkcji main(). Zapomniałeś dodać pętlę nieskończoną, while(1). Rozpoczyna się ją za wstępną inicjalizacją. W twoim przypadku, będzie to za ekranem powitalnym. Skoro zaczynasz przygodę z programowaniem, to napiszę jeszcze...

    Programowanie Początkujący   18 Sie 2021 21:27 Odpowiedzi: 9    Wyświetleń: 639
  • Atmega644pa - Timer1 nie odmierza równo 1 sekundy w trybie CTC

    Pamiętaj że sama transmisja też swoje trwa :) a poza tym nie pokazałeś funkcji printf (może ona bawi się w _delay_ms() ?) Zauważ również że przerwanie występuje niezależnie od transmisji, może dochodzić do takiej sytuacji ze raz przerwanie zmienić Ci wartość zmiennej tuż przed transmisją a raz tuż po niej i to spowoduje Twoje opóźnienia. Spróbuj blokować...

    Mikrokontrolery AVR   18 Wrz 2013 14:49 Odpowiedzi: 15    Wyświetleń: 2955
  • 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ń: 1431
  • 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ń: 1086
  • [atmega162][c][asm] Deasemblacja - rejestr PIN ciekawostka

    Rozumiem, że nie masz kodu źródłowego? ;) Jako osoba pisząca od wielu lat w C i mająca okazje w tym czasie obejrzeć wiele różnego rodzaju "wynalazków" powiem, że to co napisałeś w pierwszym poście może mieć sens. Tzn. spotkałem się z praktyką pisania kodu testującego flagę bitową w nst. sposób: if ((zmienna & STALA) == STALA) // na ustawienie...

    Mikrokontrolery AVR   18 Cze 2010 14:29 Odpowiedzi: 6    Wyświetleń: 1861
  • Brak stabilnych wskazań po konwersji A/D w ATMega 8

    U mnie ta funkcja tyle że na unsigned long działa dobrze. Kompilowana pod IAR na MSP430. Dlaczego zmienna temp jest typu volatile? to chyba trochę bez sensu.

    Mikrokontrolery   19 Wrz 2008 00:56 Odpowiedzi: 22    Wyświetleń: 2928
  • AVR/Atmega168/CAVRStudio4 - Delay zrobiony na timerze nie działa - why?

    Zmienna count powinna być volatile .

    Mikrokontrolery AVR   09 Paź 2012 00:32 Odpowiedzi: 2    Wyświetleń: 1680
  • Atmega128, AVR Studio, WinAVR Problem z prostym kodem

    Znalazłem conajmniej 2 błędy 1. Zadeklaruj enterRx jako volatile 2. Najpierw przypisujesz zmiennej enterRx wartość 1, a potem sprawdzasz czy zmienna ma wartość '1' (czyli 49) Spróbuj z tymi 2 zmianami i powinno zacząć chodzić Mirekk36, może on ma procedury LCD buforowane (ja zwykle takich używam), wtedy to niebyłby taki wielki błąd, ale wnikał niebędę.

    Mikrokontrolery AVR   16 Lut 2010 23:00 Odpowiedzi: 6    Wyświetleń: 1888
  • [C] Atmega32 przerwania. Zmienna nie działa w programie.

    Dopisz "volatile".

    Mikrokontrolery AVR   11 Lis 2010 16:43 Odpowiedzi: 3    Wyświetleń: 1797
  • ATMega 32 nie wykrywa szybkiego impulsu z czujnika szczelinowego przy 120m/s

    To jest na avr tak dla pewności. Korzystam z biblioteki do HD44780 Radosława Kwiecienia. W funkcji [syntax=c] void LCD_WriteText(char * text) { while(*text) LCD_WriteData(*text++); }[/syntax] Potrzebuje dać char* i nie wiem jak do tego przekonwertować w najprostszy i najszybszy sposób. Jeszcze raz przypomne, chce by zmienna [syntax=c]volatile uint8_t[/syntax]...

    Mikrokontrolery AVR   07 Paź 2017 14:55 Odpowiedzi: 32    Wyświetleń: 3939
  • [AtMega16] [AtMega16][C] - Implementacja multitaskingu dla odczytu ds18b20 i sterowania GPIO

    Powrócę jeszcze do tematu. Timery programowe to objaśnił Mirekk36 w swojej książce oraz artykułach i wideo poradnikach, bardzo dobrze je się stosuje. Jest to proste, wystarczy ustawić jakiś timer w tryb CTC i wywoływać przerwanie co jakiś zamierzony czas (stosuje około 10ms). F_CPU/Prescaler/100 Zaokrągloną wartość wpisujemy do rejestru OCRx. W przerwaniu...

    Mikrokontrolery AVR   13 Kwi 2013 20:38 Odpowiedzi: 24    Wyświetleń: 2658
  • [Atmega 2560] Atmega 2560: Skoki w debugowaniu AVR Studio, pomijanie instrukcji w pętli for

    SIGNAL(SIG_OVERFLOW0){ straznik = 0; cli(); } #1 Skoro 'straznik' przyjmuje tylko wartości 0 lub 1, to po co 16-bitowy typ 'int'. Wystarczy w zupełności 'uint8_t'. Ta sama uwaga dotyczy również zmiennych 'i' oraz 'j' w pętli 'for'. #2 Jeżeli używasz zmiennej 'straznik' zarówno wewnątrz procedury obsługi przerwania i w programie...

    Mikrokontrolery AVR   05 Gru 2010 22:49 Odpowiedzi: 7    Wyświetleń: 1410
  • [ATmega16][C] - ADC odczyt z dalmierza i zapalanie diody.

    Po pierwsze zapomniałeś po ustawieniu bitu ASCC poczekać na zakończenie konwersji, czyli: [syntax=c]while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji [/syntax] Ustawiłeś napięcie referencyjne 2,56V. Jaki sygnał napięciowy na wyjściu daje twój czujnik? W jakim zakresie napięć? Zmienna pomiar nie musi być w Twoim przypadku volatile,...

    Mikrokontrolery   11 Lut 2013 12:30 Odpowiedzi: 12    Wyświetleń: 2319
  • Atmega16 i AVR Studio - problem z multipleksowaniem i funkcją inkrementacji

    Drogi kolego , popełniłeś szkolny błąd :D W procedurze obsługi przerwania Timer0 masz ... SIGNAL(SIG_OVERFLOW0) //obsługa multipleksowania wyswietlaczy { //extern unsigned char wyswietl[7]; unsigned char licznik;//<-- ********** błąd !!!!!!!!!!! ... zmienną licznik , tyle że jest to zmienna lokalna , czyli istnieje w pamięci...

    Mikrokontrolery   17 Paź 2006 18:33 Odpowiedzi: 2    Wyświetleń: 1246
  • Kompilator pomija pętlę do-while w kodzie C - jak to naprawić?

    Treść linku - Znam i rozumiem. uC to ATmega 16. Jeżeli możesz, wytłumacz mi : cytat od "tmf"" "#define PIN(x) (*(&x - 2)) To jest błędne. Powinno być volatile, ....." Co miał na myśli, jak z tego zrobić volatile. Czy chodziło Mu o to: unsigned char volatile zmienna; zmienna=PINA; lub zmienna=PIN(PORTA); a dalej, już w kodzie: }while(zmienna...

    Mikrokontrolery AVR   15 Lut 2012 22:41 Odpowiedzi: 40    Wyświetleń: 3300
  • [ATmega16][C/AVRStudio] Układ nadążny za słońcem+LCD+MENU

    Podejrzewam, że chodzi o to, że ja robię pomiary bezpośrednio, bez żadnych boczników i źle to konwertuje. Tylko gdzie tkwi szkopuł? Akcja społeczna włącz myślenie. lcd_puts(dtostrf(Voltage[i&#... Jak kolega wyjaśni sens dzielenia wartości zmierzonej przez 50 ? Przy zakresie pomiarowym <0, 5> V oraz 10 bitowym...

    Mikrokontrolery AVR   10 Lis 2010 22:21 Odpowiedzi: 104    Wyświetleń: 14628
  • [ATMEGA16] [ATMEGA16][C] Problem z wykrywaniem przycisków do zmiany numeru serwa

    Już prawie masz to, co trzeba. Jeśli zmienna timer zwiększana jest co 20 ms, to zrób: if (timer >= 2) { /* albo więcej, ale 40ms to i tak dużo */ uint8_t zmiany = debounce(); /* wersja freddiego */ timer = 0; if (zmiany & _BV(PIN_MINUS)) servonumber -= 1; if (zmiany & _BV(PIN_PLUS)) servonumber...

    Mikrokontrolery   12 Wrz 2008 10:58 Odpowiedzi: 21    Wyświetleń: 6914
  • Programowanie mikrokontrolera Atmega324a-pu dla układu LED - prośba o weryfikację kodu

    teraz już program jako tako działa z główną zmianą Teraz: https://filmy.elektroda.pl/58_1696779169... Teraz jest problem, że w trybie 1 rozjeżdzają się timingi i kolory oraz ich jasność. Tryb 2 za to po osiągnięciu maksymalnej wartości na każdej zmiennej błyska oślepiająco. Nowy kod: [syntax=c]/* * main.c * * Created on: 14 wrz 2023 * Author: Dzieci...

    Mikrokontrolery Początkujący   09 Paź 2023 15:54 Odpowiedzi: 11    Wyświetleń: 837
  • Zliczanie impulsów w przerwaniach - Arduino, błędne wartości impulsów

    Kłania się pojęcie funkcji w języku C. setup() i loop() to też są funkcje. Do testowania stanu styków potrzeba tylko jednego przerwania timera, nic więcej. Po co mnożyć przerwania, czy to od zmiany stanu linii, czy to od dodatkowych timerów? Przy jednopoziomowym systemie przerwań, takim, jaki ma ATmega, o ile programista nie udziwnia nic na siłę, zmienna...

    Arduino   22 Paź 2017 20:28 Odpowiedzi: 21    Wyświetleń: 2724
  • [ATmega 644p][C] Analizator - problem z przerwaniem

    volatile jest konieczne jeśli zmienna może zmienić swój stan niezależnie od głównego ciągu instrukcji, a taka zmiana jest niemożliwa do prześledzenia przez kompilator. Przykłądem jest np. sprawdzanie stanu zmiennej w jednym miejscu, kiedy ta zmienna może niezależnie (np. w przerwaniu) ulec zmianie. Bez tej wiedzy kompilator może zoptymalizować i wyrzucić...

    Mikrokontrolery AVR   01 Wrz 2010 14:56 Odpowiedzi: 14    Wyświetleń: 3536
  • [ATmega32] Jak działa funkcja millis() w Arduino i konfiguracja Timer2 w ATmega32?

    W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący liczbę milisekund. W programie należy korzystać...

    Mikrokontrolery AVR   16 Paź 2012 10:38 Odpowiedzi: 7    Wyświetleń: 2361
  • [AVR ATMEGA 8 C] Multipleksowanie, problem z inkrementacją

    Zmienna liczba musi być typu volatile, to tak na szybko. ;) Dodano po 13 No zrób jakieś opóźnienia, żeby wyeliminować drgania styków.

    Mikrokontrolery AVR   10 Lip 2009 16:30 Odpowiedzi: 2    Wyświetleń: 1215
  • [ATmega] [ATmega][C] Zmienna globalna zwraca 0 przy wywołaniu funkcji w main()

    A ta zmienna globalna napewno wypełniona danymi jest? Bo zrobiłem mały teścik: basemodule.h: typedef struct { uint8_t blockParam; uint8_t signedMove; uint8_t deviceInitialAddress; } glob; uint8_t returnBlockParam(void); basemodule.c: volatile static glob globalVariables = { .blockParam = 127, .signedMove = 23, .deviceInitialAddress...

    Mikrokontrolery AVR   28 Lip 2009 14:05 Odpowiedzi: 8    Wyświetleń: 1533
  • Atmega 16: Timer2 blokuje Timer0 przy wyświetlaniu na 7-segmentowych wyświetlaczach

    a tak poza tym jak chcesz inkrementować zmienną utworzoną wewnątrz timera która nie ma operatora volatile :?: O której zmiennej piszesz? O zmiennych: Tczas ? - nie ma takiej potrzeby, bo jest to zmienna używana tylko w przerwaniu dlatego deklaracja Static jest prawidłowa? i ? - w pierwszym kodzie wklejonym w tym temacie jest deklaracja volatile. Ale...

    Mikrokontrolery AVR   30 Sie 2011 22:58 Odpowiedzi: 11    Wyświetleń: 1492