PIC16F877A + RS232

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: PIC16F877A + RS232

Inlägg av sodjan »

> får ja massa konstiga tecken

Får du *olika* tecken (det finns inga konstiga tecken :-) )
om du ändrar TXREG ?

Det hela ser ut som ett baudrate fel.

> om ja kommenterar bort

Gör *INTE* det.
Det är en helt ointressant test som inte ger någonting alls.

> förslag på vad ja kan göra?

1. Verifiera att processorn faktiskt kör i 4 MHz.
Andvänd t.ex inbyggda delay() funktioner istället för looperna
och lägg till blinking av LED eller liknande.

2. Skriva nya testprogram, t.ex ett som hela tiden skickar samma
tecken med en liten fördröjning. Så länge som du inte kan få det
att fungera i ena riktingen så är andra riktningen ganska ointressant
och det bara "skymmer sikten" så att säga.

3. Skriv om det i assembler så att du är 100% säker på vad du gör.

EDIT: Glömde :

4. Ge inte upp så jäkla snabbt... :-)
Det finns hur mycket som helst att göra som felsökning.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46957
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC16F877A + RS232

Inlägg av TomasL »

Det är väl också brukligt att testa TXIF innan man skriver till TXREG.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46957
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC16F877A + RS232

Inlägg av TomasL »

Börja med att göra det enkelt
Ta bort all kod utom initieringen (dvs det i början av main)

Skriv sedan in (den enda kod som skall finnas i main())

Kod: Markera allt

while (1) {
    while (!TXIF)
        TXREG='A';
}
Funkar det så skall du få en oändlig radda med A'n i ditt terminalfönster.
Användarvisningsbild
swesysmgr
Inlägg: 14936
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: PIC16F877A + RS232

Inlägg av swesysmgr »

Jag hade uttryckligen satt TX9=0 och sedan korskopplat utgången till ingången och kollat vad som kommer till RX-registret samt om FERR eller OERR flaggas upp.

Hur ser SPBRG ut när du får lite text utan att ha initialiserat registret?

För att se värdena på registren så kompilera och kör i debugger läget i mplab och välj dem i watchfönstrets dropdown men det kanske du redan vet.
Xelup
Inlägg: 13
Blev medlem: 22 juni 2011, 11:50:21

Re: PIC16F877A + RS232

Inlägg av Xelup »

Hej inte kommit någon vart, har kopplat om det en gång ifall de skulle vara något fel på kopplingsdäcket.

Har mätt och kollat men hittar fortfarande inte felet.. googlade lite och såg att någon haft liknade problem och att pinnen då var analog men PIC16F877A är ha väl inte analoga PORT C pinnar?

Jag får fortfarande inget interrupt på RCIF när ja skickar data från PC. Och skickar ja data från PIC:en så får ja ingenting i datorn på den nya uppgopplingen.

Jag la till kod som skulle tända och släcka en led med 1 sekund men blev 28 sekunder mellan blinkningarna? någon som kan förklara det???

__delay_ms(1000); // som då ska vara 1 sek. men var 28 sek
RD2 = 1;
__delay_ms(1000);
RD2 = 0;

ja kommer inte att ge upp :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

> någon som kan förklara det???

Enkelt.
Processorn går 28 gånger lågsammare än vad C-kompilatorn tror (alltså
än vad du har sagt till C-kompilatorn via PIC_CLK och/eller _XTAL_FREQ).

Du måste se till att "köra" processorn i samma hastighet som du har tänkt.
Jag vet inte om din CONFIG av processorn har framgått, men kolla det...
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F877A + RS232

Inlägg av Icecap »

Kanske det är dags att ställa allt rätt och koppla kristall osv rätt också. På kopplingsdäck kan det vara svårt att använda 20MHz kristall, 4MHz brykar dock fungera bra men ska man ha exakt baud-rate är 3,68MHz att föredra.

Du borde kanske berätta hur du har kopplat kristall osv?
Xelup
Inlägg: 13
Blev medlem: 22 juni 2011, 11:50:21

Re: PIC16F877A + RS232

Inlägg av Xelup »

Hej
jo de låter troligt, men varför??

ja har kopplat den till pinne 13 och 14 och två stycken avkopplings kondensatorer,
hmm hade satt _XTAL_FREQ till 4000000 om ja delade de med 28 fick ja 142857 och då blinkade de 1 gg per sekund.

men kommunikationen fungerar fortfarande inte..

är de fel på kristallen eller PIC:en ?

tack för att ni är så snabba på att svara. :)
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F877A + RS232

Inlägg av Icecap »

Ack ja, om du bara kunde göra det man bad dig om... *suck*

Kristall? Vilken frekvens?
"avkopplingskondensatorer"? Visst är det bra att avkoppla PIC'en men kristallen ska kopplas till ett par belastningskondensatorer på runt 18-22pF men då du ju är så utförlig i din beskrivning är det ju tvärt omöjligt att veta något.

Skärpning! Vill du ha hjälp får du faktisk ge den information som begärs!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

> hmm hade satt _XTAL_FREQ till 4000000 om ja delade de med 28 fick ja 142857 och då blinkade de 1 gg per sekund.

Jag får inget ut något vettigt av den där meningen. Saknas det någon
interpunktur någonstans ? Ska det t.ex vara punkt efter "4000000" och
sen kanske "om" ska vara "Om" ?? Började det blinka med rätt hastighet
enbart genom att du delade något med 28 (med en miniräknare)?
Utan att göra någonting alls annat ? T.ex skriva svaret (142857)
någonstans i koden ?

Tips!
Använd *alltid* "Förhandsgranska" och kolla att inlägget är läsbart
och tydligt innan du klickar "Skicka". Det sparar mycket tid för alla.

Hur som helst, grundfelet är att din processor kör med fel hastighet.
Fixa det !

Jag frågar om samma sak som i tidigare inlägg, hur är din CONFIG satt ??
Xelup
Inlägg: 13
Blev medlem: 22 juni 2011, 11:50:21

Re: PIC16F877A + RS232

Inlägg av Xelup »

jopp ska försöka uppföra mig..

är en 4Mhz och "belastningskondensatorer" är på 22 pF.

dock tror ja att ja har kopplat in kristallen rätt.

Har inte konfigurerat de bitarna i koden utan i MPLAB,

XT oscillator
WDT disable
PWRT disable
BOR disable
LVP MCLR must be used
all kod protection off


tänk vad man lär sig på en dag :)
Senast redigerad av Xelup 27 juni 2011, 14:49:07, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

> jopp ska försöka uppföra mig..

Det är säkert inget problem, det är ganska enkelt igentligen... :-)

>>>> hur är din CONFIG satt ??

Notera att "RC" är default CONFIG för oscillatorn.
Det kan nog bli lite av varje med "RC" och en kristall ansluten.
janno
Inlägg: 434
Blev medlem: 11 oktober 2009, 07:34:45
Ort: Västerås

Re: PIC16F877A + RS232

Inlägg av janno »

som tidigare frågat vad är din __CONFIG satt till, jag hittade den inte i koden, använder du MPLABs Meny "Configure->Configuration bits" ?
Det är alltid bättre att sätta __CONFIG i koden så man vet hur den är satt, flaggorna hittar du i din processors .h fil:
Ex.
__CONFIG (HS & WDTDIS & UNPROTECT & MCLREN & LVPDIS);
HS har jag för min 20MHz kristall på min PIC 16F886

för 4MHz kanske HS ska vara XT men titta i databladet för din processor så står det där.
Xelup
Inlägg: 13
Blev medlem: 22 juni 2011, 11:50:21

Re: PIC16F877A + RS232

Inlägg av Xelup »

jopp var instälda i MPLAB men de ska väl se ut såhär tex.?

__CONFIG( XT & WDTDIS & PWRTDIS & BORDIS & LVPDIS & WRTDIS & DEBUGDIS & PROTECTDIS);

men ja får fel när ja skriver de i koden..

Kod: Markera allt

(1273) Omniscient Code Generation not available in Lite mode (warning)
Error   [800] new.as; 45. undefined symbol "PROTECTDIS"
Error   [800] new.as; 45. undefined symbol "DEBUGDIS"
Error   [800] new.as; 45. undefined symbol "WRTDIS"
Error   [800] new.as; 45. undefined symbol "LVPDIS"
Error   [800] new.as; 45. undefined symbol "BORDIS"
Error   [800] new.as; 45. undefined symbol "PWRTDIS"
Error   [800] new.as; 45. undefined symbol "WDTDIS"
Error   [800] new.as; 45. undefined symbol "XT"
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC16F877A + RS232

Inlägg av Icecap »

Var får du dessa namn ifrån?

I min "P16F877a.inc" heter de _CP_ALL, _CP_OFF, _DEBUG_OFF, _DEBUG_ON, _WRT_OFF, _WRT_256 osv.
Skriv svar