witam
zrobilem sobie software'owego uarta na ATMega32 na kwarcu 11059200 WinAVR
i w zasadzie transmisja mi dziala ale wykrylem cos dziwnego co mnie troche zainstrygowalo dlatego pytam moze ktos bedzie wiedzial co sie dzieje a mianowicie mam linie TxD na linii PORTD4
i jak ustawie dla Timera0 dzielnik czestotliwosci rowny 64:
TCCR0 &= ~_BV(CS02); //ustawienie dzielnika dla Timera 0 TCCR0 |= _BV(CS01); //dzielnik: 64 TCCR0 |= _BV(CS00);
oraz wpisze do rejestru: TCNT0 = 256 - 3; a wiec przerwanie od timera bedzie mi sie wykonywalo 57600 razy na sekunde przy takich ustawieniach wsyzstko dziala dobrze
ale jak zrobie cos takiego: ustawie dla Timera0 dzielnik czestotliwosci rowny 8:
TCCR0 &= ~_BV(CS02); //ustawienie dzielnika dla Timera 0 TCCR0 |= _BV(CS01); //dzielnik: 8 TCCR0 &= ~_BV(CS00);
oraz wpisze do rejestru: TCNT0 = 256 - 24; a wiec przerwanie od timera bedzie mi sie wykonywalo takze 57600 razy na sekunde to przy takich ustawieniach transmisja sie rozjezdza oczywiscie wszystko jest dla takiego samego kodu transmisji ramki co moze byc nie tak przeciez z punktu widzenia AVR'a nie ma to znaczenia jaki dzielnik wpisze oraz ile bede wpisywac do rejestru TCNT0
pozdrawiam Krzysztof