Niestety nie wiem do końca jak się zabrać za pisanie kodu programu i prosiłbym o jakieś wskazówki bardziej doświadczonych osób. Zobacz przykłady na forum w dziale "Mikrokontrolery ogólnie" (jest ich sporo), a jeśli nie znajdziesz, to wpisz w wyszukiwarkę tutaj: http://mikrokontrolery.blogspot.com/p/sp... trzy cyfry: 595
Przyznam się, że nie próbowałem pomijać reti skacząc do pętli głównej z ISR, ale już podmieniałem adres powrotu w projekcie minidds. Ale zakładam, że AVR ma to gdzieś i nie obchodzi go, czy ISR jest zapętlone, czy nie. Zresztą gdzieś w nocie pisało, że SEI w obsłudze przerwania może spowodować nadpisanie całego RAMu, jeżeli kod będzie wolny, więc raczej...
IN data, PINC . W końcu interesuje Ciebie to co jest na pinie wejściowym, a nie to jak skonfigurowałeś rejestr PORTC.
Akurat w ATMega8 rejestr SP jest sprzętowo bezsensownie inicjalizowany na 0, więc istotnie należy go inicjalizować. W nowszych AVRach SP po resecie wskazuje na koniec SRAM, więc można sobie jego inicjalizację odpuścić.
Witam macie jakiś pomysł jak zmusić kompilator aby kompilował te instrukcje z wykorzystaniem rozkazów sbi/cbi ? Niestety rozkazy CBI i SBI działają tylko na stałych. Ja również muszę robić to na zmiennych.
Po pierwsze port powinien być wskaźnikiem na zasób sprzętowy, masz to w FAQ dokładnie opisane. Po drugie wartość zmiennych lokalnych jest tracona pomiędzy kolejnymi wywołaniami funkcji, chyba, że są to lokalne zmienne statyczne.
AVR1308 tam masz działający przykładowy kod.
A może inaczej panowei... Jaki to uC...?.?.? Pytanie dość istotne bo może być problem z głowy... W AVR przy konfiguracji ADC jest rejestr który za to odpowiada... I tak np w ATmega8 rejestr pod tytułem ADLAR ustawiony na 1 powoduje przesunięcie wszystkih bitów w lewo... Większość czyli 8 bitów zostaje w ADCH i tylko ten rejestr czytamy a dwa najmniej...
Odejmij jeden od drugiego, wynikiem będzie najstarszy bit określający znak wyniku.
To zależy, czy ta oś ma mieć rozdzielczość większą niż 8 bitów - Ty decydujesz. Ma mieć?
Na początku kodu wstaw : #include <avr/io.h> Nie trzeba niczego zmieniać w oryginale, ATmega8 ma te rejestry...
Oczywiście można bez rejestru szeregowego - jak sądzę intencją autora było oszczędzenie kilku pinów IO, nie wiem po co. Można LCD podłączyć bezpośrednio do MCU, schematów w sieci znajdziesz tysiące. Na schemacie masz sterowanie przekaźnikiem, możesz sobie pod niego podłączyć co zechcesz. Jeśli chcesz sterować elektromagnesem przekaźnik może być niepotrzebny,...
Tabelka w DS na str. 98 i zobacz sobie tryb 4 CTC (opis trybu masz na str. 88) kolumna TOP i nazwa rejestru do którego wartość TOP powinna trafić, bit w rejestrze TIMSK tez nie ten i co za tym idzie nie ten wektor przerwania.
do odczytu portów służą rejestry PIN
ehh, przecież podałem przykład właśnie do tego przypadku: union mix_t { long l; struct { short hi; short lo; } s; char c[4]; } mix;" a tutaj powinno być: union pwm{ struct { unsigned char hi; unsigned char lo; } s; unsigned int pomiar; } pwmVal; [...] pwmVal.pomiar --; wpisywanie wartości...
Timer 0 w atmedze8 nie ma pwm. Powinieneś użyć Timera 2, czyli rejestrów TCCR2 i OCR2.
...Jakiego typu powinien być wskaźnik, żeby wszystko było jak należy? volatile uint16_t
Musisz się zapoznać z rejestrami jakie posiada Atmega8. Nie posiada np rejestru TCCR2A tylko TCCR1A, tak samo nie ma rejestru COM2B1 tylko jest COM1B1. Otwórz datasheet na stronie 96 i poczytaj. Lub spróbuj pozmieniać wszystkie cyfry '2' w nazwach rejestrów na '1' tak jak napisałem na początku.
Wszystkie dokumentacje dotyczą tego samego mikrokontrolera jest atmega 8 i atmega 8A i atmega 8L W niektórych wersjach są różnice czasem niewielkie ,ale czasem znaczące dlatego mikrokontrolery dostały różne oznaczenia literowe a, pa ,pb .Sprawdzaj którego mikrokontrolera używasz i do niego ściągnij dokumentację .
Ogólnie chodzi mi o to jaką wartość logiczną ma domyślnie pin skonfigurowany jako wejście , który jest podciągniety do nap. zasilania? a jaką ma ten bez podciągniecia do nap. zasilania? Pin będący wejściem, który nie jest podciągnięty do VCC, będzie miał na wejściu trzeci stan ;) Hi-Z (wysokiej impedancji) a co za tym idzie gdy będziesz go programowo...
te rejestry (Fuse Bity) ustawia sie przy programowaniu programu a nie w sofcie. wbudowany programator bascoma ma taką opcje jak właczysz okno programowania to w zakładce "lock and fuse bits"
Tak, instrukcje SBR i CBR oraz ANDI i ORI.
Tabelka z trybami niczego Ci nie wskazuje?
Nie sprawdzałem wcześniej bo uwierzyłem ci na słowo, że sprawdziłeś rejestry ATMega8. W rejestrze TIMSK przerwanie overflow dla timera0 to TOIE0 ale jest to bit 0 a nie 1. W związku z tym inicjacja powinna wyglądać tak: TIMSK=0x01 lub jak wspomniałem wcześniej zdefiniować bit TOIE0: #define TOIE0 0 wtedy zadziała TIMSK=(1<<TOIE0) Bardzo polecam...
Cześć, właśnie próbuje zrobić PWM na atmedze8 za pomocą Timera1 i chce uzyskać ten sam Pwm na obu wyjściach oc1a i oc1b i nie wiem jak ustawić rejestry tego licznika. Na wyjściu oc1a uzyskałem już pwm'a ale nie wiem jak uzyskać go równocześnie na wyjściu oc1b...???
char: -128..127 unsigned char 0..255 int -32768..32767 unsigned int 0..65535 long -2147483648..2147483647 unsigned long 0..4294967295
Tu masz do atmegi16, powinien wystarczyć. http://chip.ict.pwr.wroc.pl/pliki/ATmega... Pozdrawiam.
Proszę o wyjaśnienie mi pewnej kwestii a mianowicie: zrobiłem płytkę na której zamieściłem atmega8 (ma to być termometr cyfrowy do golfa ) http://obrazki.elektroda.net/55_12331037... układ wyprowadzeń jak na schemacie. Element Q5 będzie wymieniony na termometr dallas. Jak skonfigurować port c tego mikrokontrolera aby działał jako wyjścia. Robiąc...
Dla 74HC165 linia ST_CP powinna być ustawiona na 1 podczas przesuwania a u Ciebie zostaje na 0. Jeśli funkcja void Trigger_Latch(void) jest dobra dla 74HC595 to w funkcji odczytu ustaw ST_CP na 1, a po zakończeniu odczytywania z powrotem na 0.
Witam. Ten program to ja napisałem :) Powinien działać poprawnie tak jak to ci już pisałem. Jak chcesz określić kierunek portów, to przed main dajesz coś takiego: ldi r16, 0xFF out ddrc, r16 Bo out przesyła oczywiście zawartość rejestru.
Ta gałąź z wyłącznikiem jest dość nieszczęśliwie zrobiona... cóż... Jeśli nie zależy Ci na pewności działania a LED nie jest biały ani niebieski podłącz do portu A.0 rezystor pull-down sporej wartości, wyzeruj bity DDRA.0 i PORTA.0. PINA.0 może zostanie ustawiony po przyciśnięciu przycisku. Ale nie na pewno, bo producent gwarantuje stan niski dla napięć...
PORTC &= (0 << PC0); A co to za konstrukcja? Przesuwanie zera w ciągu zer? Jak chcesz wyzerować bit to rób to tak: PORTC &= ~(1<<bit); Poza tym: - źle ustawiasz MCUCR - brak aktywacji przerwań w GICR. Zamiast tego grzebiesz w nieistniejącym rejestrze (Atmega8) GIMSK. - brakuje w main zapętlenia przez co program zawiesza przerwania...
czy nie jest uruchomiony dzielnik zegara przez 8. bo ma włączony bit CKDIV. Tylko od kiedy Atmega8 ma fusebit CKDIV8? TCCR1A |= (1<< WGM12); //tryb CTC WGM12 jest w rejestrze TCCR1B
Jakbyś przeczytał dokumentację od procesora to byś wiedział jak wpływa ustawienie bitów w rejestrze na pracę timera 0. Miłej lektury.
Tu masz dzilajacy kod;) fast PWM na timerze1 rozdzielczosc 8 bit. .include "m8def.inc" .org 0x00 rjmp reset RESET: ldi R16,low(RAMEND) out SPL,R16 ldi R16,high(RAMEND) out SPH, R16 ldi r16,1<<WGM10|1<<COM1A1 out TCCR1A,r16 ldi r16,1<<WGM12|1<<CS10 out TCCR1B,r16 ldi r16,122 out OCR1AL,r16 ldi r16,0xFF...
Wszystko się zgadza. Ale pamiętaj, że program na Atmega328 może nie działać na Atmega8. Rejestry mogą mieć inne adresy, mogą być różnice w rejestrach (bity inaczej rozmieszczone lub kompletnie inaczej rozwiązane), itp. - trzeba to sprawdzić i ewentualnie zmienić w programie i skompilować. na przykład używany w i2C rejestr TWSR ma adres: - w ATmega8...
...Jedyne co mi przychodziło do głowy to to że może POWER DOWN miesza coś w rejestrach dot. przerwań ... A widzisz, o rejestrach przerwań pamiętasz, a o rejestrach TWI zapomniałeś.
W tej chwili nie ma znaczenia co załadujesz do rejestrów sterujących tranzystorami. Świeciło będzie zawsze. Na pewno tranzystory sterujące wyświetlaczami są podłączone nieprawidłowo. Jeżeli nie potrafisz określić gdzie jest dren, a gdzie źródło, to pamiętaj, że diody w tych tranzystorach mają być spolaryzowane zaporowo. U Ciebie są spolaryzowane w kierunku...
Witam, Szczerze mówiąc nie miałem dziś za bardzo czasu na analizę kodu, wybacz... zwłaszcza że nigdy nie pisałem w bascomie, przeczytałem tylko, sprawdziłem krytyczne sygnały i nie widzę błędów Wklejam swoje kawałki, pisane chaotycznie bo były potrzebne tylko na chwilę, mam nadzieję że będą zrozumiałe: char nrfTest() { setPWRUP; clearTXEN;...
Teraz tu jest sprawdzany bit if(PINC & 0x08) a jak zastosuje && to cały rejestr jest porównywany z cyfrą 8 czy tak? Sprawdź w CManiaku: http://mikrokontrolery.blogspot.com/p/cm... ten program: [syntax=c]//Wymagane do symulacji definicji i rejestrów ATmega8: #include <dondu/dd_atmega8.h> int main(void){...
a co chcesz uzyskać? Atmega8 nie ma takiego rejestru ;]
Ja zawsze inicjuję wszystkie używane komórki pamięci ale ostatnio, na skutek drobnego błędu, program zaczął wyświetlać mi dane na LCD z obszaru, który nie był zainicjowany. Za każdym włączeniem zasilania na LCD były inne krzaczki. Mikrokontroler ATmega8.
Witam, Dzisiaj zmierzyłem się z tym samym problemem, choć kod na ATTINY13 przerabiałem samodzielnie. Taktowanie wewn. 9,6MHz. Oprócz użycia zaktualizowanych wzorów na obliczanie czasów bitów i pół-bitów trzeba było zwiększyć tolerancję: #define DD_RC5_TOLERANCJA_US 350 Po tej zmianie zaczęło działać poprawnie. Jak widać więc attiny13 ma "pecha" do tych...
Witam Od kilku lat bawię się Bascomem i jest to fajny kompilator, ale tylko do pewnego momentu. Helpa można zużyć spokojnie jako papier toaletowy. Publikacje Pana Wiązani są dobre ale tylko na początek zabawy. Ostatnio pracuję nad pilotem RTV który ma obsłużyć 4 urządzenia. No i zaczęły się schody. Pierwszy problem to sprzętowy generator nośnej ok....
Posiadam wyświetlacz LED oparty na układzie Atmega8 oraz rejestrach przesuwnych HC595 Nigdy o wyswietlaczach z Atmegami nie slyszałem. Wielce interesujące.
"Tą" liczbę masz zapisaną w zmiennej Liczba_przerwan_tim0 a nie w ośmiobitowym (czego się chyba obawiałeś) rejestrze timera0 - więc nie ma problemu.
Kiedyś napisałem prosty przykład użycia Timera w trybie CTC dla AVR w AVR Studio w języku C. W załączniku znajduje się ten gotowy kompletny program powodujący przerwanie od porównania (Compare) co około 250 ms i generujący przy okazji falę prostokątną na wyjściu OC0A. Otrzymujemy w ten sposób przebieg prostokątny na tej nóżce o okresie 2 Hz (2x250 ms...
Nie masz podciągnięcia pod zasilanie. Podłącz na próbę rezystor 1k między wejście portu a zasilanie i wtedy sprawdz czy jest ok. Inna przyczyna to być może pomyliłeś rejestry PIN i PORT - częsty błąd.
Zanim zaczniecie mnie odsyłać do funkcji szukaj, prosiłbym o przeczytanie postu do końca, ja nie znalazłem w archiwum odpowiedzi na moje pytanie. Mam ATmega8 połączonego z CC1000 na porcie D: PALE - PD2 PDATA - PD3 PCLK - PD4 Używam biblioteki ze strony chipcona i winavr. Musiałem poprawić plik nagłówkowy, ale teraz już się wszystko kompiluje, ale nie...
wszystko w porządku poza 'UBRR' undeclared (first use in this function) Przepraszam za pomyłkę. W przypadku mikrokontrolera ATmega8, rejestry UBRRH i UBRRL nie są połączone w jeden rejestr UBRR. Zamiast tego, są to dwa oddzielne rejestry, które są używane do ustawiania prędkości transmisji UART. Dlatego powinieneś zamiast "UBRR" użyć "UBRRH"...
Po ustawieniu portu w rejestrze PORTx musisz odczekać przynajmniej jeden takt zegara przed sprawdzaniem rejestru PINx. Możesz dodać intrukcję assemblera NOP.
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
Wg http://www.nongnu.org/avr-libc/user-manu... musisz zmienić nazwę wektora przerwań na TIM0_OVF_vect Porównaj sobie datasheet attiny13 z datasheetem atmegi8 żeby skonfigurować timery. Do skonfigurowania timera w attiny służą rejestry TCCR0A i TCCR0B, w atmedze8 jest tylko TCCR0 http://www.atmel.com/images/doc2535.pdf http://www.atmel.com/Images/Atmel-2486-8...
A tutaj masz program testowy: [syntax=c]#include <dondu/dd_atmega8.h> //Wymagane do symulacji definicji i rejestrów ATmega8 #define SERWO_MIN400 #define SERWO_MAX1300 int main(void){ //Symulujemy pomiar przetwornikiem ADC ADC = 879; //załóżmy, że taką wartość zmierzył przetwornik OCR1A = SERWO_MIN + ((SERWO_MAX - SERWO_MIN) * ADC / 1023); printf("OCR1A...
np ATmega8 - rejestr OSCCAL - służy do kalibracji wewn oscylatora ;) Dokładność częstotliwości zależy od napięcia, temperatury itp... w różnych prockach może być różnie z tym ustawianiem ale mają to i AVRy i PICe i inne... trzeba poczytać w notach aplikacyjnych jak dokładnie się posługiwać kalibracją w danym procku - jest tam to zawsze dokładnie opisane...
Błędne są nazwy rejestrów. Ale poprawnie tego nie jest banalne - ATTiny85 korzysta z interfejsu USI, którego nie ma ATMega8. Ona ma USART, wymagane zmiany w kodzie będą znacznie większe niż tylko zmiana nazw rejestrów. Także albo ściągnij wersję dla swojego procka, alb temat sobie odpuść do czasu aż nie poznasz bliżej c, assemblera i przede wszystkim...
Przekaznik Alias Pinc.5 powinno być alias portc.5;) Tutaj mamy 3 rejestry do obsługi portu, nie jak w 51 1;P
LM317 + sterowanie rejestrem przesuwnym 74164, 74HC595 lub portem I2C PCF8574.
takie pytanie dodatkowe jeszcze mam, jaka najnizsza czestotliwosc mozna ustawic (na wew zegarze) ? W opisie rejestru OSCCAL (nota od ATmega8) jest napisane, ze można zjechać do 50% wartości nominalnej, czyli teoretycznie ok. 500 kHz.W niektórych nowszych AVR można i 128kHz.
Po sprawdzeniu flag nie zapomnij jej/ich skasować ale uwaga w tym rejestrze wyjątkowo kasujemy flagę przez wpis zera! N.
Jest ok, tylko emitery tranzystorów są niepodłączone do zasilania. Podobnie piny AGND i AVcc procesora. Rejestr szeregowy ciągle nie podłączony do interfejsu SPI. Na wyjściach rejestru muszą być rezystory ograniczające prąd.
Aby upewnić się, że nastąpił reset wykorzystaj rejestr MCUCSR.
Myślę, że masz 2 problemy. Po pierwsze używanie OR w liniach inicjujących rejestry mści się na Tobie. Po drugie brak ustawionego BOD.
...Chyba ze powinienem zmienic sposob inicjowania PWM-a ? Powinieneś sprawdzić w dokumentacji, czy aby na pewno bit WGM13 , znajduje się w rejestrze TCCR1A .
Kolego do rozszerzenia ilości "wyjść-wejść" mikro kontrolera można użyć np. rejestrów lub expanderów.
Polling- czyli odpytywanie. Pojedyńczych pinów na tyle często żeby ich stan zmieniał się kilka-kilkadziesiąt razy wolniej niż to odpytywanie. Ponieważ procesor jest szybki a sygnały na pinach zmieniają się zwykle wolno to tak się robi. W głównej pętli- raczej nie w przerwaniu. Oczywiście to trzeba oszacować albo czasem dokładnie obliczyć- zależy od...
Nie ruszy. Należy dostosować i przekompilować kod źródłowy, dopiero wtedy to może zadziałać. Na poziomie kodu wynikowego te dwa MCU są niekompatybilne ze względu na inne rozmieszczenie rejestrów IO.
Potrzebuję podłączyć do ATMega8 kilka rejestrów 74...595. Czy przy zasilaniu 5V układy HC będą dobrze działać czy muszę użyć HCT?
1. Co to jest: UCSRB|=(1<<UCSZ1)|(1<<UCSZ0)... 2. Najpierw wpisz parametry transmisji w innych rejestrach, potem dopiero włącz transmisję w UCSRB.
Teraz pozostaje rozwiązać problem z odczytem danych. Niestety ta kość nie oferuje takiej usługi. Zapisane wartości musisz sobie sam zapamiętać i po ponownym zasilaniu ponownie "wgrać". A wartości domyślne po włączeniu zasilania to pewnie wszystko na zero (nie mylić z liczbami w rejestrach).
Jesli chcesz wykorzystac sprzetowe I2C (TWI) w ATmega8 to wszystko ustawiasz za pomoca odpowiednich rejestrow. Jesli ATmega bedzie pracowala w jako SLAVE to za pomoca odpowiedniego rejestru ustawiasz jej adres. Poczytaj w doumentacji od uC.
Dokładnie. A przede wszystkim operuj rejestrem DDR a nie PORT. Bo spalisz sobie tego BMP180.
Zobacz jest nota Atmela migracyjna z mega8 na mega88 i porównaj zwłaszcza rejestry które są inaczej mapowane w pamięci. N.
Wspomniana wyżej przeze mnie dokumentacja - ja z niej zawsze korzystam gdy jest coś w stylu "invalid register" ;) http://www.atmel.com/dyn/resources/prod_...
1) Znaczniki [code] 2) wygląda, że powinno działać, ale ja bym napisał DDRB=0b00000001 Off kos dioda w dobrą stronę przylutowana?:>
Spokojnie możesz z niego czytać. Będzie tam to co ustawiono bez względu na zewnętrzne warunki czyli to o co Ci chodzi. Działa jak rejestr podręczny. By the way - krócej niż zadanie pytania na Forum zajeło by Ci zapis czegoś do wybranego rejestru i odczyt czyli test tezy :P
AVE... Do wszystkich funkcji podajesz nazwę bitu w rejestrze portu i nazwę bitu w rejestrze kierunku. Przykładowo dla PICa te rejestry to PORTx i TRISx, gdzie x to nazwa portu (A, B, C, etc.). Zatem przykładowo kod dla PIC16F do sprawdzenia obecności dwóch sensorów na dwóch pierwszych pinach portu A i ustawienie stosownych flag w dedykowanej ku temu...
W związku z tym, ze to nie jest wyświetlacz LED tylko LCD i sterowanie nim jest nieco inne niż trzema oddzielnymi siedmiosegmentowymi ze wspólną katodą, podtrzymuję więc to, co napisałem posta wyżej. Wyjaśnienie: Można zastosować w tym projekcie ATmega8, ale ma ona za mało pinów I/O żeby pominąć rejestry przesuwne... Można zastosować ATmega8 z rejestrami...
Zapisz sobie podstawę roku w RAMie (w PCFie) z dokładnością do 4 lat. Czyli dla obecnego roku w RAMie wpisujesz 04, a w rejestrze roku 02. Przed wyświetleniem dodajesz te 2 liczby. Przy ustawianiu natomiast wpisany rok podziel na 4. Wynik wpisz do RAMu, a resztę dzielenia do rejestru roku w PCFie.
Mam pytanko w załączeniu błedy jakie mi wyświetla kompilator. Czy ktoś wie dlaczego nie rozpoznaje odwołania do rejestru UBRR w ATmega8.
Jak potrafisz angielski to w nocie są dokładnie rejestry opisane, jest ich bardzo niewiele i właściwie nietrudno poustawiać je tak, żeby otrzymać żądany tryb
To jak sprawdzasz to sprawdzaj w rejestrze PIND, a nie PORTD, w którym jest to co do niego zapisałeś.
Dim Czas as Word Czas = 850 do Set PortC.1 Wait Czas Reset PortC.1 Wait Czas loop Pozdrawiam P.S. Poczytaj do czego służy Alias. Nadaj alternatywne nazwy rejestrom a nie poleceniom języka.
- w kwestiach, które pominąłem nie będę się wypowiadał, bo nie przerabiałem jeszcze rejestrów i matryc, więc życzę przyjemności z dłubania ;-)
Witam. A skąd w Atmega8 wziąłeś rejestry TCCR0B , TCCR0B. Timer0 i _delay_ms() razem działają. Masz co nie tak w swoim kodzie. Pisał już (at)excray dodam tylko pełny. Możesz powyrzucać wszystko co jest nie potrzebne i zostawić sam błąd.
Tak Tak, tylko chodziło mi głównie o wartości rejestrów :)
No to działać na pewno nie będzie, bo przy 1MHz to jeden cykl trwa 1us. Zapomnij, że coś pomierzysz dobrze. Zapoznaj się z rejestrami GICR (INT0 i INT1) i GIFR (INTF0 i INTF1).
Pierwsze co się rzuca w oczy to użycie złego operatora. Przy konfiguracji rejestrów używasz operatora negacji logicznej (!) a powinna być negacja bitowa (~).
TWPS to nazwy bitów TWPS1, TWPS2, a TWBR to rejestr
Witam, Może wiecie gdzie znajdę opis znaczenia poszczególnych bitów specjalnych rejestrów Atmega8 - chodzi mi przede wszystkim o bity i znaczniki przerwań od USART'a (flagi) i Timerów - w pdf'ie tego nie widziałem? I jeszcze jedno, skoro ta Atmega posiada sprzętowy I2C to czy Bascom korzysta z programowej obsługi tego protokołu tak jak w przypadku 89C2051...
A nie lepiej rejestry SIPO?;-)
A rejestry przesuwne?
Sprawdź w symulacji co się dzieje z rejestrem TCCR1B (a szczególnie z bitami CS10 - 12) po komendzie "timer1 = 0".
Dobrze, że uczysz się C ale jeżeli chcesz w pełni wykorzystywać ten język to naucz się jeszcze korzystać z not katalogowych uC. 1. O porcie A już kolega polprzewodnikowy napisał. 2. Timer0 w M8 w przeciwieństwie do M32 nie ma możliwości pracy w trybie CTC. Chcesz CTC to przenieś obsługę na T1 lub T2. Ewentualnie T0, ale w trybie normal z cyklicznym...
Blokuje. Introduces an interrupt handler function (interrupt service routine) that runs with global interrupts initially disabled by default with no attributes specified. The attributes are optional and alter the behaviour and resultant generated code of the interrupt routine. Multiple attributes may be used for a single function, with a space seperating...
A co pisze w nocie katalogowej np atmegi8, przy rejestrze ADC Data Register ADCL and ADCH
No to ja tu widzę jeszcze taki dinks: W kodzie masz napisane, że prędkość transmisji to 9600. Zakładam, że mimo wszystko zostałeś przy zegarze procka 1MHz. Z tego zaś wynika, że jeśli do UBRRL wstawiasz 12, to twoja prędkość to nie 9600 a 4800. Drugą opcją jest to, że musisz załączyć bit U2X w rejestrze UCSRA (wtedy będzie 9600).
Czy w ATmega8 da się wykonywać operacje na pojednczych bitach w rejestrach i/o, np TWCR? Jeśli chodzi o rejestry I/O z zakresu adresowego 0x00 do 0x1F to tak. Jeśli chodzi o rejestry znajdujące się wyżej - od adresu 0x20, przykładem jest właśnie TWCR - to nie. Polecenie SBI TWCR, 6 skutkuje błędem error: Operand 1 out of range: 0x36, (...) Wytłumaczenie...
Z tego co wyczytałem to rejestr TCCR2 w M168 jest podzielony na 2 rejestry TCCR2A i TCCR2B, zgadza się ?
i co z tego?? ale w pętli głównej po optymalizacji program pewnie działa tylko na rejestrze.
rejestry atmega8 atmega128 rejestry modbus rejestry
rozebrać pompa polsat cyfrowy lista kanał naprawa pompy myjącej zmywarki bosch
pompa ciepła split pompa ciepła split
Kod błędu A5A00009 w Nissan X-Trail - diagnostyka i rozwiązania Schemat radia Sanyo C3 - gdzie znaleźć?