PIC-PIC-kommunikation med EUSART

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

PIC-PIC-kommunikation med EUSART

Inlägg av bos »

Jag sitter och labbar lite med att få två PIC:ar prata med varandra men jag är totalt förbryllad över hur EUSART ska konfigureras när det gäller asynkron kommunikation mellan de två (PIC16F15386).

I databladet står det på sida 470 under "Enabling the transmitter" att jag ska ha TXEN = 1, SYNC = 0, SPEN = 1 för att "enable asynchronous transmitter". Inget konstigt med det. Sida 472 säger CREN = 1, SYNC = 0, SPEN = 1 för "enable asynchronous receiver". Inget konstigt med det, heller.

Det jag inte fattar är att om jag, som databladet säger, ställer in PIC #1 till transmitter och PIC #2 till receiver, hur ska jag då kunna då kunna få full duplex (sida 468: "The EUSART module includes the following capabilities: Full-duplex asynchronous transmit and receive") mellan de båda? Jag missförstår antagligen nånting, men det påståendet tycker jag går emot vad som sägs i stycket här ovan, att jag ska ställa in en sändare och en mottagare. Jag vill ju att båda ska kunna prata med varandra när som helst, vilket de alltså inte gör just nu, och jag fattar inte varför, och inte heller vet jag hur jag ska felsöka.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC-PIC-kommunikation med EUSART

Inlägg av TomasL »

Du slår på både sändaren och mottagaren i bägge prollar, med samma och lämpliga inställningar, därefter kopplar du dem enligt
Prolle 1 Prolle 2
TX -> RX
RX <- TX
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC-PIC-kommunikation med EUSART

Inlägg av bos »

Jag ska alltså ha TXEN = 1, CREN = 1, SYNC = 0, SPEN = 1 (samt alla gemensamma inställningar med baudrate osv) i båda, och då kan vilken som helst av dem kasta ut data fritt efter behov?

EDIT: förtydligande - jag behöver alltså inte manuellt hålla på och växla mellan CREN=1/TXEN=0 & CREN=0/TXEN=1 beroende på vem som ska prata?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC-PIC-kommunikation med EUSART

Inlägg av TomasL »

Ja, men, beroende på vilken processor du har, så kan den vara upptagen med annat och inte ha möjlighet till att ta emot.
Lämpligt är att köra med både TX och RX interrupt.
Nej, du behöver inte hålla på att växla, däremot kan det vara bra att stänga av RX-Int när du sänder, och ha den påslagen när du inte sänder.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: PIC-PIC-kommunikation med EUSART

Inlägg av sodjan »

Ja, sändare och mottagare är två separata enheter som styrs var för sig.
De delar dock baud rate inställningar, om jag inte minns fel, så det måste
vara samma hastighet i båda riktningar. Men det är nog normalt så...

PIC16F15386 har i alla fall en 2 teckens buffert/FIFO på mottagaren,
så du har lite marginal för att läsa och ta hand om ett par tecken.
Användarvisningsbild
adent
Inlägg: 4094
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: PIC-PIC-kommunikation med EUSART

Inlägg av adent »

Ja precis, bara slå på bägge. Man behöver inte disable:a mottagaren för att man sänder eller vice versa.
Kör man interrupt på mottagen byte och bara flyttar den till en buffert där så är det inga som helst problem att hinna med (i regel).
Skriv svar