Sida 2 av 3
Re: PIC16F877A + RS232
Postat: 23 juni 2011, 18:10:58
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.
Re: PIC16F877A + RS232
Postat: 23 juni 2011, 20:24:11
av TomasL
Det är väl också brukligt att testa TXIF innan man skriver till TXREG.
Re: PIC16F877A + RS232
Postat: 23 juni 2011, 20:29:05
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())
Funkar det så skall du få en oändlig radda med A'n i ditt terminalfönster.
Re: PIC16F877A + RS232
Postat: 23 juni 2011, 21:10:17
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.
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 13:42:54
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

Re: PIC16F877A + RS232
Postat: 27 juni 2011, 13:59:51
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...
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:05:31
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?
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:21:14
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.

Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:26:04
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!
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:33:21
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 ??
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:35:24
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

Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:37:27
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.
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 14:43:27
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.
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 15:32:33
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"
Re: PIC16F877A + RS232
Postat: 27 juni 2011, 15:36:32
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.