avr i max485 problemów ciąg dalszy

May 25, 2006 9 Replies

Witam.



Podłaczyłęm ten układ pod attiny2313 i występuje dziwny problem. Otóż przy odbieraniu znaków od 1 do 127 wszystko jest ok natomiast powyżej występuję błąd ramki FE. A w UDR zamiast



128 jest 0
129 jest 1
130 jest 2 itd.. tak jakby był zjadany najstarszy bit w UDR.

Próbowałem już podpinać rezystory podciągające zarówno do max485 jak i do linii RxD avrka i ciągle to samo. Czy ktoś ma jakiś pomysł?



Transmisję ustawiłem wydaje się poprawnie 9600, 8d, 1 stop, 1 parzystości



UBRRH = 0; //Baud=9600 UBRRL = 25;



//Włączenie dbiornika i nadajnika, aktywne przerwania UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE) | (1 << TXCIE);



//Dane 8 bit, 1 stop, parity even #define URSEL 7 UCSRC = (1 << URSEL) | (1 << UPM1) | (3 << UCSZ0);



Dzięki za pomoc Pozdrawiam Paweł



[...]

Ja się nie znam na 485 ale na RS232/V24 8 bitów i parzystość się wykluczają.

[...]

Hm. Nie wiem co to jest V24, ale w specyfikacji avrka podane jest

The USART accepts all 30 combinations of the following as valid frame formats:

- 1 start bit

- 5, 6, 7, 8, or 9 data bits

- no, even or odd parity bit

- 1 or 2 stop bits

Chyba powinno działać. Pozdrawiam Paweł

Czy może być przyczyną to że używam wewnętrznego oscylatora 4MHz zamiast kwarcu?

Paweł

Użytkownik "Paweł" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:e54td2$sg7$ snipped-for-privacy@news.onet.pl...

teoretycznie mogłoby to by być przyczyną - ale gdybys miał przekłamania w poszczególnych bitach danych - a nie na jednym tylko jeśli takich kłopotów nie masz - zakładam, że błąd zegara przy wysyłaniu transmisji 9600 - jest pomijalny

ja bym wyrzucił tę przystość - czyli tylko 8,n,1 stop - i sprawdził, czy jest ok

poza tym skąd pochodzą te dane? z PC-ta? przez jakiś konwerter? - może tam jakieś obcinanie najstarszego bitu jest realizowane...?

Jednak po looknięciu kilku postów wyżej - raczej pachnie mi to typem signed char... zamiast unsigned char

poszukaj w opcjach kompilatora przełącznika zeby typ char był domyślnie

8-mio bitowy

coś kojarze, że kiedyś miałem podobny problem

Dnia 25.05.2006 Paweł snipped-for-privacy@poczta.onet.pl> napisał/a:

Najlepiej sprawdz oscyloskopem, albo polacz uklad tak zeby odbieral to co wysylasz i porownaj wyniki. U mnie na wewnetrznym oscylatorze pojawil sie blad transmisji >5% a nominalnie powinien byc na poziomie 0,2%...

AW

Witam.

No i przyczyna się znalazła. Jednak trzeba było dożucić kwarca. Wszystko zaczęło śmigać jak należy bez błędów ramki.

Mam tylko teraz problem ze startem mikrokontroloera. Dopóki nie dotknę palcem kwarca to stoi w miejscu.

Co może być przyczyną? Użyłem kwarca 4MHz i 2 kondensatorki ceramiczne po 30pF. Może za duże? W specyfikacji podane że od 12 do 22pF. CKSEL3-0 mam 1101, a SUT10 na 10.

Dzięki za pomoc Pozdrawiam Paweł

Hm, IMHO - na 232 tez sie nie znasz :-)

ilosc danych to jedno, parzystosc to drugie, ilosc bitow stop to trzecie, a 232/V24 w ogole nie okresla co bedzie transmitowane.

Jak UART jest uniwersalny to wszystkie kombinacje przyjmie.

J.

8250/16450/16550 nie przyjmie 8 bitów i parzystosci o ile mnie skleroza nie myli.

Dnia 26.05.2006 Paweł snipped-for-privacy@poczta.onet.pl> napisał/a:

Skoro takie sa podane w specyfikacji, to chyba nie bez powodu. Zmiana kondensatorow powinna pomoc

AW

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required