Sida 2 av 2
Re: PIC16F886 + USART = ofunk
Postat: 19 maj 2016, 22:02:03
av sodjan
Icecap> ...och när du sedan har lagt i data i TX-registret ska du nollställa TXIF.
En skrivning till TXREG nollar även TXIF. TXIF flaggan är dessutom read-only
så den går inte att skriva till direkt i alla fall...
Re: PIC16F886 + USART = ofunk
Postat: 19 maj 2016, 22:22:27
av Icecap
OK, ville inte lusläsa databladet men jag litar på dig, sodjan.
Re: PIC16F886 + USART = ofunk
Postat: 19 maj 2016, 22:49:32
av sodjan
Och jag litar på databladet...

Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 10:03:39
av bos
Nu har jag eliminerat anslutningsproblemen, så nu får jag in data till PC:n. Krux är att det är inte den sträng jag skickar, utan det är rappakalja. Misstänker att jag satt nån inställning i koden fel, men jag har vridit och vänt på alla sidor i databladet och hittar inte var jag går bet. Minicom är inställt på 9600 baud och min PIC är inställd på samma sak. PIC:en körs i 8MHz (INTRC_NOCLKOUT).
Bittar som är relevanta för seriemodulen:
Kod: Markera allt
SYNC = 1; // Synchronous
CSRC = 1; // Master
SREN = 0; // No single receive
CREN = 0; // No continuous receive
SPEN = 1; // Enable serial port
TXEN = 1; // Transmitter
BRGH = 0; // Unused in sync-mode
BRG16 = 0; // Don't use 16bit baudrate
SPBRG = 12; // 9600 baud
Se skärmdump för hur minicom ser ut när det tar emot datat.
Är det här felet relaterat till felaktig baudrate, eller något annat?
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 10:09:32
av ffredrik
Terminalprogrammet emulerar tydligen VT102, bör du inte då ha asynchronous mode?
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 10:30:09
av bos
Jag hittade inte hur man ändrar emuleringen i minicom, men det blir exakt samma resultat om jag kör cat < /dev/ttyUSB0 så det är inte emuleringen som strular. Provade för skojs skull att köra PIC:en i asynkront läge, men då kom ingen data alls. Stendött på seriesnöret.
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 11:03:30
av bos
Att konstant skriva ut "U" som data ger följande bild på oscilloskopet (gul = RX, grön = TX). Jag kan dock inte avgöra om det är bra eller dåliga kurvor.
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 11:20:09
av Icecap
Med synkron signalering finns det varken start eller stopp-bit med. Din överföring är alltså fel till att börja med, du ska alltså fortfarande köra med asynkron inställning!
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 11:50:07
av bos
"fortfarande"? Ingen, inte ens du, har nämnt ett ord om det så du behöver inte bli sådär överdramatisk.
Jag är dock mer påläst om RS232 nu än för en kvart sedan, så nu är jag mer upplyst om att synkron överföring är grundfelet. Asynkron inställning ger dock ingen datatrafik, såhär lite snabbt testat, men nu har jag iallafall något att gå på.
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 12:27:26
av Icecap
bos: RS232 har inget med signaleringen att göra, RS232 är bara en beskrivning av spänningsnivåerna.
Och ja, det är sant att ingen tidigare tydligt har skrivit att det ska vara async. Du skrev dock tidigt att du har testat båda och senare inlägg visar att det är klockan du tittar på.
Men ja, du ska köra med async. kommunikation. Jag brukar - när det är möjligt - att köra med 2 stoppbit vid sändning och 1 stoppbit vid mottagning, det är dock ganska få UART som medger denna skillnad i inställningarna och när det inte går brukar jag köra med 1 stoppbit på båda.
Re: PIC16F886 + USART = ofunk
Postat: 24 maj 2016, 18:05:34
av sodjan
Som har sagts så ska du först ändra till async.
Sedan, det "skräp" som du visade på skärmdumpen, är
det kortare eller än det som du skickar?
Längre: terminalens baud rate > processorns.
Kortare: terminalens baud rate < processorns.
Det ger en liten vink av hur du har hastigheten fel.