Jump to content
ELFORUM - Forumul electronistilor

Mai multe receptoare pe acelasi bus UART


Recommended Posts

Salut,Aplicatia mea foloseste un PIC central care trebuie sa comunice cu trei module, doua dintre ele fiind obligatoriu UART, iar al treilea este la bunul meu plac (pot alege alt protocol). Pentru scris folosesc MikroC. Problema este ca ansamblul se vrea de precizie in masurarea timpului, asa ca imi este cam peste mana sa folosesc libraria SoftwareUART. Intrebarea mea este, pot sa leg cele trei module la acelasi port UART hardware al PIC-ului? Functioneaza o astfel de lipitura? Identificarea destinatarului se va face pe un layer superior (trimit un sir de caractere care va contine si un identificator).Merci fain,Adi

Link to comment
  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Daca modulele atasate microcontrollerului nu trebuie sa vorbeasca intre ele pe acel bus UART, partea de Tx a microcontrollerului e simpla.Pur si simplu conectezi toate Rx-urile modulelor la Tx-ul microcontrollerului. Cat despre drumul inapoi(catre microcontroller) al datelor, aici e mai greu, pentru ca exista riscul ca ambele module sa vobeasca in acelasi timp si nici chiar cu un dispozitiv adaptor (la nivele logice, vorbind) sa nu reusesti, decat daca acel adaptor stie cand se termina mesajul(intreg sirul de caractere) al fiecarui modul in parte, moment dupa care sa permita celorlalte module sa "vorbeasca". Daca ar sti sa blocheze traficul doar pe parcursul unui singur caracter(desi , chiar si asta implica ceva inteligenta pentru acel adaptor), ar exista posibilitatea de a permite altui modul sa trimita un caracter intr-un sir pe care microcontrollerul il crede al primului modul(cel care a initiat conversatia/transferul ), compromitand intregul mesaj.Solutie ar fi folosirea a cate unui pin pentru receptia UART a fiecarui modul in parte(transmisia facandu-se broadcast(cumam prezentat mai sus)) dar asta implica rutine complicate si intreruperi de care poate nu beneficiaza al tau microcontroller....etc..etc...Deci ori folosesti un microcontroller cu cel putin 2 UART-uri (lpc2148, etc) ori...folosesti pentru toate un bus gen I2C sau CAN. I2C stie sa faca broadcast(daca vrei sa anunti toate device-urile de un eveniment, simultan).Acum, intrbarea e , concret ce trebuie sa legi la ce si ce sa faca ele? Poate gasim alta solutie....Numai bine! :bere:

Link to comment

Transmisia invers o poti aranja la nivel de software. Conectezi toate TXurile de la slave la RXul masterului. In mod normal fiecare slave are TX de la USART dezactivat si pinul TX facut ca intrare. Trece in mod activat si iesire doar dupa ce primeste ceva care ii spune sa faca asta. Masterul asigura managementul comunicatiei. In orice caz, oricum ai face la nivel HW, ai un singur RX de la master deci asta inseamna ca o transmisie simultana duce la erori, trebuie sa eviti asta.Daca vrei ca oricare sa vorbeasca cu oricare, mai bine te indrepti spre un bus I2C care ar necesita HW minim. Mai complicat poti merge pe RS485.

Link to comment
...doua dintre ele fiind obligatoriu UART, iar al treilea este la bunul meu plac (pot alege alt protocol)...

UART nu este un protocol, e o interfata la nivel fizic. Peste ea poti implementa diferite protocoale.

 

...Problema este ca ansamblul se vrea de precizie in masurarea timpului, asa ca imi este cam peste mana sa folosesc libraria SoftwareUART...
Defineste ce inseamna de precizie. Daca e important timpul atunci sincronizezi toate dispozitivele si trimiti pachete de date cu stampila de timp.

 

Intrebarea mea este, pot sa leg cele trei module la acelasi port UART hardware al PIC-ului?
Da, daca stii cum s-o faci si daca alegi un protocol corespunzator.

 

Functioneaza o astfel de lipitura?
Ce lipitura? Vrei sa le lipesti pur si simplu intre ele cu fludor? Se poate si asta daca pinii Tx ai dispozitivelor slave pot fi trecuti in 3-state si daca implementezi un protocol de tip master-slave. Tx de la master il legi la Rx de la slave si invers.
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines