Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
Zrób to sobie programowo np. weź timer0 i ustaw podstawę czasu tak aby co określony czas timer zgłaszał przerwanie czy to przepełnienia czy porównania w tym przerwaniu umieść np. taki kod [syntax=c] //gl_OCR1 to zmienna globalna pełni funkcje identyczną jak OCR1 uint16_t volatile gl_OCR1 ; ISR(wektor) { static uint16_t zm; if(zm<gl_OCR0) PORTA&=~(1<<PA0);...
Po poprawkach działa lecz wyświetlacz zaczyna pokazywać dziwne i niechciane znaczki. Niekiedy dzieje się to po wejściu w menu już za pierwszym razem a niekiedy po 10 czy 20 razie. Podczas krzaczenia szleje pwm na wszystkich wyjściach na klawisze reaguje ale nie wykonuje poleceń.
W atmega8 timer0 nie ma trybu CTC, ale już w atmega88 taki tryb jest. Rejestr TCNT0 to rejest przechowujący aktualną wartość licznika timera0. Skoro nie ma trybu CTC to w normalnym trybie przerwanie będzie występowało co 100 cykli jeśli na początku programu i w obsłudze przerwania wpiszesz do tego rejestru taką wartość aby do przepełnienia (zmiany z...
Hmm. Niektóre zagadnienia można rozwiązać na wiele sposobów. W przypadku mojego przykładu pin INT układu PCF można podłączyć do dowolnego pinu uC. W przypadku Twojego rozwiązania trzeba się podłączyć do INT0 albo INT1 i z samego opisu wynika że takich punktów w tym uC jest tylko dwa. Co jeśli komuś komplikuje to układ? Można by rozważyć ocję zmiany...
Nie - niekoniecznie CTC - ja akurat najczęściej korzystam do pilotów z CTC pomimo wypełnienia 50%, bardzo długo żyją na bateriach. Ale w twoim przypadku bariera ma chyba działać non stop tak ???? i czy na baterii ???? Bo jeśli na baterii to pewnie że lepiej zrobić to na PWM i dać minimalne możliwe wypełnienie. Ale jeśli ze stałego zasilacza to ja bym...
Szkoda. Wprawdzie potrzebowałem 24MHz i ucieszyłem się że ten na 20MHz chodzi i na 24MHz. Ale liczyłem na to że jak zdobędę ten na 24MHz to łyknie ze 30MHz. Szczególnie że okazało się że 24MHz mi nie wystarczy. Wczoraj przypadkiem odkryłem w datasheecie dodatkowe rozkazy (muls, mulsu, fmul, fmuls, fmulsu, movx, lpm, Rx, Z, lpm, Rx, Z+). Pomoc BASCOMa...
Witam! To mój pierwszy post, więc proszę o wyrozumiałość. Skonstruowałem licznik impulsów - częstościomierz, w oparciu o projekt AVT5025 (Mikroprocesorowy wykrywacz metali). Sonda wykrywacza umieszczona będzie przy bramie wjazdowej na parking i jeśli pojawi się nad nią samochód to na danym pinie mikrokontrolera pojawi się stan wysoki. Układ ma po prostu...
Witam Panowie (Panie?) Jetem początkującym elektronikiem a tym bardziej programistą uP. Kiedyś lubiłem, jeszcze na Commodore, bawić się w pisanie programików w Basicu, więc jako tako znam i lubię ten język. Więc dlatego zdecydowałem się na realizację projektu w tym języku... O ile z samym językiem nie ma problemu, gdyż coś tam ze składni i zasad pisania...
Będzie ci działało lepiej niż na starym już niestety ATmega8. Zdecydowanie lepiej. Wprawdzie jako początkujący może nie od razu odkryjesz wszystkie możliwości czy z nich nie skorzystasz - ale zapewniam cię , że w miarę jedzenia apetyt rośnie i szybko zauważysz że już chociażby to, że Timer0 ma dodatkowe tryby pracy w porównaniu z ATmega8 to już baaaardzo...
Mikrokontroler: http://goo.gl/fxOST, dlaczego taki? więc niejaki mirekk36 odpowie, dlatego, że: 1. ATmega88 to dużo nowsza wersja ATmega8 2. posiada wiele ciekawszych możliwości niż m8, a do najważniejszych można zaliczyć fakt, iż Timer0 posiada kilka trybów pracy w przeciwieństwie do m8. Może na początku to dla ciebie nie dużo będzie znaczyć, ale...
If Flaga_1s = 1then To tak ma być? Trzeba zacząć oszczędzać- może Timer jednak w innym trybie? Load Timer0 , 250 W trybie przechwytywania czy porównania oszczędzamy instrukcję podstawienia. No i LCD- w bascomie jest jakaś biblioteka obsługi LCD sprawdzająca flagę zajętości LCD- pozwala to trochę oszczędzić czasu. No i może w przerwaniu tylko inkrementować...
Potrzebuje emulator DS18B20 na atmega8 - mam na PC program do odczytu temp i chciałem w tym programie dodac inne parametry ( np wilgotnosc ) ale nie zmieniajac programu - w scrachpadzie bede wisyłał inne dane nie temperature. ( w bajtach temperatury lub bajtach uzytkownika wolnych 2szt) Aktualnie używam "lampomitari" , ale napisalem przeróbke programu...
Witam, odgrzebałem swój projekt odbiornika podczerwieni, który działa świetnie, rozpoznaje adres i komendy pilota. Wszystko obsłużone jak należy. Problemem jest wykrycie przytrzymania przycisku. Nie zrobiłem tego odrazu a teraz zaczęły się schody. Napisałem fragment odpowiedzialny za obsługę przytrzymania jednak nie działa :( Projekt na Atmega328p,...
Wszystko (no prawie wszystko) jest opisane w datasheet'ie. Założenia jak rozumiem są takie: - procesor ATmega88 taktowany kwarcem zegarkowym 32kHz Tutaj masz datasheet do tego procesora: [url=http://www.google.pl/url?sa=t&rct=j...
Zobacz tu: http://mikrokontrolery.blogspot.com/2011... jeszcze świeże :) Może coś ci to pomoże. Użyj wektora TIMER0_OVF_vect.
Witam. Tak na szybko analizując kod: Dla Timer0 włączasz dwa przerwania od porównania: http://obrazki.elektroda.pl/6165324400_1...
Parę uwag do przerwania: [syntax=c]ISR(TIMER0_OVF_vect) //pocz¦tek funkcji obs-ugi przerwania { PORTD ^= PORTD; //gaszenie segmentu -- nieprawda, to jest zmiana stanu na przeciwny, np portd = 0101 bedzie 1010 ale CAŁY port D if (w==4) {w=0;} PORTC |= (1<<w);//segment start -- to jest ustawienie 1 na pinie w, ale gdzie ty potem ten segment...
akurat niedawno przerabiałem ten temat, odświeżanie w przerwaniu timera: [syntax=c] double decicelsius = 88.8; int main(void) { // set preskaler /64 TCCR0B |= (1 << CS00) | (1 << CS01); // enable timer overwlow interrput TIMSK0 |= (1 << TOIE0); // enable interrputs sei(); led7s_display_init(); ds18b20_reset(); _delay_ms(250); while...
Pierwsze co się rzuca mi w oczy to: Config Timer2 = Timer , Prescale = 64 Load Timer2 = 193 On Timer2 Program Ale potem... Program: Load Timer0 = 193 Czemu nie Load Timer2 = 193 ?
Jak długa ma być ta sekwencja? Mam na myśli ilość tych elementów "_____" czyli przerw. Osobiście proponował bym użycie przerwania z licznika timer0, CONFIG TIMER0 = TIMER , PRESCALE = 64 LOAD TIMER0, 125 (także przed wyjściem zobsługi przerwania) To da przepełnienie licznika timer0 co 1ms przy zegarze 8Mhz. Do zapamiętania sekwencji można użyć zmiennej...
Może tak. Funkcja usypiająca: [syntax=c]void usypianie() { EICRA |= (0 << ISC00) | (0 << ISC01); //Przestawienie przerwania Int0 na aktywację stanem niskim (żeby móc wybudzić) sei(); power_all_disable(); //wyłącza zasilanie TWI, Timer0-2, SPI, USART0, ADC cbi(PORTB,2); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_mode(); }[/syntax] Mam nadzieję,...
Atmega88 nie ma takich w ogole rejestrow: TIMSK, TCCR0! Ten kod jest poprawny. #include <avr/io.h> #include <avr/interrupt.h> #define TIMER0_INIT 175 char i; // procedura obsługi przerwania od timera TC0 SIGNAL (SIG_OVERFLOW0) { TCNT0 = TIMER0_INIT; // załadowanie do licznika wartosci poczštkowej PORTB ^= (1<<PB1);...
Witajcie moi drodzy, zgodnie za radą forumowiczów postanowiłem nauczyć się obsługi przerwań, ale coś nie chce działać. W przerwaniu chcę po prostu zapalić diodę. Wygląda na to, że wcale nie jest ono wywoływane. Tak na samym początku main włączam przerwania: [syntax=c] TCCR0A = (1<<CS02) | (1<<CS00);; TIMSK0 = (1<<TOIE0); sei(); [/syntax]...
Otóz tak wygląda pewien program do zczytywania komend z czujnika podczerwieni do którego wysyłane są sygnały za pomocą pilota w standardzie RC5: Poprawiłem tytuł. LordBlick
Witam. "Przerabiając" książkę p. Tomasza Francuza "Język C dla mikrokontrolerów AVR" natknąłem się na problem obsługi klawiatury matrycowej w przerwaniach. Klawiatura ma wykorzystywać kolejne ustawianie stanu niskiego na pinach na potrzeby multipleksowania. Niestety wciskanie przycisków klawiatury nie powoduje żadnej reakcji. Co ciekawe (dla mnie) po...
Oto kod... lecz jeszcze nie sprawdziłem czy działa. $crystal = 8000000 $regfile "attiny2313.dat " Config Timer0 = Timer , Prescale = 64 Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Int0 = Rising On Int0 Impuls On Ovf0 Przepelnienie Enable Interrupts 'T0 - sumaryczna wartośc timera0 Dim...
Mam jeszcze pytanie co do obsługi przerwania - czym różni się SIGNAL(SIG_OVERFLOW0) od ISR(TIMER0_OVF_vect)? Czytałem, że SIGNAL jest starszy i rzadko się go już używa, czy ma to jednak wpływ na samo przerwanie? Po prostu stosuj nowe, czyli ISR: http://www.nongnu.org/avr-libc/user-manu... i nie lekceważ warrningów - takie...
Witam. 1 - Stosuj aliasy. Np: drzwi alias portd.0 Później w kodzie po prostu drzwi = 1 lub drzwi = 0. bardzo poprawia czytelność kodu. 2 - Odczyt z przetwornika ADC powinien być do zmiennej WORD (przetwornik jest 10 bit). 3 - w pętli głównej masz instrukcje Wait. Powstaje problem ze sprawdzaniem stanu wejść, pętla może się wykonywać bardzo długo, w...
Witam, Czy nakierowałby mnie ktoś w jaki sposób wykorzystując PWM można zrealizować płynne sterowanie jasnością diody LED przy użyciu pilota nadającego w standardzie RC5? Do tej pory udało mi się zrealizować płynne sterowanie jasnością diody wykorzystując PWM i microswitche - oto kod: [syntax=c]#define F_CPU 8000000UL #include <avr/io.h> #include...
Może trochę odgrzewam temat, ale długo się ostatnio zastanawiałem, dlaczego powstały dwa bliżniaczo podobne uC? A co w tym dziwnego. ATmega8 to staruszek już dużą siwą brodą. Powstała o wiele nowsza jego wersja, posiadająca sporo a nie trochę udogodnień. Bodajże jednym z najlepszych jest Timer0, który ma w końcu więcej trybów pracy niż w staruszku...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
Witam Mam prośbę o rozjaśnienie pewniej sprawy - mam do Atmegi8 podpięty odbiornik IR (SM3385P) cudo to zostało wymontowane z jakiegoś odbiornika Czujnik podpięty jest pod PB0 - do tego posiadam pilot TTS35AI - od zestawu SkyStar2 - do przetestowania wykorzystałem program ze strony http://hobby.abxyz.bplaced.net/index.php... Kod poniżej...
Witam. Potrzebuję pomocy z dostosowaniem kodu napisanego na atmegę8 na attiny13. Domyślam się że największym problemem będą tutaj timery, ale jestem w ich temacie puki co zielony, a potrzebuję koniecznie(i niestety pilnie) odbiornika IR który zmieści się i będzie działał na attiny13. Jak całość kodu działa rozumiem(jest świetnie opisana komentarzami)...
Witam, Kolego, po roku od założenia tego tematu powinieneś już wiedzieć jak ogólnie działa ten mechanizm. To coś było serwem, kiedy miało podłączony do osi potencjometr. Teraz to jest silniczek z przekładnią sterowany właśnie mostkiem H. Użyjesz innego silnika i będzie lepiej, ale i tak w końcu zapytasz jak go "zsynchronizować" z drugim, i po długiej...
Szanowni Panowie! Mam prośbę, skupmy się na sednie problemu. Atmel wyraźnie wskazuje, że atmegę8 można zastąpić atmegą88. Przygotował stosowną notę, w której opisuje związane z tym problemy, link do noty został uprzejmie podany w jednym z wcześniejszych postów. Ja rozumiem, że procesory nie są idnetyczne, ale ... proszę o uwagę ... napisałem w moim...
Witam. Schemat całego układu: http://obrazki.elektroda.net/75_12533785... Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta). Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania...
Ten kod jest wersją maksymalnie testową. Zawiera kupę niepotrzebnych rzeczy i jest w nim nieziemski bałagan - przepraszam. Jestem bardzo początkujący i próbuję pisać posługując się najprostszą składnią. Był pisany "na szybko", aby stwierdzić czy ta idea zadziała. I generalnia działa. Config Lcd = 16 * 2 $crystal = 1382400 ' fusebit ustaw xtal full swing...
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...
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...
Witam, najpierw program: .include "m88def.inc" ; procek ustawiam na prace z wewnętrznego oscylatora 8MHz ; tryb sleep ustawiam jako POWER DOWN ; PD3 (INT1) jest przyciskiem (wejscie) ; PB1 (OC1A) to wyjscie sterujace reglem ; PB5 to wyjscie sterujące MOSFETami zalaczajacymi zasilanie regla ; PD5 (OC0B) to wyjscie sterujace LEDem ; ADC6 - pomiar pradu...
(at)emarcus: O ile się nie mylę, przy prescalerze 64 i cżestotliwości 8MHz timer0 będzie miał skok co 8us, czyli licznik bedzie przepełniał się co 2,048ms, więc do poprawnego odliczenia 1s w obsłudze timera należy załadowywać do niego Timer0 = 6, i dodać licznik, który 500 razy zliczy przepełnienia. A co do tych parametrów, to zawsze wstawiałem domyślne...
Czyli wynika z tego, że nie da się zrobić tego z trybem power down. Bo nigdy nie przyjdzie przerwanie od timera2. Pisałem o tym w tym poście: http://www.elektroda.pl/rtvforum/viewtop... ATmega8A ma inne parametry elektryczne, a reszta jest taka sama. Czasami jednak występują dodatkowe problemy ujęte w erracie: http://mikrokontrolery.blogspot.com/2011...
http://obrazki.elektroda.pl/9418966600_1... Witam wszystkich na forum. Jest to moje pierwsze publikowane DIY. Słowo wstępu… Projekt powstał z jednego, bardzo ważnego powodu: bo bardzo chciałem coś takiego mieć! Jest to układ odczytujący kod karty poprzez interface EM4095 z anteną, dekoduje, sprawdza i wysyła poprzez port szeregowy....
Po pierwsze - jeśli chcesz się przekonać czy kod działa to go uruchom i to sprawdź. Po drugie - nie wiem po co tak bardzo grzebiesz w rejestrach timera, wpisujesz jakieś własne wartości do TCNT0 i TCCR0 w przerwaniu, jaki to ma cel? Uruchom przerwanie i zapomnij o nim: [syntax=c]#define KEY_UP(PINB & (1<<3))//PB3 - przycisk UP - do masy. ......
http://obrazki.elektroda.pl/2475395200_1... Cześć! Pewnie część czytelników jest już znużona ilością tematów o zegarach nixie, ale nic nie poradzę na to, że ja także poddałem się magii tych cudownych wyświetlaczy minionej epoki. ;) Mogę tylko uspokoić, że jest to moja autorska konstrukcja, a nie kalka istniejącego projektu. Zdaję sobie...
Witam. Dziękuję za odpowiedź, teraz rozumiem.
Dzięki! już sie wszystko stało klarowniejsze.. jeszcze raz dzięki za pomoc :)
Ok, rozumiem. Jeszcze pytanie - czy timer0 i timer2 mogą pracować jednoczesśnie i niezależnie względem siebie? W datasheet nic nie znalazłem na ten temat.
Nie mam pojęcia co robię źle, męczę się z tym od dłuższego czasu. Bardzo proszę o pomoc i z góry dziękuję. Wiesz co to są te 8000000Hz? Samo "Hz"? Umiesz podzielić 8000000 na 1024? Porównaj to z licznikiem TCNT0 (timer0, 8 bit), będziesz wiedział dlaczego nie działa.
atmega88 timer0 atmega88 eeprom atmega88 pomiar
pralka bosch klucz prowadzenie kabli budynku gospodarczego naprawa stacja lutowniczy
IJOY 22 SP CRY22SHHPB02 Firmware Dump Inquiry Lenovo K330 DKKT23AUS BIOS Download Guide