ad 1. Odpowiedzią jest bit FOC1A, którego ustawienie wymusza zajście zdarzenia compare, a więc jedna dioda jest o jedno zdarzenie do przodu. ad 2. Jeśli dioda przez 1s jest włączona, a przez 1 s wyłączona, to okres wynosi 2s, a więc częstotliwość jest równa 0,5 Hz.
Np. po to, żeby można było wyzwalać konwersję w jakiś czas od zbocza przebiegu PWM. Do tego służą timery wielokanałowe.
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
Sprawdzając stan tego pinu w przerwaniu, niestety z wykorzystaniem timera.
Zobacz tu: http://mikrokontrolery.blogspot.com/2011... jeszcze świeże :) Może coś ci to pomoże. Użyj wektora TIMER0_OVF_vect.
Chyba coś masz jakiś dziwny datasheet. Tutaj masz link do tego, którego ja używam - [url=www.atmel.com/Images/doc2545.pdf]Li... Od strony 156 masz pełny opis rejestrów dla tego timera. A program spróbuj zmienić tak: [syntax=c]TCCR2A=(1<<COM2A1)|(1<... TCCR2B=(1<<CS20);[/syntax] Po tych zmianach...
Trzeba to zrobić na którymś przerwaniu. Pokaż kod. Dodano po 42 Może da się wcisnąć to do trzeciego timera.
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
Ale BlueDarco, IMHO można dać między procesor mały układ FPGA (np. LATTICE MachXO2-256) i zrobić tam wielokanałową sprzętową eliminację drgań styków ;) Mimo to czasem niestety programowa eliminacja nie ma sensu - np. jeśli enkoder podpinamy bezpośrednio do odpowiednio skonfigurowanego timera ;)
Nie pokazales czy ustawiasz prawidlowo taktowanie TWI, jaki adres urzadzenia ma twoj PCF, a jaki ty nadajesz, no i co znaczy, ze uklad nie reaguje. W dodatku umieszczanie tego w przerwaniu jest pomyslem takim sobie w tej formie - nadanie start condition, adresu i ew. danych + stop condition trwa wieki w porownaniu z tempem dzialania procesora. Takze...
Blokuj przerwania w pętli głównej na czas modyfikacji portu (LED2_TOG). Twój timer nie odlicza równo 1/125 s, tylko nie co dłuższe i nierówne odcinki czasu. Do równego odliczania czasu trzeba wykorzystać tryb CTC innego timera.
... Dlaczego tak się dzieje? :/ Dlatego, że przerwanie ISR(TIMER1_COMPA_vect) jest wywoływane co 128 taktów zegara, a wykonanie procedury przerwania timera1 zajmuje ~200 taktów. Po zakończeniu wykonywania przerwania od timera, gdy uC wraca do programu głównego, ma już ustawioną flagę od OCR1 i ewentualnie flagę RXC. Ponieważ timer "stoi wyżej" w hierarchii...
Jeżeli nie używasz przerwań to ich nie włączasz. Wprawdzie nie włączasz głównego, ale włączasz od timera (TIMSK1), dlaczego? Wzór z dokumentacji dla CTC: F = Fclk / (2 * N * (1+OCR1A)) = 16000 / ( 2 * 8 * 2000 ) = 16000 / 32000 = 0.5Hz Sterowanie pinem OC1A dla CTC: [syntax=c]TCCR1A = 1<<COM1A0[/syntax] .
POWERSAVE (ATMEGA88) This mode is identical to Power-down, with one exception: If Timer/Counter2 is enabled, it will keep running during sleep. The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding Timer/Counter2 interrupt enable bits are set in TIMSK2, and the Global Interrupt Enable bit...
1. Test sprzętu. Odłącz RS485, i zrób echo w µC do terminala pokazujące co odbiera. Możesz zamiennie podpiąć drugi RS485 ustawiony na nadawanie (w sumie to już będzie RS-422). 2. Zauważone potencjalne problemy programistyczne. Powinieneś także podjąć wstępne załażenie, że transmisja nie jest idealna - odbiór do bufora w przerwaniu i dopiero po...
Zakres PWM zależy od wybranego timera i trybu. Moze być nawet do 65535. Zerknij w dokumentacji mikrokontrolera do opisu timera, który chcesz używać. Na przykład: http://mikrokontrolery.blogspot.com/2011... http://obrazki.elektroda.pl/1325588900_1...
Możesz użyć timera aby odliczyć sobie konkretny odcinek czasu.
Jeżeli nie ma obsługi przerwania to nastąpi reset układu. Dodać należy, że nie będzie to dokładnie reset taki jak w przypadku pinu RESET, czy włączenia zasilania. Będzie to jedynie skok do początku programu, co wynika z kodu przygotowanego przez kompilatora C. Tablica nieużywanych wektorów przerwań jest bowiem wypełniona skokami do __bad_interrupt...
U mnie w BASCOMie Timery w ATTiny2313 działają. Ale w ATMega88 nie działają. To zależy od wersji BASCOMa po prostu.
A czy timery, przerwania, komparatory i inne dodatki w procesorze były powyłączane?
Zobacz to i wyciągnij wnioski [syntax=vbnet]$regfile = "m88pdef.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '$sim Cursor Off Cls Config Portd.0 = Output Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Disconnect , Compare B = Disconnect Compare1a = 62500 On Compare1a Beep Enable Compare1a Enable Interrupts...
No i mamy całą serię błędów. Po pierwsze - nigdy nie robi się odświeżania inaczej niż w przerwaniu timera. Po drugie - podejrzewam, że pod nazwą "segment" występuje u Ciebie cyfra. Ciekawe, jak nazywasz segmenty. Nie przepisuj kodu na brudno - pokaż, jaki jest naprawdę. W każdym przerwaniu timera należy kolejno: - wyłączyć poprzednią cyfrę (lub wszystkie...
Funkcja wait w Bascom nie jest dokładna i na dobra sprawę nie należy jej stosować do odmierznia czasu. Aby dokładnie odmierzać czs należy posłuzyć się timerami. Jakie dałeś kondensatory do kwarca?
Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint8_t i = 0; DDRD = 0xff; //TCCR2A |= (1<<WGM21)|(1<<WGM22); // źle ten tryb jest zarezerwowany TCCR2A |= (1<<WGM21) // CTC //TCCR2A |= (1<<CS20)|(1<<CS21)|(1<&l...
Czekaj chwilę, bo ja się już pogubiłem. Ty mówisz o pinach fizycznych czy cyfrowych? Chyba o cyfrowych (tych z komentarzy w kodzie) - wtedy wszystko pasuje. Piny cyfrowe 9 i 11 są wyjściami timerów odpowiednio pierwszego i drugiego. Z tym, że timera drugiego Atmega8 nie posiada... Tak czy inaczej, w tym wypadku nie możesz zamienić pinów jak Ci się podoba....
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
ATMEGA88 jak i ATMEGA168 ma wewnętrzy preskaler sygnału zegarowego który jest domyślnie włączony. ATMEGA 8 go nie ma.
Tak, wybrałem Low Frequency, da sie jakoś ruszyć uC bez tak wolnego kwarcu ? Co masz na myśli 'ruszyc' ? Prawdopodobnie chcesz skorygowac błędnie ustawione fusebity (powrócic do default settings). W zasadzie datasheet mówi o optymalizacji oscylatora processora do 32kHz jako 'Low Freq.' , ale do komunikacji podczas programowania mozesz tu zastosowac...
A nie możesz napisać własnej procedury "Getrc5" w bascomie? Uruchamiasz PWMy, więc znasz częstotliwość przepełnienia dowolnego timera. W getrc5 sprawdzasz odstępy pomiędzy zdarzeniami na pinie odbiornika IR - trzeba wziąć poprawkę na przepełnienie timera, ale oprócz tego nic się nie zmienia. Pozdrawiam, Dr.Vee
mam sei(); ale i tak się nie kompiluje
No to zrób mi "dobrze" i weź zainicjalizuj ten timer na piechotkę ustawiając tam gdzie logika nakazuje *na początku* cs jakiś... I zobacz czy działa
Jak w temacie, zlecę napisanie programu w c dla AVR Atmega88. Ma to być prosty timer z dwoma wejściami które wyłączają przekaźnik po określonym czasie. Więcej info na PW.
to jeszcze może napisz jak należy, bo jest przerwanie timera, sprawdziłem w przykładzie tmf avrppr.zip\Przyklady\LED\7segLED\7segLED... - i też jest podobnie i co chodzi Tobie z tym przecinkiem?
Metoda z tablicami jest całkiem dobra, cała reszta jest błędna. Po pierwsze - nie da się wiarygodnie zliczać osi przy użyciu transoptora. Po drugie, czegokolwiek byś nie użył w zamian (np. rezystory na osiach i czujniki prądowe) - trzeba filtrować odczyty z czujników, a to robi się na bazie przerwania timera, a nie w pętli kręcącej się z nieznaną i...
Albo ustawić 16 bitowy timer i w przerwaniu od jego przepełnienia zmieniać stan diody. Do tego super urządzenie pomiarowe jakim jest stoper w telefonie i już kontrola na wysokim poziomie :)
Oczywiście że się da. Za pomocą ATMegi genetujesz kilkumilisekundowy impuls o częstotliwości ze 40kHz. Uruchamiasz jakiś Timer czy coś, i czekasz na echo. Potem juz tylko skalowanie i masz wynik. Jest dużo o tym na elektrodzie.
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]...
Czy rozwiązanie z kilkoma procesorami jest bezsensowne- na tym etapie nie wiem. To że program zatrzymywał się przy zerowych- albo lepiej powiedzieć wolnych obrotach- to wada programu. Co prawda trudno powiedzieć kiedy wał się nie obraca z punku widzenia programu a nie człowieka. Jeden obrót na miesiąc- to wał sie obraca dla programu a dla człowieka...
Nie trzeba przełączać preskalera. Wystarczy wpisywać wypełnienie PWMa = 0 w momentach gdy ma być przerwa. Czyli kilka cykli PWMa pójdzie na wypełnieniu 0 a tylko co któryś z takim jaki da impuls do serwa. Mam do tego nawet gotowy kod na ATMega88. Procek chodzi na 10MHz. Zmienne globalne: [syntax=vbnet]volatile uint8_t PWM2; volatile uint8_t PWM3;[/syntax]...
Ech, pośpieszyłem się, właśnie czytam notę katalogową... W Atmega8 możesz tylko na tym timerze korzystać z trybu Overflow (Wartość (0xFF-<Wartość dla OCR0>) należy wpisywać co przerwanie na jego początku). Dopiero nowsza wersja (Atmega88) ma tryb CTC. Na szybkiego to możesz przejść na Timer2 w trybie synchronicznym, ma zbliżone rejestry. Timer1...
A po co włączasz przerwania skoro nie napisałeś procedur ich obsługi? I dlaczego najpierw ładujesz część młodszą do OCR a potem starszą, a nie na odwrót jak to zalecają? I dlaczego dziwisz się, że kod potem nie działa?
brakuje instrukcji sei(); włącza ona globalną obsługę przerwań. Umieść ją zaraz przed pętlą while(true) Dodano po 5 a poprawnie jest TIMSK1 = _BV(TOIE1);
Witam Mam problem ze znalezieniem potrzebnego dla moich celów mikrokontrolera. Potrzebuję dużo MIPS i przystępną cenę. Mianowicie: rdzeń 8 lub 16 bit (najlepiej RISC) minimum 40MIPS wymagany komparator analogowy (ADC zbędny) min 8k max 16kB FLASH port szeregowy timer mile widziane instrukcje mnożenia Wcześniej stosowałem atmega8-16MHz atmega88-20MHz...
Cześć. Praktycznie każdy spełni Twoje wymagania, zarówno w prędkości obliczania jak i ilości miejsc po przecinku. Zrobi to spokojnie nawet ATmega8. Przykład możliwości ATmega88 (odpowiednik ATmega8 z minimalną różnicą dot. timerów): http://obrazki.elektroda.pl/8770689300_1... Przy czym jednocześnie zajmuje się generowaniem sygnału wideo,...
No niby to nie błąd rzeczywiście, ale stanowczo odradzam tego typu zabiegi, tak tworzy sie kiepski i nie czytelny kod, do pełni szczęścia brakuje jeszcze tylko "GOTO". Ja z kolei stanowczo zachęcam do zapoznania się z tym plikiem nagłówkowym i przemyślenia, kiedy takie zabiegi są konieczne. W pokazanym akurat przypadku taka potrzeba nie zachodzi, bo...
Kondensator tantalowy pasuje jak najbardziej i jest znacznie mniejszy. Soldermaska lepiej zabezpiecza; lakier uniemożliwi serwis zegarka STK200 i tak trzeba zasilać; programujesz bez baterii Wybudzanie poprzez SW1 to głównie jak jest napisany program. Po cynowane ścieżki - utlenia się cyna - powinna być soldetmaska 2k2 to zbyt duża wartość, to ok 600uA...
Witam, Mam problem z timerem1 - timer pracuje w trybie CTC (4), wartość wpisywana do rejestru OCR1A jest wcześniej odczytywana z przetwornika ADC (potencjometr). Problem występuje podczas zmiany tej wartości - timer tak jakby się przycinał (ale tylko czasami) - nie zgłasza przerwania przez pewną chwile, żeby zaraz zacząć normalnie pracować. Np. po takiej...
Masz błąd w procedurze wyświetlania - na wyświetlaczu będzie widać "duchy" sąsiednich cyfr. Gdybyś zamiast zmiennych s1, s1, s10 zrobił tablicę, mógłbyś wywalić switch, tak, jak Ci to pokazałem wyżej: PORTD = c[cyfra[i]]; Twoja pętla główna ciągle zamienia liczbę na cyfry, a wystarczy zrobić to jeden raz po zmianie wartości. Tablicy c nie ma sensu deklarować...
(at)donduuuuu... ;) Hard & soft Wyjścia z generatorów wysyłane są bezpośrednio na oddzielne piny mikrokontrolera, miksowane analogowo i buforowane. Zastosowano mikrokontroler ATMEGA8L (zasilanie 5V), taktowany wewnętrznym zegarem 8MHz. Docelowo znajdzie się tu ATMEGA88 (zasilanie 3V bateryjne). Ruch enkoderów wykrywany jest w przerwaniach INT0 i 1,...
Piny zwykłych I/O pracują z połową częstotliwości systemowej z powodu bufora, a pin licznika na pewno bedzie pracować poprawnie z f mniejszym około 2krotnie od f timera czyli powiedzmy 20Msamples/sPozdrawiam W pdf do atmega88 strona 137 napisano: External Clock Source An external clock source applied to the T1/T0 pin can be used as Timer/Counter clock....
W datasheecie procesorów ATMega48/88/168 znalazłem informację że procesor ATMega48 jest podobny do procesora ATMega88. Procesor ATMega88 jest "potomkiem" procesora ATMega8 i jest z nim zgodny pod względem wszystkiego. Rożni się tylko tym że jest w stanie chodzic na 24MHz i że ciagnie mniej prądu. A procesor ATMega48 jako że nie ma swojego przodka w...
Note that for newer devices (ATmega88 and newer, effectively any AVR that has the option to also generate interrupts), the watchdog timer remains active even after a system reset (except a power-on condition), using the fastest prescaler value (approximately 15 ms). It is therefore required to turn off the watchdog early during program startup... Jednym...
Próbowałeś nietradycyjnej, bo coś mnie się zdaje, że nie. Pewnie, że próbowałem i to już dawno. Jak na razie nie miałem potrzeby skorzystania z niej co nie oznacza, że tak jak ty uważam, że tylko jedna jest dobra albo najlepsza. Ja jak zwykle uważam, że trzeba umieć rozsądnie wybrać w zależności od warunków. A bajanie o delayach trwających wieki można...
Nie napisałeś. Porównaj np. DS od ATMega88 i ATmega8. Możesz budzić timerem co powiedzmy 20ms i sprawdzać, czy klawisz naciśnięty Albert
... mówiąc ogólnie - musisz liczyć czas w pętli ... ... a najlepiej odmierzać czas timerami i używać przerwań ... to jest wielowątkowość (choć to nadużycie tego terminu). Mam wrażenie, że jest to kilka wątków jednocześnie, których on nie jest w stanie 'pojąć' :) Nie On tylko programista, bo to od niego zależy jak napisany jest program :) A to efekt...
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...
Oprócz rozmiaru pamięci, procesory te niestety trochę się różnią Panowie xanio i waldek63 ---> zastanawiam się skąd wy czerpiecie informacje o różnicach między tymi prockami???? hmm chyba troszkę z kosmosu - tak mi się coś wydaje. A nie łaska otworzyć sobie notę aplikacyjną PDF jednego i drugiego gdzie jak byk na pierwszej stronie już można dostrzec...
Witam. Podepnę się do wątku gdyż także buduję obrotomierz.Jednak moja metoda pomiaru opiera się troszkę na innej metodzie . U mnie atmega88 z zegarem 20MHz mierzy okres pomiędzy impulsami z układu wejściowego a następnie wylicza prędkość obrotową . I tak np:przy 30 tyś obr/min timer zliczy 40000 impulsów wzorcowych , następnie wartość odpowiadającą...
Pokazuje pliki: KPD.h #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> unsigned char KPD_KeyPressed; unsigned char KPD_LastKey; unsigned char KPD_ScanRow; unsigned char KPD_KeyDown; #define CODE_MAX_LENGTH 8 #define CODE_ACCESS_LENGTH 4 #define CODE_ADMIN_LENGTH 8 #define BUFSIZE 20 void KPD_Init(void);...
Witam. Chciałbym zrobić sterownik oświetlenia (a właściwie to budzik, stopniowo rozjaśniający światło(regulacja fazowa), sterowany na pilota RC5) w pokoju. Koncepcja jest następująca - układ dzielę na trzy części: -część zasilająca (trafo,mostek gretza,7805 + detektor zera na transoptorze LTV814) -część wykonawcza (wkładana do puszki elektrycznej, dostaje...
https://obrazki.elektroda.pl/6021352700_... https://obrazki.elektroda.pl/6921159500_... https://obrazki.elektroda.pl/3416870700_... https://obrazki.elektroda.pl/7961253800_... https://obrazki.elektroda.pl/7601893100_... Dzisiaj przedstawię państwu dwa sejfy dla dzieciaków,...
Dzięki za pomysły. A motylem, co to? Ot takie bździewka oferuje TVMango, Allegro i straganowi sprzedawcy. W kształcie to właśnie przypomina motylka. Po bokach elektrody samoprzylepne - przewodzące a pośrodku elektronika sterująca i zasilanie. One są jednokanałowe. To stare co mam z niego transformatory jest 2 kanałowe - 4 elektrody na przewodach. A...
Podczas debugowania atmegi88pa natknąłem się na dziwny problem, program działa normalnie i nagle wraca do pierwszej linii w funkcji main() To chyba jednak się resetuje. Ustaw sobie breakpointa w kodzie przed maim, będziesz wiedział czy procek przez niego przechodzi. Z jaką optymalizacją debugujesz? Przejdź na O1 i sprawdź czy problem się powtarza....
Jednak dla Atmegi328 z 16MHz wychodzi, że Timer2 może pracować najwyżej na 61Hz co może być za duże dla serw które lubią 50Hz. Gdyby 61Hz było "najwyżej", to mógł by pracować niżej a więc na 50Hz. Poza tym serwa nie wymagają konkretnie 50Hz. Zdecydowana większość pracuje dobrze od 10Hz do kilkuset Hz. Objaw który opisujesz pasuje raczej do serwa które...
W skopanym "flow' programu. Na pierwszy rzut oka widać, że dwa wystąpienia uart_getc (i to z różnymi zmiennymi) oraz pętla while w ostatnim else są podejrzane. Generalnie program ma odebrać jedną zmienną, i czekać aż przyjdzie druga (w głównym programie wpisuje potem wartość drugiej zmiennej w rejestr ocr, a w który określa pierwsza zmienna, tak realizuje...
Ustawiałem atmegę na 1MHz (8MHz wewnętrzny i dzielnik na 8), ale to było za mało by I2C działało mi na częstotliwości 100khz. Pytanie, czy potrzebujesz takiej szybkości. 100kHz to prędkość graniczna. Jeśli to typowy interfejs I2C (a nie np. pokrewny SMBus), to nie ma ograniczenia w dół. Powinno działać też prawidłowo np. przy 1kHz. Chyba że to wymagająca...
Podłączałem dwa różne serwa, już bez tranzystora (bo w sumie to tylko sygnał i coś mi się powaliło z tym tranzystorem ;) ), bezpośrednio na pinie PB0. Na oscyloskopie sygnał wygląda poprawnie, a serwa nie są w żaden sposób blokowane mechanicznie, więc nie wiem gdzie może leżeć przyczyna problemu. Tu jeszcze dorzucam kod na mikro: [code[syntax=c] #define...
Oscylator będzie niestety zewnętrzny 2MHz, ponieważ jak testowałem łączność RTFQ2 z RRFQ1 (UART), to kwarc wewnętrzny nie zapewniał wystarczającej stabilności i nie dawało rady przesłać danych. Baterie to będą 3 alkaliczne paluszki 1,5V. Największe napięcie minimalne ma nadajnik i jest to 2,5V (posiadam wersję R z wbud. stabilizatorem). Jednak w miarę...
Witam, pracuje nad małym systemem modułowym do sterowania w domu. Na ten moment mam : -klawiaturę Matrix do wpisywania kodu do drzwi (atmega88pa) -manipulator do temperatury (atmega164pa) -czujnik temperatury (attiny84a) Zamówiłem wszsystkie części i własny projekt płytek pcb. Klawiatura działa bez żadnego problemu, program wgrywa się i działa w 100%...
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...
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);...
No to pomyśl Sherlocku :) Nie wiem jak będziesz odczytywał te przyciski. W każdym bądź razie, możesz zrobić tak, że po naciśnięciu pierwszego przycisku przypisujesz do zmiennej program wartość 1, po naciśnięciu drugiego, wpisujesz tam 2 itd... Rozbije to kod na wyodrębnioną funkcję czytania co wg mnie będzie czytelniejsze niż czytanie osobno klawiszy...
z tym wpisaniem wartości stosu najpierw do SPH a potem do SPL to koledze Nawigator może troszeczkę pomyliło się z taką koniecznością ładowania 16bitowych liczników do timera w czasie działania - gdzie jest rzeczywiście potrzeba zachowania odpowiedniej kolejności, ale przy stosie nie ma takiej potrzeby cli jest teoretycznie nie potrzebne przed inicjalizacją...
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...
Dziękuję uprzejmie za zainteresowanie i sugestie. :-D O RS485 mogę napisać tyle, że działa poprawnie. Bez oporników (terminatorów - linia wymaga dwóch!) rzeczywiście był niezły śmietnik (kiedyś oglądałem pod oscyloskopem). Dałem trochę większe (220 omów) niż przewiduje standard, gdyż transceiver RS232/RS485 wymagał takich (w specyfikacji - nie chciałem...
Witam! Mam problem (a właściwie 2) z moją lampą. Zmontowałem lampę led wg. własnego schematu. Komunikuje się ona z tabletem/komputerem za pośrednictwem Bluetooth HC-06. Układ działa poprawnie lecz pojawił się problem z zawieszaniem. Mianowicie po ok 30-60min główny program zawiesza się (żadne dane po USART nie są wymieniane). Niestety nie udało mi się...
Witam Czy ktoś podpowie jak ustawić rejestry ? Jeśli konfiguruje PWM w Bascomie za pomocą Config Timer1... to działa OK Taktowanie 8Mhz, preskaler 1, tryb 8 bitowy PWM ale częstotliwość mam około 16kHz a przy trybie 9 bitowym około 8Khz co jest normalne. Ale jak ustawić PWM tak by częstotliwość była około 12kHz (oczywiście bez zmiany taktowania procka)?...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
#define TIMER_ON_64() TCCR0A|=(1<<CS00)|(1<<CS01); Bity CS00, 01, 02 są w TCCR0B. WGM02 też jest w TCCR0B a WGM00 i 01 w TCCR0A. P.S. W ATmedze88
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...
Witajcie. Zawsze mam kłopoty z konfiguracją Timerów i dopalenie PWM. Aktualnie mam problem z Atmeg128 ale pytanie dotyczy ogólnie uC. Otóż mam kilka pytań. 1) Zauważyłem, że na jednym timerze można skonfigurować max 2xPWM sprzętowy. Czy mam rację? 2) Przeglądając datasheet Atmega128 widzę wyjścia PB5(OC1A), PB6(OC1B),PB7(OC1C). Czy ta jedynka OC 1 A,B,C...
Dzięki, co do tego co on ma robić, to nie tylko przód tył po piachu ;) Generalnie ma to być platforma mobilna do której będzie można dołączać inne moduły realizujące różne zadania, między innymi czujniki itp. do planowania trajektorii, mapowania itp. Dlatego pierwszy etap to sama platforma i elektronika konieczna tylko do wykonywania poleceń związanych...
Ta sekwencja którą podałeś nazywa się bodaj sterowanie falowe- jużdokładnie nie pamiętam. To co podał piotrva to jest sterowanie pełno- lub półkrokowe. Każde ma oczywiście swoje wady i zalety. Na początek proponuję uruchamiać w trybie pełnokrokowym- tak jak podał piotrva. Bo najprościej. A potem dopiero w innych trybach. Co do diod LED- anoda- dłuższa...
Witam Potrzebuję zrobić zegar na ATMEGA8535 i nie mogę uruchomić pracy asynchronicznej. Kwarc zegarkowy podłączony do XTAL1/2. Program wstępny poniżej. Analogiczny program (ze zmianą ASSR.5 = 1) dla ATMEGA88 działa poprawnie. Proszę o pomoc. Pozdrawiam Jacek Program napisany w "BASCOM AVR" [syntax=basic4gl][/syntax] $regfile = "m8535.dat" $crystal =...
W takim razie: w jak sposób i w którym miejscu następuje podłączenie głównego pliku irmp.c z poziomu irmp.h? W źródłach IRMP są przykłady jak używać z konkretną rodziną procków. irmp_get_data Powyższy plik mógłby być po prostu bazą dla twoich funkcji. Najważniejsze oczywiście jest to, że irmp.c musi być poddane kompilacji a potem linkowaniu. W tej...
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ć...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
Żadnym znanym mi sposobem nie da się wykonać na AVR pętli odczytu z portu i zapisu do pamięci tak, aby zmieścić się w 4 cyklach. Najszybciej można zrobić to w 5 cyklach: IN, ST +inkrementacja, RJMP i użyć np. timera do przerwania pętli. Nie ma różnicy czy użyje się ST czy PUSH, bo każda z tych instrukcji wykonuje się 2 cykle zegara. Można natomiast...
[syntax=cpp]/* |------------------------------| | "pov_clock.c" | | Michal Olichwer | | Krzysztof Rosinski | | Wyswietlacz Widmowy !!!! | | ATmega 8MHz zew. | |------------------------------| */ #define L0_OFF PORTB|=(1<<4); #define L0_ON PORTB&=(1<<4) #define L1_OFF PORTB|=(1<<3); #define L1_ON PORTB&=(~(1<<3)) #define...
Sorry za OT ale chyba nie wszyscy z was umieja czytac ale gdy po pierwszym resecie nie zadziała to się wiesza na dobre i nawet ręczny reset nie działa tylko odpięcie zasilania pomaga. Jak to sie ma do waszych wszystkich dywagacji ? Z drugiej strony sam przeszukalem manual do Atmega8 i nie potrafie odpowiedziec na to pytanie takze chetnie sie dowiem...
Witam, bardzo proszę o pomoc. Zrobiłem układ na Atmega32 z podłączonymi diodami do całego PortuA, oraz do PortuB Pin2 (PB2) dekoder podczerwieni TSOP31236 (testowałem też na TSOP31238). Wykorzystać chciałem bibliotekę IRMP https://obrazki.elektroda.pl/6945425800_... a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Witam! Mam problem z czujnikiem do mierzenia odległości(BPU-1640IOAH12). Mianowicie nie potrafię spowodować jego uruchomienia. Sygnały które wysyła funkcja uruchom_sonar nie powodują żadnych efektów. Czy mógłby ktoś wytłumaczyć co jest nie tak w programie? Czujnik jest podczepiony pod nożkę PC3. [syntax=c]#include <avr/io.h> #include <math.h>...
Dioda jest podłączona w porządku, bo jak przyłożę do PB0 VCC i do PB1 GND to świeci. Problem jest taki, że po zaprogramowaniu i podłączeniu zasilania do układu na żadnym wyjściu nie ma stanu wysokiego. Próbowałem też z innym programem, żeby dać stan wysoki na innych wyjściach układu (PB0..5), ale po zbadaniu miernikiem wynika, że ciągle jest tam 0....
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...
Przychodzi Tobie prostokąt o wypełnieniu ok. 1-2ms co kilkadziesiąt ms. Musisz podłączyć ten sygnał pod przerwanie w atmega i timerem mierzyć czas pomiędzy zmianą sygnału z "0" na "1" a zmianą z "1" na "0". Z tej informacji generujesz odpowiednie PWM. PS. Ze względu na to, że nowsze atmegi mają więcej wyjść PWM polecam np. atmega88 zamiast atmega8.
https://obrazki.elektroda.pl/7228525200_... Witam wszystkich:) W szczególności miłośników światełek, iluminofonii, itp. Prezentowane urządzenie wyświetla widmo akustyczne w postaci 20 słupków po 16 punktów każdy. Trudno je nazwać analizatorem widma. Analizator kojarzy mi się bardziej z przyrządem pomiarowym, chociaż wyświetlanie częstotliwości...
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. 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)...
Przeczytaj dokładnie sobie rozdział "Watchdog System Reset" z PDF'a np od ATmega88/168/328 No tak, ja to czytałem. The Watchdog always on (WDTON) fuse, if programmed, will force the Watchdog Timer to System Reset mode. With the fuse programmed the System Reset mode bit (WDE) and Interrupt mode bit (WDIE) are locked to 1 and 0 respectively. To further...
atmega88 pomiar atmega88 eeprom atmega88 portd
pendrive odzyskanie partycji parking break nagrywarka przerywa
Huawei Cat4 B311-220: Pobieranie firmware Renault Scenic 1 2.0 - Silnik nie odpala, centralny zamek nie działa