Za pomocą bitów CSn2 CSn1 CSn0 możesz ustalić podział częstotliwości kwarcu przez 1,8,64,256,1024. Aby uzyskać dokłądnie sekundę musisz ustawić podział na 8 lub 64. Wtedy do timera musisz wpisać odpowiednio 65536-62500 lub 65536-15625 (do rejestrów TCNTnH starsze 8 bitów i TCNTnL młodsze osiem bitów). Przepełnienie jest sygnalizowane flagą ToVn którą...
Konfiguracja prescalera jest w TCCR0 B a nie TCCR0A.
no to przychodzi mi do głowy wersja radykalna: przeinstaluj toolchain i biblioteki. Przeklepałem ten kod do siebie i nie ma siły, działa dobrze, warningami nie rzuca.
Nie nie rób się kaczką albo sie prześpij ahahahahahaha :D OCIE1B zamieniasz na OCIE1A OCR1B zamieniasz na OCR1A zamieniasz wektor TIMER1_COMPB_vect na TIMER1_COMPA_vect kasujesz wszędzie to TCNT1=0 bo nie ma sensu Dla Timer0, w przerwaniu, pod linijką "dot ++ ; " dopisz TCNT0 = 6; To też można na palcach policzyć: 8MHz to jest na sekundę a sekunda ma...
Jeśli się kręci w while'u, to może kwarc który ma taktować timer nie rusza? ps. możesz w miarę możliwości inicjalizować timer (ASSR) przez przypisania, a nie ustawianie bitów? Ustawienie bitów wymaga odczytania wartości rejestru, a timer przy pracy asynchronicznej może się z tym kłócić (nie doczytałem do końca). ps2. Flagi przerwań kasuje się przez...
Witam, chciałem uruchomic asynchroniczny generator 32,768kHz w procku Atmega 128. Z dokumentacji wynika ze ma on taktowac timer0 po ustawieniu bitu AS0 w rejestrze ASSR. Owszem po ustawieniu tego bitu oscylator uruchamia sie (widac sinus 32k na oscyloskiepie) jednak timera0 nie taktuje. Po przerzuceniu taktowania na Xclk wszysto jest OK. Czy ktoś miał...
Power-down Mode ... This sleep mode basically halts all generated clocks, allowing operation of asynchronous modules only. Tabelka: Active Clock Domains and Wake Up Sources in the Different Sleep Modes pokazuje, że w Power Down Timer0 nie może wybudzić mikrokontrolera. Innymi słowy timer0 w trybie asynchronicznym liczyć będzie, ale nie może zbudzić...
Wkleje plik includowany z obsługa LCD, który stosuje oraz czesc programu głownego: LCS.asm: ;=======================================... ; Obsluga LCD zgodnego z HD44780 dla 8-bitowej szyny danych v1.0 ; Nie obsluguje BUSY flag ani odczytu adresu z LCD ;!!! Znak lub komenda do wyslania do LCD przekazywane sa przez...
Nie wolno ci w ethernucie uzywac Timera 0 jest on przeznaczony dla systemu operacyjnego :) - ponizej z helpa void NutRegisterTimer ( void(*)(void *) handler ) Initialize system timer. Initialize system timer hardware. This function is automatically called by Nut/OS during system initialization. Nut/OS uses on-chip timer 0 for its timer services. Applications...
Działa. Pewnie o czymś zapomniałeś na wstępie. Mój działający kod: .include "m128def.inc" .cseg .org0x0000 rjmpreset ;skok po resecie systemu .org0x0018 rjmpdata ;skok po wykryciu zgodności reset: ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 rcallKONFIGURACJA_TIMER1 sei loop: nop rjmploop ;......
(...) żdy zasilany z osobnego źródła i odseparowany transoptorami PC817. Ze względu na ich szybkość oraz niską wartość prądów je sterujących 1mA zegar musi być obniżony do 10KHz ma. Chcę zrezygnować z polecenia: waitus 100 w zamian zrealizować to w obsłudze timer0 a w główną pętle przeznaczyć na inne cele. Rozumiem, że chcesz optymalizować swoje oprogramowanie...
Za takie i tyle błędów to powinno się nazwać ich po imieniu :). Do czasu aż wprowadzą poprawki poniżej zamieszczam pdf z czerwca 2010.
ISR (TIMER0_COMP_vect) { //cykliczne przełączanie anod w każdym przerwaniu anod każdego wyświetlacza (wartość negowana aby krążyło 0) ANODY_PORT = (ANODY_PORT & 0xF0); //gdy zapalony wyswietlacz 1, podaj stan zmiennej cy1 itd if(licznik==1) LED_DATA = pgm_read_byte(&cyfry Jakbym nie patrzył nie widzę tutaj przełączania anod. Zapis: ANODY_PORT...
Kod piszę "na sucho", więc lepiej sprawdź czy działa.[syntax=c] #include <avr/interrupts.h> void timer0_init(void){ TCCR0 = _BV(CS02); //Mode 0, normal operation, prescaler 64 TIMSK |= _BV(TOIE0); //Timer/Counter0 Overflow Interrupt Enable } volatile unsigned long millis=0; volatile unsigned int okresy_migania_ledow[4] = {100,200,300,400}; ISR(TIMER0_OVF_vect)...
TCCR0=0x07; // port G jako wejście Że co? int main(void) { char digit } Funkcja main obejmuje nawiasem kilka funkcji przerwań. To się w ogóle kompiluje? Pół biedy że funkcja main. Pętla while(1) to obejmuje! Po za tym to SIGNAL pozamieniaj na ISR. ISR jest nowsze i przez to zalecane (choć w sumie kodu wynikowego pewnie to nie zmieni). I przy okazji...
...przy 10000HZ na LCD wyświetla 0666... No to prawie jak liczba szatana :) if(licznik==4) { T1=TCNT1; utoa( T1, bufor1, 10 ); lcd_gotoxy(3,0); lcd_puts(bufor1); TCNT1=0; } Widzę, że dodałeś pozycjonowanie kursora, żeby wynik za każdym razem był wyświetlany w tym samym miejscu wyświetlacza. Trzeba by jeszcze...
witam mam takie pytanko co nalezy zrobic aby uzywac usarta1 w atmega128, w up z jednym tylko usartem wystarczy skonfigurowac parametry transmisji poprzez $baud = ... natomiast atmega128 posiada dwa usarty i chcialbym korzystac z usart1 mam jeszcze jedno pytanko chcialbym na tym up zrobic zegar czasu rzeczywistego (rtc) z dokumentacji wyczytalem ze mozna...
Witam Potrzebuję pomocy w przeportowaniu kodu źródłowego z BASCOM na C (Atmel Studio 6) - mikrokontroler ATMEGA128 Na początek fragment takiego kodu: [syntax=basic4gl] Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down...
Troche sie zamotałem i nie wiem jak wybrnąć... Jak zliczyc przerwania on timer0, innymi słowy jak policzyc ile 1ms wystąpiła przy podczas przerwania wtrysku... [syntax=basic4gl] $regfile = "m128def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 32 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6...
Czyli dla timera 0 powinno wyglądać to tak? ISR (TIMER0_OVF_vect) { ... ... ... }
Witam! Robię układzik (mianowicie sterownik do akwarium) i musi w nim być podtrzymanie czasu w razie awarii zasilania głównego (sieciowego). Mikrokontroler, to ATmega128. Generalnie najbardziej podoba mi się rozwiązanie na RTC wewnętrznym (Timer0 z podpiętym kwarcem 32768Hz). Nie wiem, czy użyć akumulatorka, czy baterii (i to, i to 9V/200mAh). Układ...
Witam! postanowiłem użyć dwóch timerów lecz za chint nie chce mi to działać :( [syntax=basic4gl]Sub Tmr1 Cls Dim Sek As Byte Enable Interrupts Config Timer1 = Timer , Prescale = 256 Enable Timer1 Timer1 = 34286 On Timer1 Czas: Start Timer1 Sek = 0 Locate 1 , 1 : Lcd " Czas zadzialania" Locate 2 , 12 : Lcd Chr(1) : Lcd " -MENU" Locate 4 , 12 : Lcd "C...
Wybacz, ale nie rozumiem współpracy tych linii kodu. Zastanów się nad użyciem [syntax=c]ISR(TIMER0_OVF_vect) { timer0_licz--;[/syntax] i dalej, cała funkcja [syntax=c]void delay_500ms(void) { ATOMIC_BLOCK(ATOMIC_FORCEON) { TIFR |= _BV(TOV0); //zerowanie flagi przerwania (zapis 1) TIMSK |= _BV(TOIE0); //aktywacja przerwania od przepełnienia TIMER0 (OVF)...
Kurdę no przerwanie jest wywoływane co 310us a to jest bardzoooo wiele cykli zegara na to by mogła się wykonać cała pętla while, cały czas nie rozumiem czemu na atmega 16 działa a na atmega128 nie chce działać :/ sprawdzałem bity ustawiające timer i przerwanie, są one takie same dla mega 16 i 128 więc nie wiem w czym jest problem :( Ten program działa...
Ten kod jest napisany dla ATmega103 ( niedostępny już w handlu) a jego następca to ATmega128. Poniżej poprawki dla WinAVR ( ten kod był dla kompilatora IAR): 1. #include <iom103.h> #include <ina90.h> ma być #include <avr/io.h> #include <avr/signal.h> 2. type def struct{ ma być typedef struct{ 3. interrupt /**** A V R A P P L...
Czy ktoś robił testy (pomiary) jak wpływa na pobór prądu przez ATmega128 dołączenie kwarcu 32kHz do pinów PG3 i PG4? Chciałbym wiedzieć, jaka jest różnica w poborze prądu dla trybu IDLE z kwarcem głównym i bez kwarca 32kHz a trybem POWER-SAVE z kwarcem 32kHz (główny jest wtedy wyłączony). Dodam, że w obydwu trybach procesor byłby budzony 32 razy na...
DDRD|=(_BV(PB5) | _BV(PB6) | _BV(PB7)); DDRD|=(_BV(PE3) | _BV(PE4) | _BV(PE5)); Widzisz tu subtelną różnicę...? Działające wstawki dla pwm na Tim1 i Tim2: [syntax=c]void Timer0Init(void) { DDRB|=(1<<4); TCCR0 |= (1<<WGM01)|(1<<WGM00)|(1<... OCR0=0; } void Timer2Init(void) {...
Porównaj rysunki - Figure 34 s.90 (Timer0) i Figure 46 s.110 (Timer1) - Timer/Counter0 ma wejście Tx ? Ewentualnie może być napędzany z "kwarca zegarkowego" 32768 Hz. Masz za to T1 i T2 na otarcie łez... ;) Pozdrawiam, Light-I
Poczytałem trochę o timerach i prescalerach i mam nadzieję że teraz napisałem obsługę timer0 bez "rażących" błędów :?: Program posiada dwa założenia: zlicza liczbę zapisanych na SD zmiennych typu word lub zlicza ilość odczytów z ADC w ciągu 1sek, wyniki wyświetla na lcd. Zmieniłem również zmienną "f" liczącą zapisy/odczyty z byte na single bo zorientowałem...
1. pokaż schemat i ewentualnie kod. 2. zobacz czy nie masz podłączonych pinów gdzieś, gdzie możesz mieć załączone timer0 lub timer1 (PWM) ,przerwania. miałem podobny problem ze sterownikiem KSO108. piny OC1A, OC1B, INT... (mimo ich zadeklarowania jako wyjścia dla LCD mogą robić zupełnie coś innego) zamień chwilowo na inne. 3. bez schematu dalsze zgadywanie...
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...
Jest to wersja procesora ATMega128, tylko z pełnym interfejsem CAN Nie różni się mocno wyprowadzeniami, ani pozostałymi parametrami od mega128. Co nowy procek stracił: - nie ma możliwości podłączenia zewnętrznego RC pod Xtal1 - mniej możliwości podziału częstotliwości zegara - usunięto tryb Extended Standby - nie ma już trybu ATMega103 CM Co zyskał:...
No chyba coś robię nie tak, bo nie działa. Zrobiłem w ten sposób : Var_byte = Sfior Var_byte = Var_byte Or 128 Sfior = Var_byte ' ustawiam TSM na "1" Var_byte = Var_byte Or 2 Sfior = Var_byte ' wpisuję "1" do PSR0 - kasowanie preskalera ' *** TIMER0 JAKO PWM Ocr0 = 0 Tccr0 = &B01101010 'timer0 in fast pwm mode, prescale = 8 10kHz...
Myślę że forum jest nie tylko po to by pytać. Kolega zdążył zamknąć wątek i napisał że Bascom nie pozwolił na skonfigurowanie Timera i musiał to zrobić na rejestrach. Nie wiedział jak, a ja chciałbym dla potomnych zostawić instrukcję. Dołączyłem ten post i odblokowałem temat. Tak to wygląda i się kompiluje: [syntax=basic4gl]$regfile = "m128def.dat"...
Przerobiłem tak, żeby wysyłał testowo tylko jedną wartość ( losową ) co 8 sekund Dodano po 18 Dołożyłem Clear Serialin0 Com1_str = "" czyli [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0...
Bascom tablice numeruje od 1. Można w nim zrobić tylko tablice jednowymiarowe. Ale masz w Atmedze128 4 liczniki. Nigdy nie robiłem nic na ATmega128. Ale właśnie ściągnąłem datasheet i widzę że timer3 ma 3 rejestry OCR timer1 2 rejestry timer2 i timer0 po 1 rejestrze. To razem osiem. A jeszcze pojemność liczników ustawiana-to jeszcze 4. To są różne częstotliwości...
Witam, Zamiast przekładni mechanicznej chcę zrobić (a nawet już zrobiłem) przekładnie programową. Silnik asynchroniczny zasilony falownikiem napędza jedną oś. Umieszczone na niej jest kółko z 5 otworami. Do tego 2 transoptory szczelinowe z czego jedne na przerwanie INT0 drugi na normalne wejście Atmegi128. Timer0 liczy czas pomiędzy przerwaniami. Z...
Witam Mam 7 układów DS18B20 i chciałem dokonywać ich odczytu w kolejności. W przerwaniu od Timer0 ustawiam co 4 sekundy flagę, która ma spowodować wywołanie programu odczytu. Wywołanie od przerwania Timer0 Wywołanie programu pomiaru Podprogram pomiaru Zdefiniowałem zmienne Case nie ma chyba sensu, bo w momencie wyboru z Case, dane jeszcze nie są obliczone.
Witam, Chciałbym przerobić nie swój kod programu pod żyroskop l3g4200d. Kod znalazłem w internecie jest napisany właśnie na atmegę 1284p, a ja potrzebuję go przerobić na atmegę8. Kod wygląda następująco: [syntax=basic4gl]'======================... ' Project: L3G4200D 3tripple axes gyro Test #1 '...
Oto skomentowany kod: [syntax=c]int main(void) { //DDRD |= ((1<<PD0) | (1<<PD1)); sei(); TIMSK |= (1<<TOIE0); //Przerwanie overflow dla timer0 TCCR0 |= (1<<CS01); //Preskaler 8 TCNT0 = 131; //Początkowe wypełnienie timera while(1) { lcd_init(); } return 0; } ISR(TIMER0_OVF_vect) { TCNT0 = 131; //Początkowe wypełnienie timera...
To jest przyklad tego jak mozna obsluzyc DS1820 przez mega 8 ale jest tam tez obsluga wyswietlacza w C.Moze sie pryda.Sam to dostalem od jednego kolegi z forum:-) wiec mam nadzieje ze sie nie obrazi...mnie interesowal DS. Pozdrawiam Maciek! #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <ctype.h> #include...
Witam. Podłączyłem kartę SD do uC ATmega128. Problem jaki się pojawił jest z gatunku tych najmniej ciekawych - po podłączeniu zasilania, karta raz się dobrze inicjalizuje, następnie zapisuje, odczytuje, dopisuje do plików wszystko co bym chciał, jednakże już za innym razem po uruchomieniu układu inicjalizacja karty zwraca błąd. A więc raz działa, a...
Zastosowany kwarc 16 MHz Config Timer0 = Timer , Prescale = 256 i mam kilka flag potrzebnych w programie Prztimer0: Timer0 = 5 Set Flaga_4ms Incr Dzielnik(1) If Dzielnik(1) = 25 Then Dzielnik(1) = 0 Set Flaga_100ms Incr Dzielnik(2) If Dzielnik(2) = 5 Then Dzielnik(2) = 0 Set Flaga_500ms Incr Dzielnik(3)...
W testach dane próbowałem wysłać tylko raz jak i dawać nadawanie w pętli, odbiór cały czas w pętli. Odbiornik (M8) ma także co chwila przerwanie od timer0 który multipleksuje wyświetlacz led 136x24 pixele :D przerwanie mam co jakieś 800uS aby wyświetlić jedną linijkę (rejestr przesuwny wbija 136 bitów) Nadawanie: [syntax=basic4gl]Do For A = 1 To 408...
Może najpierw parę słów wprowadzenia : Atmega128 - jej główne zadanie to sterowanie silnikiem DC, za pomocą tranzystora mosfet. Zasadniczo chodzi tylko o ON/OFF, dodany jest jedynie softstart PWM. Tranzystor ten sterowany jest z PB4 (OC0). Atmega zaś taktowana kwarcem 14.745.600 Hz. Dodatkowo , wykorzystane są 3 kanały ADC, w tym : ADC1 - do pomiaru...
Witam, wzorując się na książce "Mikrokontrolery AVR w praktyce" powstał taki oto kod #include <io.h> #define tau0 6 int main(void){ char licznik = 100; DDRB = 0x01;//wyjsciem generatora bedzie PB0 TCNT0 = tau0;//stala czasowa TCCR0 = 1; //timer0 bedzie pracowal bez preskalera while(1){ while((inp(TIFR)...
Być może ATmega1281, ponieważ ma ten sam pinout. Chcesz podobno Timer0 co najmniej 16-bit ? Jak dla mnie nie ma co kombinować, albo trzeba to rozwiązać programowo, albo zmienić layout PCB na ATxmega i użyć programatora z JTAG lub/i PDI. No chyba, że zależy tobie tylko na tym, aby mieć jeszcze jeden licznik 16-bit, to wtedy już znalazłeś.
Cześć, Napisałem program, który uruchamia 16-bitowy Timer (TCNT1 w ATmedze 128). W moim programie Timer zlicza przez 128ms (dolicza w tym czasie do wartości 1000). Następnie wyświetla młodszy i starszy bajt Timera na wyświetlaczu alfanumerycznym (odpowiednio wartości dziesiętne 232 oraz 3). Do tej pory wszystko działa, ale gdy chcę wysłać odczyt każdego...
Witam męczę się już od dawna z przerwaniem od timera 0. Wymyśliłem sobie że po przepełnieniu licznika 0 ma nastąpić przerwanie. Licznik 0 liczy od 0-255 chciałem miec kontrolę na częstotliwością wywoływania przerwania więc gdy przerwanie jest wykonywane wpisuję od razu do licznika konkretną liczbę tak by miał on mniej do zliczania. Problem polega na...
Witam Męczę się nad uruchomieniem obsługi RC5 w Atmega128 na pinie E.4 (INT4). Konfiguracja wygląda tak: [syntax=basic4gl] Config Rc5 = Pine.4 On Int4 Readir Config Int4 = Low Level Enable Int4 [/syntax] Procedura odbioru tak: [syntax=basic4gl] Readir: Disable Int4 sei Getrc5(adres , Rozkaz) Rozkaz = Rozkaz And &B01111111 Return [/syntax] Generalnie...
a czy mógłbym w takim razie prosić o jakiś przykład z getrc5? ja używam czegoś takiego: '---------------------------------------... ' RC5.BAS ' (c) 2000 MCS Electronics ' oparte na nocie aplikacyjnej AVR410 f-my Atmel '---------------------------------------... $regfile "m1280def.dat"...
Mam problem z wysyłaniem sms, wykorzystuję atmege128 i moduł sim900 na płytce Evb v1.01_pcb , proszę o rzucenie okiem na kod gsm.c [syntax=c]// PLIK: gsm.c // Dołączone biblioteki #include <avr/io.h> // Biblioteka obsługująca peryferia mikrokontrolera #include <avr/interrupt.h>// Biblioteka obsługująca przerwania mikrokontrolera #include...
Witam Zawsze bawiłem się z atmega32 ale od do projektu potrzeba mi 6 kanałów PWM 16bit (sterowanie 2 serwa i 4 regulatory z rewersem). Zastosowałem atmega128 T1 i T3 . Wszystko było było by OK ale na kanale OC1C jest brak sygnału , zapewne banalne rozwiązanie ale jakoś nie mogę zatrybić nadajnika: [syntax=vbnet]$regfile = "m32def.dat" $crystal = 16000000...
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...
Witam. Mam problem z inicjalizacją wyświetlacza LCD w trybie 8 bitowym. Jeżeli ktoś czuje się dobrze z asemblera i ma ochotę pomóc mi znaleźć problem to będe bardzo wdzięczny. Układ pracuje z kwarcem 16MHz i zasilany jest napięciem 5V .include "m128def.inc" ;KONFIGURACJA LINII ATMEGA128 .EQUK_ST_LCD_DB=DDRC;Kierunek portu STEROWANIA WYSWIETLACZEM...
Podłącz sonar do interfejsu TWI w ATmedze 128. Wyjście ANOUT zostaw w spokoju. Sonar trzeba tak czy siak uruchamiać po i2c, a skoro tym samym interfejsem odczytuje się odległość, to nie widzę najmniejszego sensu samego wyjścia ANOUT. Zakładam że znasz chociaż bascoma i będziesz wiedział co z tym zrobić ;) Kod jest z robota, stąd trochę niepotrzebnych...
Dzięki za podpowiedź. Będę mógł sprawdzić dopiero pod koniec tygodnia. Niestety dopiero teraz, jak "mam mokro w gaciach" wczytałem się w datasheet i wyględa na to, że zupełnie niepotrzebnie kombinowałem, bo miałem ustawione wszystko jak należy. Mam jeszcze jedno pytanie, ale dotyczy ono raczej assemblera i 1wire. Każdy, kto dłubie w asm, zostaje zmuszony...
Po pierwsze, timer liczy od 0 do 255, ale to oznacza 256 impulsów pomiędzy przepełnieniami, czyli powinno być 256, a nie 255 * 128us. Po drugie zaokrągliłeś wynik z 32.64 do 32 przed dzieleniem, co w efekcie dało niedokładny wynik ilości przepełnień. W rzeczywistości częstotliwość przerwań można obliczyć dużo prościej: ( 8000000 / 1024 ) / 256 = ok. 30,5176.....
Używam dwóch przerwań - TCCR0 do obsługi LED displaya i TCCR2 do operacji I/O. Wyświetlacz powinen mięć możliwość wyświetlania napisów które mrugają. A operacje IO są raczej asynchroniczne ale pojedyncza może trwać dłużej niż pojedyncze mrugnięcie wyświetlacza czyli "zamrozi" go w przypadku użycia display_routine() i i_o_routine() jedna po drugiej w...
Masz skasować flagę timera OCF0A [syntax=c]TIFR0 |= (1<<OCF0A); [/syntax] Możesz też włączyć przerwanie od Timera i zostawić pustą obsługę przerwania: [syntax=c] ISR (TIMER0_COMPA_vect, ISR_NAKED) { asm volatile("reti"); } [/syntax] Co spowoduje że cała obsługa przerwania sprowadzi się do RETI
Pierwsze pytanie - czy w inny sposób udaje ci się coś wyświetlić na LCD? I drugie - tam jest funkcja dodająca transakcje, która przy okazji włącza timer. Poprawiłeś ją? Chodzi o tą: [syntax=c] bool LCD_PutText_B(uint8_t x, uint8_t y, char *txt, LCD_trans *buf, bool autodel) { buf->cmd=LCD_Text; buf->Ready=false; buf->SelfDel=autodel; //Czy zwolnić pamięć...
Niby wszystko jest w porządku a za żadne skarby nie chce poprawnie działać. Kiedy przy timerze 2 ustawiam wartość prescalera na 256, to wychyla się w prawo, a jak na 1024 to w lewo. Ma to też wpływ na prędkość ruchu i siłę, ale nie rozumiem dlaczego. Poza tym cały czas lekko drży. Na razie używam wewnętrznego oscylatora, bo nie dopatrzyłem i wlutowałem...
Mieszasz symbole timerów i dlatego masz problem w szczególności w z: TIMSK0 Zapewne przerabiałeś kod z Timer0 na Timner1. CS01 itp takżę są z Timer1 choć akurat fuksem znaczą to samo. Edytowałeś: a sei wyrzuca błąd kompilacji Po pierwsze, to pokaż błąd ... ale jeśli mam być już wróżką to dołącz nagłówek przerwań interrupt.h
Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...
Spoko, tylko to jest na ATmega128. Co do kart pamięci to musiałbyś napisać obsługę sam. Generalnie poczytaj notę katalogową. //inicjalizacja Timera 0 jako generatora PWM void Timer0_PWM_mode() { DDRB |= (1<<4); TCCR0 |= (1<<WGM00) | (1<<WGM01) | (1<<COM01) | (1<<CS00);...
Usunąłem Wait 1 przy konwersji z DS18B20, działa, bez problemu ( na trzech przewodach ), tylko wyniki są opóźnione - tzn. wyświetlany wynik nie jest z aktualnego pomiaru, tylko z poprzedniego. Dodałem jeszcze dwa czujniki DS18B20. Ich zapis razem z godziną i datą na karcie jest jak najbardziej w porządku, tylko wyświetlanie trochę szwankuje - tzn. czasem...
Hi, mam tu AT45DB321D, na kosci faktycznie cos takiego pisze. ATMEL 0746 45DB321D SW SOIC8. Probowalem pomiedzy 10MHz a 500KHz, te same stabilne odpowiedzi. Jedziemy na 20MHz CPU, ext crystal resonator. wszystko obejrzalem pod oscyloskopem, SPI z ATMEGA88 dziala, to nie pierwszy taki moj boj na SPI, wiec czytam sobie datasheet i co pisze: Manufacturer...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Dalej nie o to chodzi. Mam wrażenie że timer0 jest za wolny, widzę kilka cyfr na raz.
Między zapisami "0001 18:43:28 Sr 30/Lis/11" "0002 18:45:29 Sr 30/Lis/11" "0003 18:47:31 Sr 30/Lis/11" "0004 18:49:32 Sr 30/Lis/11" "0005 18:51:33 Sr 30/Lis/11" "0006 18:53:35 Sr 30/Lis/11" czy w podprogramie Timer2 powinno być Timer2 = 6 albo Timer2 = Timer2 + 6 Bo ten wpis znalazłem w jednym z kursów EP. Tam też było 2 ms - tyle, że na Timer0, ale...
Witam! Z tego co zauważyłem, a to: '-------------------------obsługa przerwań--------------------------------... '''''''''''''''''''''''sekunda - przerwanie od zegara'''''''''''''''''''''''''' Calasekunda: Cala_sekunda = 1 Stop Timer0 Impp = Tcnt0 Tcnt0 = 0 Start Timer0 Liczba_taktow = Capture1 Capture1 = 0 Return wg. mnie powinno być: '-------------------------obsługa...
Nie. Timer1 jest używany jako podstawa czasu, SECONDTICKS mówi jak często pojawia się przerwanie od timera 1. Użycie któregokolwiek z trybów PWM zmieni np. wyzeruje timer1 i odbieranie DCF nie będzie działało poprawnie. Możesz wykorzystać inny timer z PWM, albo wykorzystać nowy mikrokontroler Atmega168, gdzie timer0 ma też PWM.
prescale 256 miałem dlatego że najpierw używałem timer0 a później zmieniłem na 2 a nie zwróciłem uwagi że timer2 ma prescale =128. a ja to robiłem ładując do niego 128 wiec i tak liczył poprawnie. Ale w atmega8 , w 168 nie działa mi zewnętrzny kwarc który oczywiście jest podłączony
Witam. Na wstępie chciałbym napisać iż szukałem informacji na ten tematu na tym forum a także na google ale nie znalazłem jednoznacznej odpowiedzi. Otóż czy używając sprzętowego PWM w uC blokuje jego timery? tj. o co mi chodzi. Otóż atmega 168 posiada: 6 kanałów PWM 2 timery 8bit 1 timer 16bit z noty katalogowej widzę iż 6 kanałów PWM OC0A - wykorzystuje...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Co do rezygnacji z Waitms 750, to miałem kiedyś taki pomysł: - przerwanie od Timer0 wywołuje [syntax=basic4gl] 1wreset 1wwrite &HCC 1wwrite &H44 [/syntax] reset licznika reset flagi - przerwanie od Timer0 wywołuje [syntax=basic4gl] '*************** Czujnik 1 1wreset 1wverify Dsid1(1) Ds1_brak = Err Rfm_tab(6) = Ds1_brak 1wwrite &HBE Rfm_tab(8) = 1wread()...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Co myślisz o tym żeby użyć tylko jeden Timer? [youtube]https://www.youtube.com/watch?v... [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a :...
Mam płytkę nadajnika na Atmega328 ( odbiera sygnał DCF77, ma zegar PCF8563 oraz obsługuje czujniki DS18B20 ), sprzętowe SPI. RFM12 mam w wersji S, czyli SMD na 5V, wiec cały układ jest zasilany z 5V. Układ programuje się bez problemu, nie trzeba wylutowywać RFM12 lub wyciągać Atmegi.Testowo chciałem przesłać dane o czasie i dacie. W zamieszczonym kodzie...
Witam, mam prośbę, czy mógłby ktoś sprawdzić mojego Makefil'a, ponieważ podczas kompilacji wrzuca mi błąd o kodzie: avr-objcopy: 'main.elf': No such file make: *** [syntax=c]//sterownik wyswietlacza #include "HD44780.h" //usawiasz tam porty sterujące, nie musisz ogarniać kodu #include <util/delay.h> #include <avr/io.h>...
Witam, drogich forumowiczów. Mam problem z komunikacją kilku urządzeń w sieci rs485. A tak prawdę mówiąc to z komunikacją pomiedzy dwoma, jednym "master" i jednym "slave". Normalnie staram się zadawać pytania w ostateczności na forum Elektroda, ale po prawie 3 tygodniach siedzenia przy problemie, przeglądaniu masy poradników i postów związanych z rs485...
A mógłby mi Kolega podpowiedzieć odnośnie odtwarzania plików, jeden po drugim ? Zrobiłem to tak: [syntax=vbnet] Godziny = 20 Minuty = 34 Do If Powiedz_czas = 1 Then If Powiedz_godzina = 1 Then Godziny_plik = Lookup(godziny , Godziny_mow) '************ odtwarzanie pierwszego pliku w pierwszym folderze Tf16p_data(4) = &H0F ' CMD Tf16p_data(6) = &H02 '...
Czołem! Chciałem napisać własną funkcję delay_ms w oparciu o timer procesora Atmega168. Namęczyłem się z tym strasznie, aż w koncu wziąłem gotowca - trochę przerobiłem - i dochodzę do takich wniosków, że Ten kod nie działa(nie wiem czemu) - próbuje w nim mrygać diodą przypięta do portu B za pomocą odczekiwania 10[jednostek czasu] poprzez wywołanie funkcji...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
(...) Więc pytanie- zastosujesz rezonator kwarcowy w tym rozwiązaniu czy będziesz dalej próbował coś działać z generatorem RC? Zdecydowanie kwarc. Czym większa stabilność pomiaru częstotliwości tym większy zasięg wykrywacza. Pozdrawiam Dodano po 3 Dla uzupełnienia tematu działający prototyp: Filmik: http://youtu.be/bQox3S40gTE http://obrazki.elektroda.pl/2340370400_1...
Witam wszystkich, robię mały projekt do którego używałem Atmegę8. Zaczyna mi brakować pamięci więc stwierdziłem, że wymienię ją na Atmegę328. Niestety jest trochę zabawy z przerobieniem kodu, po pierwsze w Atmega328 nie można używać PD0 itp, tylko PORTD0. Po drugie timery ustawia się innymi rejestrami. Ogólnie program sobie przerobiłem, niestety została...
Przepraszam za post pod postem- ale w końcu zrobiłem. 'Program do sterowania małych silników krokowych za pomocą ATMega168 it.p. i układu L6219 lub LB1845 'sterowanie ćwierćrokowe, zasilanie 40V $regfile "m168def.dat" $crystal = 8000000 Config Lcd = 16 * 2 $lib "Lcd4busy.lib" Const _lcdport = Portd Const _lcdddr = Ddrd Const _lcdin...
Witam :) Jako ze jest duzo pytan na forum na ktore odpowiedz padla, postanowilem ze zbiore choc troche postow do kupy, tematy dotycza glownie AVR, bo z ARMow jeszcze nie czuje sie na tyle na silach zeby robic FAQa ;) Mam nadzieje ze sie komus przyda :) Niby FAQ jest, ale dla mnie jakoś malo czytelny i chyba nikt go juz nawet nie aktualizuje ;) Jesli...
Sterowanie obrotami silnika powinno być w przerwaniu od timera. Trzeba wstawić flaga_1ms. No i dodać jakiś licznik kroków. To jest ostatni kod popełniony w Bascomie: 'Program do sterowania małych silników krokowych za pomocą ATMega168 it.p. i układu L6219 lub LB1845 'sterowanie ćwierćrokowe, zasilanie 40V $regfile "m168def.dat" $crystal =...
No, prace nieco "meandrują". Ponieważ normalny przyniesiony z firmy sterownik musiałem zamontować w firmowym ploterze- bo kolega skończył część mechaniczną- to zacząłem robić sterowanie do małego "doświadczalnego" silnika sterowanego przez L6219 na ATMega168. Oczywiście "po bożemu" w przerwaniu. To się gdzieś pęta na EL. Algorytm podany przez whitetom...
Dziś postanowiłem napisać program do "kręcenia" silnikiem BLDC Na początku program wyglądał tak jak w pętli _main: i aby silnik ruszył trzeba było mu pomóc Następnie chciałem użyć timera do obliczania czasu kroku i stało się coś dziwnego kiedy w przerwaniu Timer0 umieściłem DEC r15 silnikiem zaczęło lekko "szarpać", ale za to zaczął sam startować (nie...
Witam. Właśnie staram się zrobić mysz komputerową na atmedze 32 za pomocą biblioteki V-USB. Program testowałem na płytce rozwojowej z kwarcem 16MHz, atmegą 32 i wszystko działało. Po przeniesieniu się na moją płytkę z kwarcem 12MHz i przekopiowaniu kodu, na wyjściach D+ i D- mikrokontrolera nic się nie pojawia, D- stan wysoki, D+ niski. Oczywiście zmieniłem...
Witam. Otóż mam taki problem ;) Dwa czujniki DS18b20 podłączone są do osobnych pinów Atmegi168, PINB0, PINB1. Chciałem to zrobić w ten sposób aby w przerwaniu ustawiana była flaga (co sekundę) która realizowana była w pętli głównej while(1), w ten sposób, aby co sekundę na zmianę wykonywany został convert oraz odczyt. Wydaje mi się, że wszystko zrobiłem...
W ostatnim projekcie obniżając zużycie energii dobudowałem we FreeRTOS do istniejącego portingu AVR obsługę trybu "suppress ticks" czyli usypiania MCU zamiast aktywnego trybu bezczynności. Moja wersja wymaga kwarcu zegarkowego 32768Hz na pinach TOSC0-TOSC1 bo dla długich cykli snu używa trybu "power saving" gdzie działa tylko Timer0 w trybie asynchronicznym,...
http://obrazki.elektroda.pl/4758191500_1... Po kilku miesiącach pracy wreszcie jest! Teraz możecie pytać, która godzina! Pomysł projektu powstał, kiedy przez cztery dni autor podróżował po kraju. Kody QR są bardzo popularne z wielu powodów. Sprzedawcy uznają, że są one bardzo praktyczne i żądają umieszczania ich wszędzie, gdzie się...
Witam Do "kompletu" brakuje mi obsługi zegara DCF77. Tzn. uruchamiałem już wcześniej na Atmega8 i nie było problemów. Jednak przy tym układzie wykorzystuję Timer, przerwania - może konfiguracja jest zła ?. Timer0 - liczniki i flagi Timer1 - DCF77 Timer2 + INT0 - odbiór RC5 INT1 - przerwanie od PCF8574 Całość działa, do momentu podpięcia sygnału zegara...
Witam, mam kod: [syntax=basic4gl] Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 8 Config Timer2 = Timer , Async = Off , Prescale = 1024 , Compare = Disconnect , Pwm = Off , Clear Timer = 1 Config Timer3 = Timer , Prescale = 256 Config Int6 = Change On Ovf0...
Witam koledzy! Mam problem z pomiarem temperatury, przeszukałem forum i internet n razy w poszukiwaniu odpowiedzi ale nie natrafiłem na żaden trop. Sądzę, że błąd leży gdzieś w kodzie. Wynik pomiaru docelowo jest prezentowany na LCD 2x16. Pomiędzy VCC a DQ mam rezystor 4,7k zgodnie z notą DS'a (nie w trybie pasożytniczym) Atmega podłączona zgodnie z...
Mam problem z odbiorem danych z rc5. Kiedy uruchomię program demostracyjny rc5 z help'a bascom avr to wszystko dział poprawnie. Jeśli wkleję obsługę rc5 w istniejący program, to powstaj problem, procesor odbiera tylk dane 255 i 127. Może ktoś zna rozwiązanie tego programu. Poniżej zamieszczam kod mojego programu. $regfile = "m128def.dat" $crystal =...
atmega128 timer0 atmega128 timer0 bascom policzy timer0
licznik prądu jednofazowy zaworek myjka laguna klapa bagażnika
junkers czujnik temperatury junkers czujnik
Dobór rezystora do lampki neonowej - jak obliczyć? Jaki topnik do lutowania BGA? Wybór i rekomendacje