Witam,
Mam problem z timerem 1, aby lepiej zrozumieć, co się dzieje podłączyłem pod port A zestaw diod.
Do portu A stale przypisywana jest wartość rejestru TCNT1H, taktowanie procesora to 1MHz.
Diody powinny niezbyt szybko zliczać w systemie binarnym, tymczasem nie świecą w ogóle...
Najciekawszy jest fakt, że po zamianie z TCNT1H na TCNT1L, wszystko działa (szybciej, ale to oczywiste),
jeżeli zamiast TCNT1H wpiszę (TCNT1>>8), działa tak, jak powinno.. powolne zliczanie w bin..
Sprawdzałem adres w bibliotece i wszystko w porządku z TCNT1H, 0x2D.. napisałem ten sam program w ASM i ciągle to samo..
Próbowałem na innym procesorze.. to samo.. Debugowanie? Również to samo.. symulator pokazuje dokładnie tak, jak jest..
nie mam pojęcia, czemu to nie działa.. chyba czegoś jeszcze nie wiem o procesorach AVR...
A góry dziękuję za wszelkie odpowiedzi, kod źródłowy w C zamieszczam poniżej.
Kod:
#include<avr/io.h>
int main()
{
DDRA|=0xFF; //Cały PORTA jest wyjściowy
//PORTA|=0x02; //To nie istotne..
TCCR1B|=0x05; //Timer 1 ustawiony na preskaler 1024
for(;;){
PORTA=TCNT1H; //W nieskończonej pętli następuje przepisanie wartości TCNT1H do PORTA
}
//PORTA&=0xFD; //Nie istotne..
return 0;}