Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
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......
Witam forumowiczów, Sytuacja wygląda tak, że z jednostki nadrzędnej słane są ramki danych, Po każdej ramce jest szczelina czasowa tak aby nasza ATmega zdążyła odpowiedzieć, Mamy Atmega16 kwarc 16MHz i transmisje 57600 (w przybliżeniu), Gadamy przez RS485 tak, że między ramkami jeszcze przełączam linie bufora, Steruje równocześnie buforem wejścia i wyjścia...
Jest to Atmega16. Nie tylko ja jeden miałem problem z pogodzeniem mojego przypadku, inna osoba stwierdziła, że w moim przypadku istnieje możliwość pogodzenia 1-wire i przerwania ale nie w języku BASCOM. O USART jeszcze nie słyszałem, jak mniej więcej miało by to wyglądać ?
Dzień dobry. Mam problem z transmisją SPI w mikrokontrolerze ATMEGA16 w trybie SLAVE. A mianowicie po wysłaniu do mikrokontrolera bajtu danych nie jest generowane przerwanie. W tym samym mikrokontrolerze sprawdzałem działanie SPI na ustawienie flagi SPIF w rejestrze SPSR i było wszystko OK. Czyli transmisja jest OK. Jeśli ktoś mi morze pomóc i wyjaśnić...
Witam, Napisałem program do odpytywania stanu klawiszy na Atmega16, kwarc-16MHz. Według wyliczeń przerwanie powinno sie pojawiać co 2,5ms, jednak tak nie jest, jest o wiele wolniej (ponad 1s). Analizowałem program i sam juz nie wiem co może być źle. Pomóżcie Preskaler clk/1024=16000000/1024=15625 1/15624=0,064ms 40*0,064ms=2,5ms #include <avr/io.h>...
Witam, walczę z tym cały dzień i nie potrafię zrozumieć dlaczego program nie działa. Próbuje poprostu "uruchomić" przerwanie podczas przepełnienia timera0. Jak widać niżej jest bardzo prosty kod który powinien zapalać i gasić diodę. Preskaler ustawiony na 1024, ustawiona odpowiednia flaga w rejestrze TIMSK ...i nei działa. Jeśli w pętli while wrzuce...
Witam ,\za zadnego nie moge zmusic by zareagowal na przerwanie... listing programu ponizej .... jest to przyklad. bardzo prosze o pomoc. p.s. wylaczony JTAG listing: $regfile = "m16def.dat" $crystal = 8000000 Config Pind.3 = Input Set Portd.3 Config Portd.5 = Output Config Portd.6 = Output Led Alias Portd.5 Led2 Alias Portd.6 Enable Int1 Config...
Witam. Próbuję zrobić zwykłe zliczanie osób w pomieszczeniu. Mam dwie bariery świetlne, które są podłączone do pinów PD2 i PD3 czyli INT0 i INT1. Problem w tym, że przerwanie od INT1 nie chce mi zaskoczyć, natomiast INT0 działa. Dodam, że bariera działa dobrze: przerwanie bariery skutkuje podciągnięciem Portów PD2 czy PD3 do 0. Czyli przerwanie powinno...
Witam, pracuję na atmedze16A i wewnętrznym clocku 4Mhz. Próbuję wygenerować przerwanie z częstotliwością 80kHz, które spowoduje negacje jednego z bitów portu B(PORTB 0). Rozumiem, że dzięki takiej operacji wygeneruję sygnał o częstotliwości 40kHz, który pozwoli mi generować ultradźwięki w nadajniku. Napisałem taka obsługę przerwania, ale coś mi nie...
Napisałem najprostszy program do obsługi zewnętrznych przerwań, niestety nie działa. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void) { DDRB=0x01; //wyjście dla diody //MCUCR|=(1<<ISC01)|(1<<ISC0... //zbocze narastające GICR|=(1<<INT0); sei(); while(1) { PORTB |= 0x01;...
Wgrałem do Atmega16 prosty programik obsługi przerwań zewnętrznych (poniżej kod). #include <avr/io.h> #include <avr/interrupt.h> SIGNAL (SIG_INTERRUPT0){ PORTB = 0xFF; } SIGNAL (SIG_INTERRUPT1){ PORTB = 0x00; } int main(void){ DDRB = 0xFF; DDRD = 0x00; PORTD = 0xFF; GIMSK = _BV(INT0)|_BV(INT1);...
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...
Witam Utknąłem z moim kodem i plątam sie w koło ciągle, dlatego proszę o pomoc. W podprogramie "przyciski" przerwania od timer0 mam zrealizowany odczyt przycisków i zrobiłem sobie "flagi czasowe" przyciski: 'przerwanie co 26ms . kod sprawdzania przycisków . incr licz if licz=19 then ' flaga co ok 0,5 s flaga_500ms=0 ' w warunkach początkowych flaga_500ms...
witam. Mam taki problem ponieważ sygnał który dostaje z akcelerometru muszę scałkować podwójnie i do tego jest mi potrzebny przedział miedzy próbkami i mam problem z wyznaczeniem tego czasu. żeby mieć stałe odstępy próbkowania wymyśliłem żeby próbkowanie odbywało się w przerwaniu i teraz problem polega na tym ze w trakcie wykonywania przerwania od timera2...
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...
Witam Zastanawiam się dlaczego program "nie wchodzi" do przerwania po wysłaniu bajtu po rs232. Kod przerwania: [syntax=c] ISR(USART_TXC_vect){ PORT_LED = 255; while(1); } [/syntax] Funkcja inicjująca UART: [syntax=c] void InitUART(int baudrate) { // Enable 2x speed UCSRA = (1<<U2X); // Set baudrate UBRRH = (unsigned char) (baudrate>>8);...
Witam. Natrafiłem dziś na problem z przerwaniem. Mianowicie mam DS18B20, LCD, UART i timery. Program wygląda tak, że temperatura z DSa jest wyświetlana na LCD, wszystko gra. Mam też przerwanie, w którym co sekundę wysyłane jest 6 bajtów do kompa (przez UART). Przerwanie jest od Timera co 1 sekundę. Wszystko gra do czasu. W pewnym momencie program sie...
Witam, mam problem z uzyskaniem przerwania od licznika. Program w ogólności ma co mniej więcej sekundę na przemian zapalać i gasić diode. Licznik jest w trybie porównania do wartości 156. Częstotliwość oscylatora to 4 MHz, przeskalowana przez 256. Program niestety nie chce wejść w przerwanie. Może któryś z bardziej doświadczonych forumowiczów jest w...
Witam Koledzy mam taki "program" który zapala i gasi diodę led w odstępach około 1sekundowych: Do Set Porta.3 Wait 1 Reset Porta.3 Wait 1 loop end I taki programik działa jak należy ale dlaczego po dodaniu przerwania od timera0 które zmienia stan portu z określoną częstotliwością polecenie wait 1 trwa ponad minutę? Mam taki program: $crystal = 4000000...
Mojej walki ciąg dalszy, pamiętam o poprzednich tematach, uczę się i kiedyś do nich wrócę :) . Otóż podłączyłem czujnik wstrząsów do PD3 i chciałem wykrywać wstrząsy przerwaniem. A propos, okazało się że samochodowy 12v świetnie chodzi na 5v, diodki mrugają więc wiem że wstrząsy wykrywa. Wstrząs sygnalizowany jest zwarciem sygnału do masy - i zmierzone...
Ok, uporałem się jakoś z tym projektem, tak że wreszcie działa. W końcu użyłem tego gotowego przykładu: http://mikrokontrolery.blogspot.com/2011... i jakoś "ręcznie" dodałem biblioteki ASF od TWI. Było kilka niezgodności, ale się z tym uporałem. Tak więc program działa i wymienia dane z kompem. Mam...
Męczę się nad tym od jakiegoś czasu i nie mogę sobie z tym poradzić. Próbuję połączyć ze sobą te dwa kontrolery. Zacząłem od skonfigurowania Atmegi16 do odbioru i połączenia jej z HyperTerminal. Najgorsze jest to że jakiś rok temu zrobiłem to bez problemu a dziś za żadne skarby mi nie wychodzi. Programik raczej prosty: #include<avr/io.h> #include<avr/interrupt.h>...
Niestety to jednak nie w tym tkwi problem. Zmieniłem troszkę program dlatego opisze jeszcze raz o co chodzi ;) Usunąłem wszystkie błędy programu i o dziwo komunikacja jako tako działa, ale oczywiście jest jedno "ale" z którym jakoś nie potrafię sobie poradzić i nie wiem dlaczego tak się dzieje. ATmega16 (do niej podłączony jest klawisz i LCD) mierzy...
Biblioteki z Internetu - hmm, mam swoje zdanie na ten temat, nie podzielę się nim, bo moderator by musiał ten post wrzucic do kosza, a i ostrzeżenie zapewne bym dostał :) Zacznijmy od hallotronu - podepnij go pod pin, który generuje przerwanie i ustaw przerwanie z pinu na zbocze. W przerwaniu sobie zliczaj impulsy z hallotronu. Dodaj na wejście jakiś...
Witam. Mam mały problemik z UARTem . Mianowicie wszystko dziala ladnie , wysylanie i odbieranie znakow. Problem powstaje w momencie gdy wlacze przerwanie od zakonczenia nadawania (TXC: USART Transmit Complete ). Wowczas po wyslaniu jakiegokolwiek znaku z mikroprocesora mikroprocesor sie restartuje. Uklad to ATmega16, kwarc 16Mhz, predkosc transmisji...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
Ponizej przedstawiam swoj kod: #include <avr/io.h> #define F_CPU 16000000UL #include <util/delay.h> #include <avr/interrupt.h> //#include <avr/iom16.h> #include "lcd.h" #include "usart.h" #define Timer2_start TCNT2 = 0x63; TCCR2 = 0x07; //0x63 - poczatkowa 99, preskaler 1024 0x07 #define Timer2_stop TCCR2...
Jeśli wysylasz male porcje danych i rzadko mozesz zastosowac takie roziwazanie. W inym przypadku proponuje wykorzystac przerwania i zrobic jakis buforek nadawczy/odbiorczy.
Hej, Podłączyłem sobie ATmegę16 do komputera przez RS-232 za pośrednictwem MAX232. Na początek chciałbym zrobić echo - to, co wpiszę w minicomie czy putty ma być przesłane do uC i wysłane z powrotem. Wykorzystane mają być przerwania. Problem jest taki, że procedura obsługi przerwania ISR(USART_RXC_vect) jest wykonywana albo bardzo rzadko, albo wręcz...
Witam. Mam taki problem. Próbuję się bawić z UARTem. Program (tzw. echo) działa poprawnie - sprawdzam za pomocą Br(at)y terminala. Natomiast chciałem pójść dalej i wykorzystać przerwanie od odebrania. no i niestety mi niezbyt to działa (w sensie nie wchodzi w to przerwanie). A oto kod: #include <avr/io.h> #include <avr/iom162.h> #include...
Wydaje mi się , że funkcja wysyłająca znak na LCD jest zbyt czasochłonna i poprostu gubisz część znaków wysłanych przez telefon.Spróbuj zapisać je do tablicy , a potem wyświetlić na LCD , pamiętając o pominięciu znaków o kodach < niż np. 0x20.Najpewniejszym wyjściem z sytuacji , jest jednak bufor FIFO , zaimplementowany w procedurze obsługi przerwania...
Nie wiem jaki to uP ale np. dla ATmega16 wygląda to tak: Włączasz przerwanie: UCSRB|=(1<<TXCIE); sei(); //dostępne globalne przerwania A tu jest podprogram obsługi przerwania: ISR(USART_TXC_vect) { cbi(PORTB, PB2); //0 na pinie PB2 } aha i jeszcze musisz włączyć bibliotekę: #include <avr/interrupt.h>...
Tak, jeśli używasz przerwania to nie potrzebujesz tej funkcji. Procesor wcale nie musi się resetować, może wpadać w nieokreśloną martwą pętlę po skoczeniu do przerwania od RX (które jest nieokreślone). Program działa więc tak: wykonuje wszystko aż do napotkania funkcji USART_ReceiveByte, wchodzi do niej i oczekuje na zakończenie odbioru bajtu przez...
Mam problem z UART w ATMEGA162 16PU Procesor z kwarcem 11059200 Hz zasilany 3,3V Potrzebuje prędkość 9600 b/s #include <avr/io.h> #include<inttypes.h> #include<avr/interrupt.h> #include <util/delay.h> #include <avr/wdt.h> //#include"../lib/rs232.h" #define FOSC 11059000// Clock Speed #define BAUD 9600 #define...
jeśli chodzi o przerwania korzystaj z SIGNAL a nie ISR (a dlaczego? to już sobie sam doczytaj) Wycinek z <avr/interrupt.h> z najnowszego AVR-GCC #if defined(__DOXYGEN__) /** \def SIGNAL(vector) \ingroup avr_interrupts \code #include <avr/interrupt.h> \endcode Introduces an interrupt handler function that runs with global...
Problem leży tu: SIGNAL(USART_RXC_vect) { if(UDR=='$') zapis=1; if((i<14)&&(z... { buf[i]=UDR; i++; } if(i>=14) { k=1; zapis=0; i=0; } } Otóż odczyt z rejestru UDR powoduje jego wyzerowanie a następnie załadowanie następnego odebranego znaku (jeżeli...
1. Nie stosuj niestandardowego połączenia pinów w gnieździe programowania, bo gdy podłączysz programator zgodny z ISP z włączonym zasilaniem układu programowanego, to będzie buuuuuum: http://mikrokontrolery.blogspot.com/2011... 2. Coś pomieszałeś ten układ resetu. Rezystor 330 przy kondensatorze ma ograniczać prąd jego rozładowania...
Tak, lecz jest to sytuacja, którą opisałem w poście #3. Z drugiej strony, ja bym przedstawiony przez ciebie problem rozwiązał inaczej - w dwóch przerwaniach. W przedstawionej sytuacji wysyłkę można zrobić całkowicie w oparciu o przerwania USART, a timer niech robi to do czego służy :) A jakieś inne różnice?
Zmień funkcję w przerwaniu: ISR(USARTUDRE_vect), postaraj się wmontować tam while, coś na kształt: [syntax=c] void USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ) UDR = data; } [/syntax] Nie czekasz nigdzie aż się bufor transmisji opróżni i wysyłasz cały czas coś.
Kod nie jest przenośny nawet po: ISR( USART_RXC_vect )
Skoro przerwanie ISR(USART_RXC_vect) używa się, gdy do mikrokontrolera przesyłamy dane z urządzenia zewnętrzengo, to w moim programie zastosowanie przerwania od nadawania: ISR(USART_TXC_vect) byłoby na miejscu? (być może jest to zupełnie niekonieczne, ale jestem ciekawy czy dobrze rozumuję).
Moduł USI umożliwia prowadzenie transmisji poprzez interfejsy szeregowe I2C lub SPI. I to bedzie najlepsze rozwiazanie Mega16(I2C)<->Tiny(USI). Resztę pdf'ka Ci powie. Dodano po 8 a opóźnienia można zminimalizować robiąc komunikacje na przerwaniach o tych modułów.
Nie da się na to pytanie odpowiedzieć nie widząc kodu. USART obsługujesz w przerwaniach? Pamiętaj, że na czs jego wykonania inne przerwania są blokowane, użycie nieblokujących handlerów przerwań wymaga głębszej analizy. Ale generalnie spójrz na to w ten sposób - procesor przez 40% czasu się nudzi. Więc dla 16MHz masz sytuację taką, jakbyś miał cały...
Przykład obsługi przerwania od przycisku poziomem niskim: [syntax=c] //**************************************... // // File Name: 'main.c' // Title : AVR DDS2 signal generator // Author : Scienceprog.com - Copyright (C) 2008 // Created : 2008-03-09 // Revised : 2008-03-09 // Version : 2.0 // Target MCU: Atmel AVR...
Witam, Rozumiem,że chciałeś aby program dwukrotnie wytransmitował słowo hello. Wszystko jest ok poza jednym małym szczegółem. Całą transmisje masz w przerwaniu od nadajnika (UART Transmit Complete ), jednak takie przerwanie nie zostanie zgłoszone dopóki nie zostanie wytransmitowany jakiś znak. W main musisz rozpocząć trasmisję poprzez wysłanie pierwszego...
char c; int a=0; ISR(USART_RX_vect) { c = UDR; a = 1; } Zmienne c oraz a isnieja tylko w przerwaniu. Po zakonczeniu przerwania giną... Aby przerwanie moglo ingerowac w zmienne globalne: volatile char c; volatile int a;
Witam. Do Atmegi mam podłączony enkoder z drukarki na INT0 (obsługuje przerwanie). oraz rs232 , który komunikuje się z aplikacją na PC(też przerwanie). Opcja pierwsza: czytam dane z enkodera manualnie : mam o programie guzik "daj dane". Gdy kręcę enkoderem jak szalony to w lewo to w prawo a potem wciskam guzik "daj dane" to dostaje to co trzeba - znaczy...
Pomyłka. Sprawdzać trzeba nie UDRE, ale TXC. W dodatku trzeba go kasować programowo, jeśli nie używasz przerwania Od TXC. Spróbuj tak: unsigned char USART_Receive( void ) { while ( !( UCSRA & (1<<TXC)) ); UCSRA = 0x40; while ( !(UCSRA & (1<<RXC)) ); return UDR; }
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>...
Ja ogólnie etap migania diodami mam już za sobą zrobiłem parę projektów prostych wykorzystujących TIMERY, Przerwania zewnętrzne, obsługę klawiatury bądź LCD i teraz zamierzam się właśnie dokształcić w interfejsach a doświadczenia w tym temacie nie mam, dlatego też pytam się was. A co sądzicie aby ten problem spróbować zrobić na interfejsie SPI? Z tego...
Prosty program na AVRStudio : #include <m16def.inc> ; Prohibits use of non-implemented instructions (ATmega16) .dseg .org SRAM_START .cseg ;—————R...
Dlaczego podczas odczytu I2C nie będą uwzględniane przerwania? Ja ich na ten czas nie wyłączam, chyba że robi się to sprzętowo. Sam fakt, iż robisz to w obsłudze przerwania, powoduje, że obsługa pozostałych przerwań jest minimalnie opóźniona (stąd obsługa przerwań powinna być błyskawiczna i przekazywać istotne dane do przeliczenia w pętli głównej)...
Witam. Chce zrobic transmisje szeregowa usart miedzy dwoma stmega 16 z predkoscia taktowania lini 250kbitsow. Z obliczen wyszlo mi ze UBRR dla Q16mhz bedzie rowne 4 :), a dla Q= 8mhz bedzie rowne 8 :) . Ale to jeden z mniejszych problemow.... Jak w srodowisku IAR(ktore jest naprawde niedoceniane, wersja free do 4kb kodu) napisac funkcje realizujace...
A nota katalogowa przeczytana ? ;) (USART»Accessing UBRRH/UCSRC Registers»Read Access) - s. 160/161 Trzeba 2 razy czytać, cykl zegarowy po cyklu (przerwania trzeba wykluczyć na czas odczytu), aby odczytać zawartość UCSRC . Przykład w asm i C w tabelce na s. 161. Pozdrawiam, Light'I
Witam, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
Skoro nikt mi nie potwierdził że schemat jest dobrze to ja sam potwierdzę (jest dobrze, przetestowałem na żywo). Atmega16, zewnętrzny rezonator kwarcowy 16MHz. Rzeczywiście max to 1Mbps. Teraz kolejne pytanie. Transmisja asynchroniczna działa bez problemu, natomiast jak chcę przesłać dane wykorzystując transmisje synchroniczną to odbierane są krzaki......
jestem tylko trochę bliższy prawdy. Ciekawy jestem czy dobrze myślę. Ale mam też dużo niejasności. Czyli tak: 1.Zezwalam na globalne przerwania. 2. Ustawiam prędkość w TWBR 3. Ustawiam w TWCR: TWEN - odpalenie sprzętu TWIE - odblokowanie przerwania sprzetu Do tej pory chyba na razie nic się nie dzieje. 4. Ustawiam w TWCR TWSTA Czy w tym momencie generowany...
Witam Napisałem na podstawie kursu http://mikrokontrolery.blogspot.com/2011... program na uC Atmega16 mierzący napięcie ,lekko go modyfikując ,żeby wynik pomiaru zamiast na LCD został wysłany przez UART/USART do AVRTV na uC Atmega8 . Obsługę UART znalazłem tu http://www.forbot.pl/forum/topics49/c-ua...
witam chcę zrobić obrotomierz na atmega16 mający dwa wejścia, oraz kontaktujący się z PC przez rs232. Impulsy z przerwań są zliczane przez czas 1 sekundy a następnie przemnażane przez 60 i wyświetlane na wyświetlaczu. Po wyświetleniu chce je przesłać do PC, gdy to robię wartość pomiaru jest zaniżana na lcd oraz PC. Np z włączonym przesyłaniem prędkość...
Witam, mam takie pytanie - bo napisałem sobie kilka że tak powiem własnych funkcji i procedur do obsługi różnych modułów procka ale dla przykładu weźmy moduł UART. Napisałem sobie całą obsługę na przerwaniach lub bez w zależności od parametrów. Także opcjonalnie obsługę z przerwaniami i bez czy RS485. I wszystko działa ślicznie ale głównie wtedy gdy...
Rozwiązanie jest proste - stosować _delay_us z <util\delay.h>. Przy 1MHz co prawda można minimalnie mieć 3us opóźnienie, ale w tym przypadku jest to bez znaczenia. A BTW, dziwię się po co tak komplikować prostą sprawę jaką jest obsługa 1-w, skoro nawet w notach aplikacyjnych Atmela pokazane jest jak to zrobić na USART, bez jakichkolwiek opóźnień,...
Używam Timera1 z Atmega164P w trybie CTC, Atmega ma kwarc 16MHz, interesujący kawałek programu wygląda tak: Konfiguracja Timera: void Timer1_Init(void) { DDRD |= (1<<PD7); // PD7 wyjście PORTD |= (1<<PD7); // PD7 <= 1 TCCR1B = (1<<WGM12)|(1<<C...
Dodatkowo radziłbym korzystać z przerwania USART_RXC_vect niż z funkcji UART_Recieve(), ponieważ z własnego doświadczenia wiem że sprawia problemy. CO do timera, np. tutaj http://ppelczynski.swspiz.pl/userfiles/f... i oczywiście w datasheecie atmegi masz ustawienia timera i lekkie wprowadzenie w temat. Ogólnie możesz inicjować timer gdy zaczynasz...
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
nie wiem czy dobrze myślę, ale to nie ma szans działać, bo procesor jednocześnie nie nadaje i odbiera... Ma szanse działać ;) zapewniam cię. Tylko trzeba to dobrze oprogramować. Wprawdzie sam kiedyś tak myślałem ale ostatnio aż się zdziwiłem że kody wygenerowane w podczerwieni z diody IR (za pomocą zresztą programu z PC'ta, który przez USART wysyłał...
witam, o ile poradziłem sobie odbiorem w przerwaniu to nie mogę zmusić ATmegi168 do wysyłania tablicy charów w przerwaniu. stosując pooling działa: [syntax=c] for(int i=0; i<10; i++) USART_Transmit(buff[i]); [/syntax] jak uzyskać ten sam efekt stosując przerwanie: [syntax=c] ISR(USART_TX_vect) [/syntax] i jeszcze funkcja inicjalizująca USART: [syntax=c]...
atmega16 usart usart przerwania przerwania usart
licznik skakać wymontować sterownik sterowanie zamkiem peugeot
problemy harman kardon odkurzacz dreame
Jungheinrich TFG 435s – kody błędów E0809.3, E0805.11: znaczenie i kasowanie Mercedes Tourismo 2008 – kod 15, styk 15, brak napięcia po zapłonie, przekaźnik K15, Front-SAM