8051 RS232

Jan 24, 2005 12 Replies

Witam Da sie wykryæ z jaka predkoscia sa nadawane znaki do 8051 przez RS232, tak zeby uK automatycznie ustawi³ sobie taka sama predkosc portu i nawiaza³ poprawne po³aczenia z urz±dzeniem nadaj±cym



pozdrawiam



Myslê, ¿e to ³atwo zrobiæ. Wysy³asz jaki¶ konkretny znak np U jak to robi± programatory uart dla 89C51RD2 a procesor wie co ma odebraæ. Czyli próbuje odebraæ co¶ co jest z góry ustalone i jak to odbierze to ju¿ wie na jak± prêdko¶æ ma siê ustawiæ.

PC

Da siê. Dallas robi to w oprogramowaniu wbudowanym do uP DS80C400 (i to dzia³a!).

dziadek Ben

A jak to zrobiæ w przypadku innych 8051, które nie posiadaj± takiego mechanizmu?

Tu masz przykład w asm i doca z opisem:

formatting link

-------- Kris

Wysy³asz z zewn±trz jak±¶ ustalon± sekwencjê z ró¿nymi prêdko¶ciami. W koñcu dla której¶ prêdko¶ci transmisja bêdzie zrozumia³a i wy¶lesz potwierdznie. A w drug± stronê wysy³asz z zewn±trz sekwencjê powiedzmy 10x a procesor cyklicznie zmienia prêdko¶æ i w koñcu za³apie. Przerwanie od uarta dostaniesz niezale¿nie od tego czy prêdko¶ci siê zgadzaj± czy nie.

PC

a moze lepiej wysylac 01010101010.... i zbadac jaki jest czas trwania bitu? :) /jakby byl 1 bit stopu i 1 startu to dac znak (8-bit) 0xAA :)

dokładniej i łatwiej zmierzyć czas trwania 9-ciu bitów, gdy wyśle się 0x00.

w.

Wyslanie 0x00 jest klopotliwe. A jesli przypadkiem odbierzemy inny znak - to na pewno ustawimy zla predkosc ..

J.

kłopotliwe? zależy o jakiej transmisji mówimy. jeśli ASCII to faktycznie, ciężko wysłać NUL. jeśli o własnym protokole, to raczej lepiej zmierzyć szerokość impulsu i odpowiednio ustawić timer niż porównywać znaki odebrane z różnymi prędkościami. dzięki temu można skorzystać z niestandardowych prędkości, nie tylko 9600 i ferajny.

w.

W artykule <ct3asf$f4o$ snipped-for-privacy@news.onet.pl> autorem którego mieni się dziadek Ben, napisano:

Hm, patent sprzed 20 lat z bootloadera 68HC11 ? Co prawda rozpoznawał tylko dwie szybkości, ale zasada ta sama.

(nie to, zebym Ci wlazil w tylek ;) "nic dodac nic ujac". :)

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required