UARTy - lepsze dwa sprzętowe, czy programowy?

Apr 02, 2006 7 Replies

Witam!



Mam zamiar w kilkunastu urządzeniach, budowanych na ATMELach AVR, wykorzystać dwa układy UART. W układach, którymi bawiłem się do tej pory wbudowany był tylko jeden sprzętowy UART. Jednak Bascom umożliwia programową realizację drugiego takiego portu.



W helpie do Bascoma można znaleźć opis poleceń:



COMpin:szybkość,8,N,bity_stopu, np. COMB.0:9600,8,N,2



Open "comd.1:19200,8,n,1" For Output As #1 Open "comd.0:19200,8,n,1" For Input As #2



Mam zamiar podłączyć do obu portów (sprzętowego i wirtualnego) dwie, niezależne kostki MAX485, pracujące na dwóch niezależnych magistralach.



Proszę o podzielenie się doświadczeniami, osoby, które próbowały już czegoś takiego (jak spisują się programowe UARTy?). Ewentualnie, jaki uP AVR z dwoma sprzętowymi UARTami polecacie, który będzie mieć wsparcie ze strony Bascom AVR?



A tak, przy okazji, to uP z dwoma UART'ami to bardzo prosty sposób na "rozgałęźnik" dla magistrali RS485. W ten sposób, z 32 urządzeń (ograniczenie magistrali RS485) możemy zrobić nieskończoność.


To ograniczenie to już historia. Ja od 2 lat mam na magistrali 128 urządzeń, a wykorzystanie choćby MAX3075E pozwala na 256 !

dziadek Ben

Dziękuję za tę informację, jest dla mnie bardzo cenna!

A Ty na jakich układach się bawiłeś / w jakich masz największe doświadczenie? Jak jest z dostępnością tych układów na polskim rynku?

Pozdrawiam Mariusz

Użytkownik "Mariusz" <mariusz snipped-for-privacy@o2.pl napisał w wiadomości news:e0phlv$1r4$ snipped-for-privacy@atlantis.news.tpi.pl

Należy pamiętać, że standard RS485 stanowi iż typowy nadajnik może wysterować do 32 obciążeń JEDNOSTKOWYCH (ang. unit load) -- 12k omów, oraz dwa terminatory po 120 omów. Stosując na magistrali JEDYNIE odbiorniki mające impedancję wejściową równą 1/8 jednostkowego obciążenia (jak wyżej wzmiankowany) i 2 terminatory 120 omów, można mieć na magistrali 256 urządzeń.

Kiedyś w ATmega128 musiałem dorobić trzeci. Pracował chyba na 38 kbit/s. Nie było żadnych problemów. Nie obciążał w sposób znaczny systemu, ale był to najprostszy jaki można sobie wyobrazić pracujący w przerwaniach. Niedawno zafundowałem sobie w ATmega8 4 programowe UARTy. Ponieważ zależało mi na tym, by były odporne na zakłócenia (dość specyficzna aplikacja) wykonuję trzy odczyty linii w ciągu jednego bitu. Chodzi to w przerwaniu timera i umożliwia transmisję do 9600, ale wtedy zabiera prawie cały czas procesora, dlatego musiałem zmniejszyć transmisję do 4800. Gdybym teraz przystępował do tego zadania wstawiłbym UART zewnętrzny. Żaden z nich nie był jednak z Bascom'a.

Używam serii MAX307x. Są dostępne w WG ELECTRONICS, czasem trzeba 14 dni poczekać.

dziadek Ben

Użytkownik "Bogdan Gutknecht" Niedawno zafundowałem sobie w ATmega8 4 programowe UARTy. Ponieważ zależało

3 odczyty na bit, 9600, PIC16F84, kwarc 9.216MHz, kilkubajtowe bufory I/O na każdy port, około 50% czasu procesora. pisane w C.

entrop3r

Użytkownik "entroper" snipped-for-privacy@CWD.spamerom.poczta.onet.pl> napisał w wiadomoœci news:e0rg3c$akj$ snipped-for-privacy@atlantis.news.tpi.pl...

zapomniałem dodać: 3 UART'y

e.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required