PIC16F886 + USART = ofunk

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + USART = ofunk

Inlägg 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...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F886 + USART = ofunk

Inlägg av Icecap »

OK, ville inte lusläsa databladet men jag litar på dig, sodjan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + USART = ofunk

Inlägg av sodjan »

Och jag litar på databladet... :-)
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC16F886 + USART = ofunk

Inlägg 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?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
ffredrik
Inlägg: 354
Blev medlem: 20 oktober 2009, 17:52:18
Ort: Göinge

Re: PIC16F886 + USART = ofunk

Inlägg av ffredrik »

Terminalprogrammet emulerar tydligen VT102, bör du inte då ha asynchronous mode?
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC16F886 + USART = ofunk

Inlägg 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.
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC16F886 + USART = ofunk

Inlägg 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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F886 + USART = ofunk

Inlägg 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!
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC16F886 + USART = ofunk

Inlägg 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å.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F886 + USART = ofunk

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F886 + USART = ofunk

Inlägg 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.
Skriv svar