atmega volatile zmienna

Znaleziono około 463 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ń: 1717
  • 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ń: 603
  • REKLAMA
  • Nie znalazłeś odpowiedzi? Zadaj pytanie Sztucznej Inteligencji

    Czekaj (1min)...
  • 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ń: 2949
  • 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ń: 582
  • REKLAMA
  • 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
  • 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ń: 3708
  • REKLAMA
  • 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ń: 2868
  • 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
  • ATMEGA8a, USART - ATMEGA8 i aplikacja w C++. Komunikacja po rs232.

    Witam. Od dość długiego czasu zmagam się z projektem ramienia i aplikacji nim sterującej. Cały projekt jest już prawie ukończony, poza komunikacją usart, która przysparza mi olbrzymich problemów. Aplikację napisałem w visualu. W skrócie, po kliknięciu przycisku "wyślij" program wysyła po serial porcie 18 bajtów (6x[bajt kontrolny+wybór serwa+wartość...

    Mikrokontrolery AVR   13 Cze 2015 22:15 Odpowiedzi: 10    Wyświetleń: 1614
  • 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ń: 1398
  • 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ń: 1020
  • [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ń: 1852
  • 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ń: 1650
  • 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ń: 1867
  • 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ń: 2709
  • [C] Atmega32 przerwania. Zmienna nie działa w programie.

    Dopisz "volatile".

    Mikrokontrolery AVR   11 Lis 2010 16:43 Odpowiedzi: 3    Wyświetleń: 1785
  • 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ń: 1353
  • [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ń: 2646
  • 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ń: 3279
  • [ATmega 644p][C] Analizator - problem z przerwaniem

    void InitTimer(void) { TCCR1B |= _BV(CS11); TCCR1B |= _BV(WGM13); TCCR1B |= _BV(WGM12); TIMSK1 |= _BV(OCIE1B); OCR1B = 12500; } w tym trybie timer liczy do rejestru ICRn którego nigdzie nie ustawiasz, nie powinieneś ustawiać bitu WGM13 lub ustawić rejestr ICRn na większy od OCR1B (wtedy także musisz...

    Mikrokontrolery AVR   01 Wrz 2010 14:56 Odpowiedzi: 14    Wyświetleń: 3452
  • [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ń: 6887
  • [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ń: 1404
  • 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 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ń: 1191
  • Atmega32[C]voltomierz z dwoma progami napięć załącz/wyłącz

    ...proszę o sprawdzenie i korektę błędów z komentarzem... //--------------------------------------... // >>>>>>>>>>... V O L T O M I E R Z <<<<<<<<<<... //--------------------------------------... //##################...

    Mikrokontrolery AVR   10 Wrz 2010 09:37 Odpowiedzi: 18    Wyświetleń: 2889
  • [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ń: 1491
  • Atmega2560 - zmienna i4 nie inkrementuje się cyklicznie, UART wysyła tylko raz

    Koledzy, dlaczego zmienna i4 nie jest cyklicznie inkrementowana? Przynajmniej na porcie UART jest wysyłana tylko zwiększona o jeden i dalej już bez zmian. Dioda LED miga poprawnie. Problem pojawił się przy próbie wysyłania tablicy danych. Tablica jako taka jest odbierana na PC poprawnie, ale bez zmian poszczególnych bajtów. Do obsługi UART wspomagam...

    Mikrokontrolery AVR   25 Lip 2017 09:11 Odpowiedzi: 15    Wyświetleń: 1422
  • 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ń: 996
  • 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ń: 996
  • 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ń: 825
  • [ATMega168] Jak obsłużyć przerwania przycisków i timera w ATMega168 z kwarcem 32,768 kHz?

    Oprócz tego co napisał janbernat: czy zmienna second jest zadeklarowana jako volatile? Jeżeli nie to tak zrób, a tutaj jest wytłumaczenie dlaczego: http://mikrokontrolery.blogspot.com/2011... Pokazuj cały swój program, a nie tylko wycinki.

    Mikrokontrolery Początkujący   20 Gru 2011 10:00 Odpowiedzi: 31    Wyświetleń: 5114
  • Atmega 32 - PWM 8bit na 8MHz - problem z kodem, nie działa poprawnie

    Cześć Mam taki kod ale niewiem w czym lezy problem czy możecie mi pomóc [syntax=c] //Dołączenie plików bibliotecznych #include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> //Deklaracja funkcji void initialization(void); //Powołanie zmiennych globalnych wykorzystywanych w przerwaniu volatile uint8_t licznik_1; volatile...

    Mikrokontrolery AVR   16 Maj 2015 13:13 Odpowiedzi: 10    Wyświetleń: 936
  • 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ń: 1483
  • [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ń: 2310
  • [ATmega16][C/AVRStudio] Układ nadążny za słońcem+LCD+MENU

    jeżeli zmienna 'a' jest zadeklarowana jako globalna i jako volatile, to jest to ta sama zmienna zarowno dla main() jak i dla przerwania, więc w main() nie bedzie sie zerowac (no chyba ze wpiszesz ze a = 0 to oczywistym że sie wyzeruje)

    Mikrokontrolery AVR   10 Lis 2010 22:21 Odpowiedzi: 104    Wyświetleń: 14544
  • Atmega32/16 - zliczanie impulsów i ustawienie wyjścia po warunku w kodzie C

    na atmedze i tak typ double jest równy typowi float. Zmienne x i kat powinny być zadeklarowane jako volatile. aha no i często warunki typu if(zmienna == 43.342) zwracają fałsz, nawet jak wpiszesz zmienna = 43.543; if(zmienna == 43.543) {cos} to "cos" się może nie wykonać, bezpieczniej jest tam dać znak nierówności if(zmienna...

    Mikrokontrolery AVR   14 Sie 2010 12:48 Odpowiedzi: 3    Wyświetleń: 1370
  • 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ń: 1949
  • 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ń: 822
  • [ATmega64] [ATmega64][C] Zawieszanie programu przy odczycie zmiennej w przerwaniu TIMER0

    Przez ostatnie 2h doszedłem do tego w czym tkwi problem zarówno w obsłudze przerwania od timera0 oraz od zewnętrznego INT1. Problem polega na tym że zmienna globalna którą wykorzystuję jako flagę istnieje tylko w obsłudze przerwania,flaga nie jest widoczna w głównej pętli programu lub po obsłudze przerwania resetuje się ATmega. Wywnioskowałem to gdy...

    Mikrokontrolery AVR   26 Gru 2009 02:52 Odpowiedzi: 9    Wyświetleń: 4049
  • Błędny odczyt LM35 na wyświetlaczu 7-segmentowym z ATmega16

    ADMUX=0b10000000; //kanał 7 ADC Zamiast 7 ustawiasz zerowy kanał ADC, a ten pin wykorzystujesz jako wyjście na wyświetlacz przecież... nic dziwnego, że bzdury wychodzą. O co chodzi z tym mnożeniem przez 100 (i dlaczego w przerwaniu, do tego jeszcze na zmiennej globalnej)? Jeśli już to powinno być przez 2 (wtedy wystarczą liczby 8-bitowe) albo (na 16-bitowych)...

    Mikrokontrolery   11 Sty 2011 10:52 Odpowiedzi: 11    Wyświetleń: 1524
  • [Atmega32][C] Zliczanie kliknięć przycisku w timerze, eliminacja drgań przycisku

    [syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...

    Mikrokontrolery AVR   22 Lis 2018 21:11 Odpowiedzi: 7    Wyświetleń: 1074
  • ATMEGA 8 + LCD - Zawieszanie programu przy użyciu sei() i przerwań

    Chyba trochę mały ten bufor na napis, w dodatku na stosie (pozostałe bufory tak samo). Zajeżdżasz sobie stos, więc nie dziw się, że się "cuda" dzieją.

    Mikrokontrolery AVR   25 Maj 2013 12:53 Odpowiedzi: 6    Wyświetleń: 1989
  • 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ń: 1231
  • 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ń: 1479
  • [ATMega16] ATMega16: Niezgodne wyniki pomiaru czasu impulsów w mikrosekundach

    Dzięki za tak szybkie odpowiedzi :-) Rozumiem, ze zmienne zadeklarowales jako volatile, czy zapomniales o tym?:) Druga sprawa - komplikujesz. Ustaw 16-bitowy timer tak, zeby np. mial impuls co 1us, albo czesciej, w zaleznosci jaka potrzebujesz rozdzielczosc. Tak, zmienne mam jako volatile, ale rzeczywiście nie policzyłem, że counter tak szybko się przepełnia...

    Mikrokontrolery AVR   05 Lis 2009 19:48 Odpowiedzi: 11    Wyświetleń: 3979
  • Atmega 32 - kiedy stosować specyfikator volatile w kodzie C?

    Dlatego potrzebne jest blokowanie przerwań. Dodać należy, że dla przykładu podanego przez kol. albertb, że w przypadku mikrokontrolerów AVR przy wejściu w funkcję obsługi przerwania następuje automatyczne zablokowanie przerwań, więc pod tym względem operacje w tej funkcji są atomowe (wyjątek gdy użyjemy ISR_NOBLOCK wtedy pierwszym rozkazem w funkcji...

    Programowanie Początkujący   20 Kwi 2015 12:29 Odpowiedzi: 7    Wyświetleń: 1098
  • 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ń: 1383
  • Atmega644PA - Obsługa przerwania, multipleksowanie ADC

    Powiem tak, zdążyłam posiedzieć trochę nad Twoją procedurą Piotruś i jakoś pokombinować żeby zrobić przerwanie od timera, tylko sie pogubiłam i jeszcze troche musze posiedzieć zanim to mi ruszy. Piotruś nie bardzo rozumiem pewnych rzeczy, mianowicie: ChannelMUX Czyli będzie to wyglądało przy deklaracji: ChannelMUX if(ConversionResults tu się dokonuje...

    Mikrokontrolery   10 Sty 2016 16:07 Odpowiedzi: 53    Wyświetleń: 2865
  • Przepisanie programu z Atmega8 na Atmega328P z wykorzystaniem USART

    Witam, próbuję przepisać program z Atmega8 na Atmega328P, z powodu małej pamięci Atmegi8, w programie wykorzystuje komunikacje USART. Program dla atmegi8: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 1000000 #endif //set desired baud rate #define BAUDRATE 9600 //calculate...

    Mikrokontrolery AVR   23 Wrz 2015 15:23 Odpowiedzi: 2    Wyświetleń: 981
  • AVR/ATMEGA644PA: Problem z odczytem zmiennej z EEPROM poza instrukcją if

    Witam Mam pytanie dlaczego zmienna która inkrementuje się tutaj: [syntax=c] if(klawisz_wcisniety(ZAWODNIK_M)) { lcd_cls(); zawodnik_przejazdy_read(); zawodnik_przejazdy[zawodnik.numer].okraz... = 0; zawodnik_przejazdy_update(); zawodnik.numer++; zawodnik_przejazdy[zawodnik.numer].okraz... zawodnik_przejazdy_update(); } [/syntax] Inkrementuje się...

    Mikrokontrolery Początkujący   01 Sie 2013 19:50 Odpowiedzi: 1    Wyświetleń: 1179
  • [ATmega 16] [C] - Jak poprawnie odczytać ADC z fotorezystora?

    Więc mój program wygląda mniej więcej tak: [syntax=c]#define wej_1 PA2 #define wej_2 PA3 #define wej_3 PA4 #define wej_4 PA5 #define VREF 5.0 volatile uint8_t adc1;//zmienna do pomiaru ADC wej_1 volatile uint8_t adc2;//zmienna do pomiaru ADC wej_2 volatile uint8_t adc3;//zmienna do pomiaru ADC wej_3 volatile uint8_t adc4;//zmienna do pomiaru ADC wej_4...

    Mikrokontrolery Początkujący   12 Gru 2012 20:52 Odpowiedzi: 19    Wyświetleń: 2892
  • Atmega88PA i RS485 - błędy w komunikacji przy echosondzie

    (at)arturt134 Robiłem to co mi sugerujesz - bezowocnie. Ale spostrzegłem ciekawą rzecz: wysyłając pakiet czynię to co parę sekund (ręcznie), przypadkowo dałem chwilkę czasu (5..10 min.) spokoju ATMEDZE (musiałem coś tam innego zrobić), po tym czasie znowu wysłalem pakiet i o dziwo ramka wyglądała jak po resecie uC! Ale następne znowu były oszukane....

    Mikrokontrolery   15 Lip 2010 16:09 Odpowiedzi: 31    Wyświetleń: 6663
  • Atmega328p - Odczyt potencjometrów z przerwaniami, wartości 0-255

    Cześć, Próbuję zaadaptować przerwania do swoich potrzeb z pomocą datasheet atmegi328p i strony [url=http://mikrokontrolery.blogspot.com ]Link Niestety napotkałem pewien problem z którym nie umiem sobie poradzić. Za pomocą przerwań chciałbym odczytywać stany z dwóch podłączonych potencjometrów. Reprezentuję ich wartości na LCD leczy w zakresie 0-255....

    Mikrokontrolery Początkujący   20 Lut 2020 21:14 Odpowiedzi: 14    Wyświetleń: 1113
  • [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ń: 4355
  • AVRGCC i asembler: Jak dodać procedurę przerwania w ATmega8535?

    Jak już pisać wstawki w ASM, to zamiast używać kodu w stylu (przykład z GCC-AVR Inline Assembler Cookbook): naked ): _SFR_IO_ADDR(SREG) zamiast zwykłego SREG . Można zresztą w ten sposób pisać także funkcje wywoływane później w plikach *.c, jeśli są np. krytyczne czasowo. No chyba, że tego wstawianego kodu będzie naprawdę niewiele :)

    Mikrokontrolery   09 Lip 2012 17:42 Odpowiedzi: 14    Wyświetleń: 4355
  • [atmega328p][C] odczyt danych z uart z przerwania w pętli głównej

    Witam, Mam potencjalnie banalny problem z odczytem stringa z przerwania UART w pętli głównej programu. Kiedy przesyłam przez UART ciąg znaków są one odbierane, jednak przy próbie wyświetlenia ich na wyświetlaczu którego obsługa znajduje się w pętli głównej programu zamiast przesłanego stringu widzę losowe śmieci z pamięci (np. fragmenty danych poprzednio...

    Mikrokontrolery AVR   16 Wrz 2019 19:59 Odpowiedzi: 5    Wyświetleń: 720
  • [ATmega32U4][avr-gcc] - Typ zmiennej a jej wartość po petli while.

    Witam i proszę o wyjaśnienie, dlaczego jeśli zmienna x w funkcji main jest typu long int to po zakończeniu pętli while ma ona wartość mniejszą (66) niż jeśli jest typu int (86). Dzięki. [syntax=c] volatile uint8_t timer1; ISR (TIMER0_COMPA_vect){ uint8_t x = timer1; if (x) timer1 = --x; } int main (void) { TCCR0A |= (1<<WGM01);//tryb CTC TCCR0B...

    Mikrokontrolery Początkujący   14 Lis 2014 13:04 Odpowiedzi: 4    Wyświetleń: 942
  • [ATmega128A][avr-gcc] - TWI slave - uszkodzenie pamięci

    Witajcie! Robię bibliotekę mającą w zamyśle być modułem do I2C slave, z użyciem atmegi 128A. Wyizolowałem najmniejszą możliwą część błędu który doświadczyłem, może ktoś z Was będzie miał pomysł co może być przyczyną. Żebyśmy wiedzieli o czym dyskusja, kod programu: avr-g++ -O0 -std=gnu++1y -Wall -Wextra -Winline -mmcu=atmega128a Testowałem również z...

    Mikrokontrolery AVR   01 Wrz 2016 10:27 Odpowiedzi: 23    Wyświetleń: 2037
  • ATMEGA8535 - Wskaźnik uint32_t *napiecie nie aktualizuje się w pętli głównej

    Witam. Jeśli chodzi o zmienna typu volatile to często używam tego oznacznika. Moje pytanie dotyczyło bezpośrednio utworzenia wskaźnika w pliku nagłówkowym gdyż było dla mnie to nie jasne dlaczego odwołując się do niego nie otrzymujemy poprawnej odpowiedzi w programie. Koledzy macie w 100% racje z tym, że stworzyłem tylko wskaźnik, a nie zmienna. Problem...

    Mikrokontrolery AVR   02 Sty 2014 12:09 Odpowiedzi: 4    Wyświetleń: 1002
  • Atmega32 - Przełączanie między kanałami ADC (3 kanały) - Kodek źródłowy i konfiguracja

    Gdy jeszcze bawiłem się ATmegami , 328 przede wszystkim to żonglowałem kałami ADC w tajmerze. Co ileś tam przerwań, przykładowo 10, był odczyt ADC i zmiana kanału. Po nastepnych 10 przewaniach znowu odczyt ale już ze zmienionego kanału i zmiana na następny kanał. Działało to po prostu pewnie. Lepiej będzie to widać na przykładowym kodzie. Oczywiście...

    Mikrokontrolery AVR   20 Mar 2023 23:07 Odpowiedzi: 7    Wyświetleń: 756
  • Impulsator, Atmega328p na jednym przerwaniu INT0

    Czy zmienna uint16_t licznik nie powinna być typu volatile jeżeli operujemy nią w przerwaniu?

    Artykuły   15 Mar 2015 15:13 Odpowiedzi: 13    Wyświetleń: 6303
  • atmega8535 - ADC w trybie ciągłym, przerwania działają tylko raz po starcie

    No i znowu natknąłem się na jakiś dziwaczny problem. No i niestety zmienna dane nie zmienia swojej wartości podczas zmian napięcia na wejściu przetwornika ADC. Pokaż cały program, a w szczególności jak definiujesz zmienną dana . Użyłeś magicznego słowa volatile ?: http://mikrokontrolery.blogspot.com/2011... Funkcja wykonuje...

    Mikrokontrolery AVR   07 Lis 2013 14:52 Odpowiedzi: 8    Wyświetleń: 1623
  • [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ń: 3181
  • 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ń: 1087
  • [Atmega128] Atmega128: USART1 gubi znaki przy odbiorze danych z GSM, USART0 działa poprawnie

    Skoro bez przerwań wszystko działa poprawnie (nie licząc zgubionych znaków na USART1), wydaje mi się, że program jest zrozumiały dla uC oraz dla mnie. GPS - 3,3V GSM - 3,9V uC - 5V Wyprzedzając kolejne pytanie, stosuje konwerter napięć. Widzę, że rozmawiając w ten sposób niczego nie osiągnę. Może inaczej... Czy włączając przerwania [syntax=c]UCSR0B...

    Mikrokontrolery   04 Wrz 2020 07:53 Odpowiedzi: 20    Wyświetleń: 2252
  • Wskazówkowy obrotomierz - Obrotomierz wskazówkowy na Atmega8

    OK, zwracam honor!!! Zauważyłem , że GM się w tym lubuje. Mimo wszystko, sterowanie ACG i kontrola nad nim są dużo prostsze niż SM. Nieważne. Niech autor próbuje. Po czym to zauważyłeś ? Po silniku i płycie zegara ? Te z fotki kolegi to grupa VW stary pasat B4 , VW T4 itp . Silniki jak najbardziej krokowe ... Nie napisałem, że te na zdjęciu są od GM....

    Mikrokontrolery AVR   27 Sty 2014 22:17 Odpowiedzi: 58    Wyświetleń: 17166
  • AVR ATMEGA128L: Błąd generowania pliku HEX w AVR Studio 4.13 i WINAVR 2008

    Pijopic : A ja proponuję czytać dokumentację od avr-libc, ten temat oraz temat, którego link dałem (opisałem tam problemy z _delay_ms). _delay_ms(500) nie będzie działać - przy zegarze 1MHz maksymalne opóźnienie wstawiane przez _delay_ms wynosi 262.14ms. The maximal possible delay is 262.14 ms / F_CPU in MHz. . Nie wprowadzaj znów w błąd. rrata : równie...

    Mikrokontrolery   28 Sie 2008 07:38 Odpowiedzi: 22    Wyświetleń: 2138
  • 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ń: 11845
  • Zmienna 32bit (>65535) problem z sprintf Atmega168

    Witam. Mam kłopot staram się wyświetlić na lcd lub wysłać przez USART zmienną która powinna przyjąć wartość około 70000 - 100000 ... Mam wielkiego zonka :-( Teoretycznie definiuję zmienną jako volatile uint32_t licznik = 70000; a na lcd dostaję jakieś dziwne odczyty ... to samo na rs... używam takiej funckji : sprintf_P((char*)tekst, PSTR("Licznik:...

    Mikrokontrolery AVR   01 Gru 2009 14:29 Odpowiedzi: 4    Wyświetleń: 1182
  • [Atmega8] [Atmega8][C] - Jak zaimplementować odliczanie godzin od 100 do 0?

    nie wiem w jakim celu są te 2 minusy Operator predekrementacji. Zmniejsza div_1s o jeden. jakiego typu ma być ta zmienna div_1s? volatile? Może być np. unsigned short. Lokalna statyczna w procedurze obsługi przerwania. 50Hz jest wystarczające, aby oko ludzkie, nie wyłapało zmiany. Nie jest wystarczające (no, może dla żarówek... :D ). Jak mam ją zainicjować...

    Mikrokontrolery AVR   02 Lis 2014 14:40 Odpowiedzi: 26    Wyświetleń: 1635
  • [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
  • [ATMEGA328p-pu] - Nieprawidłowy pomiar ADC w programie BLDC_mega328p

    Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include "MK_TERMINAL/mk_term.h" #define REF_256 (1<<REFS1)|(1<<REFS0)...

    Mikrokontrolery AVR   23 Lis 2014 17:44 Odpowiedzi: 17    Wyświetleń: 1995
  • ATmega32/Atmel Studio 6 - Wysyłanie danych przez UART

    Ile trwają procedury Measurement_DS18B20() oraz Measurement_SHT11()? Najlepiej pokaż też je. Takie coś się może dziać się w momencie, jeśli przerwanie od timera przychodzi w momencie działania funkcji dtostrf, jeśli uart działa z większą prękością to prawdopodobnie rzadziej trafia w tą funkcję. Najszybciej poprawić to można poprzez wprowadzenie jakiejś...

    Mikrokontrolery   05 Gru 2012 11:24 Odpowiedzi: 13    Wyświetleń: 4368
  • ATmega162 i ATmega8 z RS485 - komunikacja UART, problem z diodą LED

    Na pierwszy rzut oka widze,ze w kodzie dla atmega8 nie inicjujesz trybu pracy PORTC jako wyjscie, gdzie podlaczona jest dioda majaca sygnalizowac odbior znaku z rs-a. No i oczywoiscie zmienna fodb powinna byc volatile bo tego nie widze . Przy dluzszych polaczeniach rs485 zalecalbym jednak stosowac te rezystorki , o ktorych mowa byla kilka postow wczesniej....

    Mikrokontrolery   25 Cze 2006 20:48 Odpowiedzi: 22    Wyświetleń: 3535
  • Sferyczny wyświetlacz widmowy na ATmega328P jak zrobić synchronizacje?

    Witam, Jestem w trakcie budowy sferycznego wyświetlacza widmowego. Globus składa się z 40 diod LED RGB sterowanych procesorem ATmega328P. Pozostał do rozwiązana ostatni problem a mianowicie wykrywanie położenia pierścienia, na którym są umieszczone diody LED. Pierwsze, co przyszło mi na myśl to zastosowanie diody emitującej promieniowanie podczerwone...

    Arduino   09 Kwi 2013 19:40 Odpowiedzi: 4    Wyświetleń: 4218
  • ATmega8 [C] - Wyświetlanie wartości na wyświetlaczu 7-segmentowym

    Pomijając to, że zasada działania tego programu jest dziwna i wypadałoby trochę rzeczy zmienić, to problemem w tym przypadku jest fakt, że zmienna speed nie jest typu volatile.

    Mikrokontrolery AVR   02 Maj 2014 11:26 Odpowiedzi: 8    Wyświetleń: 1950
  • [C][atmega8] pomiar czasu między dwoma impulsami na INT0

    wilk125: jeszcze mam takie pytanie, jeśli kwarc zew. mam 8MHz i preskaler ustawiony jest na 8, to jeden takt timera1 w tym przypadku będzie odpowiadał 1us ? Tak Tak powinno być TCCR1B, moja pomyłka Przy odczycie wartości z TCNT1, sróbuj najpierw odczytac TCNT1L(młodszy bajt TCNT1), i następnie TCNT1H (starszy bajt). Chociaż odczyt jak wyżej tez powinien...

    Mikrokontrolery AVR   24 Lis 2009 08:04 Odpowiedzi: 5    Wyświetleń: 3676
  • [Atmega128] Jak ustawić PWM na Atmega128 do sterowania 3 silnikami?

    Ustawiasz bit TOIE1 w rejestrze TIMSK, żeby włączyć przerwania przepełnienia, deklarujesz funkcję obsługi przerwania w sposób: volatile uint16_t pwm; //zmienna globalna do wartości pwm SIGNAL(TIMER2_OVF_vect) //funkcja wykona się po przepełnieniu timera 1. { OCR1A = pwm; } W swoim programie wpisujesz do zmiennej globalnej pwm wartość...

    Mikrokontrolery AVR   16 Lut 2011 11:50 Odpowiedzi: 11    Wyświetleń: 5094
  • Atmega8 LM35 - Termometr - jak zdeklarować dziesiątki i jedności ?

    Proponuje umieścić deklarację typu: volatile uint8_t DZIESIATKI, JEDNOSTKI; przed funkcją main. Tak zadeklarowana zmienna powinna być widoczna w przerwaniu oraz każdej innej funkcji.

    Mikrokontrolery AVR   09 Lut 2015 19:04 Odpowiedzi: 2    Wyświetleń: 825
  • Atmega644 - sterowanie 5 serwami, kod nie działa poprawnie

    Witam, Pewnie sprawa będzie dla was banalna ale ja się z nią zmagam już jakiś czas. Poniższy kod steruje 5 serwami: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define KEY1 (1<<PA0) // definicja przycików #define KEY2 (1<<PA1) #define KEY3 (1<<PA3) #define KEY1_DOWN ( !(PINA &...

    Mikrokontrolery   02 Cze 2015 01:32 Odpowiedzi: 7    Wyświetleń: 876
  • Atmega8 - Timer1 zmiana współczynnika wypełnienia

    ustaw sobie przerwanie od np. TIMER2 co 10ms i sprawdzaj 4 ostatnie stany przycisku. teoria: http://mikrokontrolery.blogspot.com/2011... powyższe zaadoptowane do A8: [syntax=c] //**************definicja przycisku************** #define _Key _BV(PD7) #define Key_PIN PIND #define Key_DDR DDRD #define Key_PORTPORTD...

    Mikrokontrolery AVR   24 Lut 2014 18:26 Odpowiedzi: 18    Wyświetleń: 2355
  • [ATmega8][C] - TIMER1 kontrolowany przerwaniami INT0:1

    Witam, ustawienie rejestru DDR i PORT na 0 daje wejścia pływające (ATmega8 nie ma rezystorów ściągających do masy, tylko podciągające do plusa). Tak jak jest teraz łapiesz kolego zakłócenia. Należałoby albo dodać zewnętrzne rezystory między przyciskami a masą lub zmienić położenie przycisków (między pinem a masą) i włączyć wbudowane rezystory. O volatile...

    Mikrokontrolery AVR   04 Lis 2012 12:30 Odpowiedzi: 3    Wyświetleń: 1629
  • [ATMega128] [ATMega128][C] Przerwanie INT1 wyzwalane ciągle zamiast na narastające zbocze

    Reszta programu jest nieistotna, program jest za duży, żeby go wklejać. Ogólnie przerwanie wygląda tak: volatile u08 licznik; ISR(INT1_vect) { licznik++; } void Init(void) { DDRD &= ~_BV(1); // PORTD |= _BV(1); //init dla przerwania zewnetrznego EICRA = _BV(ISC11) | _BV(ISC10); //Zbocze...

    Mikrokontrolery AVR   28 Mar 2010 21:25 Odpowiedzi: 15    Wyświetleń: 1486
  • [ATMega8L][C] - Dokładność zegara zbudowanego na ATmedze8L

    Zmienna tick to zwykły char. Musi być volatile: http://mikrokontrolery.blogspot.com/2011... Brak volatile, także może być przyczyną. Funkcję uprość pozbywając się switch i zostaw tylko właściwe TCCR2 |= (1<<CS22) | (1<<CS20);

    Mikrokontrolery AVR   29 Mar 2013 22:32 Odpowiedzi: 14    Wyświetleń: 1995
  • Matryca 4x4 na ATMEGA8. W klawiaturze działa tylko jeden wiersz.

    Bo cały czas dajesz klaw=, co powoduje nadpisanie wartości zmiennej i jeśli wszystko jest w ostatnim wierszu na 0 to zmienna niezależnie od tego co się dzieje wcześniej ma wartość zero. Poza tym nie musi być ona opatrzona atrybutem volatile. Wystarczy, że dasz jej na początek wartość 0, a potem zamienisz klaw= na klaw +=

    Mikrokontrolery AVR   09 Sie 2011 15:04 Odpowiedzi: 2    Wyświetleń: 1044
  • Ł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ń: 4998
  • AVR/Atmega644 - Generowanie sinusa PWM z tablicy 200-elementowej

    Na wstępie mała dygresja nie związana bezpośrednio z problemem - dla OCR2A=100 okres zliczania timer'a 2 wynosi 101, a nie 100 taktów. Zamiast tworzyć tyle tablic do regulacji częstotliwości proponowałbym zastosować technikę zwaną DDS. Zgodnie z tą logiką tablica dla 2Hz musiałaby mieć 5000 elementów? ( 10kHz/5000=2Hz ) Poniżej 50Hz zmieniam częstotliwość...

    Mikrokontrolery AVR   03 Sty 2014 14:41 Odpowiedzi: 11    Wyświetleń: 4053
  • [Atmega128][c][WinAVR] Timer w trybie asynchronicznym

    Witam! Postanowiłem przetestować tryb asynchroniczny timera0 z podłączonym kwarcem 32768 Hz na płytce #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include "HD44780.h" volatile int time=0; int main (void){ TCCR0|=(1<<WGM01)|(1&l...

    Mikrokontrolery AVR   08 Lis 2009 21:48 Odpowiedzi: 2    Wyświetleń: 2287
  • Atmega8 - Timer0 nie odlicza 1 sekundy przy 12MHz i preskalerze 256

    Poza tym to: TCNT0 = 130; Powinna być pierwszą instrukcją w przerwaniu, a tak w ogóle polecam poczytanie o trybie CTC - nie będzie trzeba martwić się o ciągłe ładowanie wartości timera. EDIT: A problemem właściwym jest nadmiarowy średnik, o tu: if(licznik == 375); jak go wywalisz to będzie w miarę OK. A zmienna nie musi być w tej sytuacji volatile,...

    Mikrokontrolery Początkujący   19 Lut 2013 14:47 Odpowiedzi: 4    Wyświetleń: 1113
  • [ATmega32L] Jak zmusić kompilator winAVR do poprawnej obsługi zmiennej Frame?

    Nie no jeżeli zadeklarujesz zmienna w pliku interrupt tak: volatile TFrame Frame; a w main-e dasz informacje kompilatorowi w ten sposób: extern volatile TFrame Frame; to niemożliwe żeby kompilator pominął tą zmienną. Sprawdź jeszcze czy dobrze ustawiana jest flaga Frame.state & READY. Z natury nie ufam AVRStudio ( Softwarowy Debugger juz pare razy mnie...

    Mikrokontrolery AVR   12 Paź 2008 19:33 Odpowiedzi: 14    Wyświetleń: 1636
  • 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ń: 1545
  • Jak dokładnie odmierzyć 1 sekundę na ATmega8 bez zewnętrznego zegara?

    Wewnętrzny zegar jest na tyle mało dokładny, że aby można było nim coś zmierzyć, należało by ustalić jego dokładną częstotliwość porównując z jakimś wzorcem, po czym zapisać poprawkę do osccal albo uwzględnić to w czasie przepełnienia t1 - a i tak dokładność nie będzie duża ze względu na wachania częstotliwości. Warto poczytać w dokumentacji jaką dokładnie...

    Mikrokontrolery AVR   23 Gru 2009 20:44 Odpowiedzi: 11    Wyświetleń: 1592
  • USART Atmega8l 1MHz - brak komunikacji RS232 z modułem Bluetooth

    Dodaj funkcję przerwania USART_RXC_vect lub wykasuj ustawianie bitu RXCIE, bo jeśli coś USART odbierze, to program pójdzie w maliny. Zmienna data w przerwaniu USART_UDRE_vect powinna: http://mikrokontrolery.blogspot.com/2011... ... a w ogóle, to odłóż na chwilę swój projekt zrób test na bazie tego artykułu do Atmega8 (nic nie...

    Mikrokontrolery AVR   23 Maj 2016 21:38 Odpowiedzi: 24    Wyświetleń: 1251
  • [Atmega16A] Problemy z elektroniką przy sterowaniu silnikiem CN12-R-XC

    wow tego nie wiedziałem... Dzięki Przetestowałem, zaczęło działać. Ale... Jeśli zrobię tak:[syntax=cpp]ISR(TIMER0_COMP_vect) { rob_cos=1; }[/syntax]a w main:[syntax=cpp]while(1){ if(rob_cos==1){ PORTD &= ~_BV(3); OCR1A=0; _delay_ms(1); PORTD |= _BV(6); OCR1B=50; _delay_ms(1); rob_cos=0; } }[/syntax]to i tak dalej się resetuje. A potrzebuję umieścić...

    Robotyka Modelarstwo i CNC   05 Wrz 2011 13:19 Odpowiedzi: 7    Wyświetleń: 2912
  • ATmega128 - Timer3 jako pomiar częstotliwości [C/AVR Studio]

    Ok, zgadzam się, nie ma 'volatile' przy zmiennych. Wykorzystuję je w przerwaniach zatem powinny być volatile. Ale problem jest nadal, bo przecież program, gdy będzie się wykonywał, to w terminalu powinienem ujrzeć tekst "Sart", później program wchodzi w pętlę nieskończoną. W niej jeśli zmienna "icr" jest różna od 0 powinienem uzyskać dalsze wyniki (powinno...

    Mikrokontrolery AVR   04 Wrz 2013 08:37 Odpowiedzi: 5    Wyświetleń: 1845
  • [Atmega16A][C] - Dziwne zachowanie po zmianie częstotliwości taktowania

    Napisałem taki oto program do pomiaru napięć: Kiedy uC działa z wewnętrzną częstotliwością 1MHz i ma wyłączony JTAG, czyli ustawienia E1 i D9 wszystko jest ok (ADC4 i ADC5 mierzą napięcia). Kiedy jednak zmieniłem ustawienia na wewnętrzną częstotliwość 8MHz lub 4MHz i też wyłączony JTAG, czyli E4 i D9, to wyświetlacz pokazuje mi podobne napięcie w obu...

    Mikrokontrolery Początkujący   04 Maj 2013 07:01 Odpowiedzi: 2    Wyświetleń: 1407
  • Atmega16A – odczyt stanu pinów PD4 i PD5 w ISR INT0, multiplekser na PORTD

    Możesz zrobić sobie np. dwie zmienne (jedna dla PD4 i druga dla PD5) i przypisywać im jakąś wartość (np 0 1) w momencie ustawiania 00,01,10,11 na PD4 i PD5. I w przerwaniu sprawdzasz sobie, jaką wartość ma zmienna - wiesz z którego pinu poszedł sygnał. Dodano po 7 Zobacz tu: http://mikrokontrolery.blogspot.com/2011...

    Mikrokontrolery Początkujący   30 Mar 2016 09:48 Odpowiedzi: 12    Wyświetleń: 2205
  • Atmega128 - Nieprawidłowe wyniki mnożenia float'ów dla dodatnich wartości

    Zmienna jest typu: volatile float obrabiam ją w przerwaniu.

    Mikrokontrolery AVR   21 Sty 2015 23:25 Odpowiedzi: 6    Wyświetleń: 927
  • Atmega128: USART i przerwania - problem z zapisem do pamięci Wiznet

    Zobacz czy zmienna flaga ktorej przypisujesz 1 masz jako volatile.. sam walczylem z tym ostatnio. Mariusz.

    Mikrokontrolery   02 Lis 2005 13:32 Odpowiedzi: 11    Wyświetleń: 1722
  • [ATmega128][C] Przypadkowe ustawienie wyjść mikrokontrolera

    Witam w swoim projekcie do sterowania silnikami krokowymi wykorzystuję joysticki potencjometryczne. By określić, w którą stronę został on wychylony mierzę napięcie na potencjometrze przetwarzając je w przetworniku analogowo cyfrowym. Silniki działają bez zarzutu, tak jak zakładałem. Problem występuje jedynie przy silniku numer 1. Dokładniej po załączeniu...

    Mikrokontrolery AVR   14 Gru 2009 09:33 Odpowiedzi: 11    Wyświetleń: 1828