pic18f4680 USART

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

pic18f4680 USART

Inlägg av victor_passe »

Hej, jag har en bewator bc43(En sådan man kan dra magnet kort på och med knappsats istället för nyckel)
bild:
http://www.sourcesecurity.com/images/pr ... r-bc43.jpg

När jag kopplar den till datorn via serieporten och har inställningarna:
2400 bps
8bit
1stop bit
ingen paritet
Då får jag korrekta värden och samma knappar/kort ger samma värden.

Men när jag kopplar den till en pic och skriver i c(mikroc):

Kod: Markera allt

...
Usart_Init(2400);
...
for(counter=1;counter<4;counter++)
{
 while(!Usart_Data_Ready()){}
 rec=Usart_Read();
 ShortToStr(rec, txt);
 T6963C_write_text(txt, 3, counter, T6963C_ROM_MODE_XOR);
}

Då får jag:
254
254
2
254

När jag på PC:n får

254
254
2
251

Om jag dock sätter 2 stoppbitar i datorn får jag samma som jag får på pic:en.


Vad kan felet vara?
Jag har provat att sätta RCSTA.RX9 till både 0 och 1 men ingen skillnad.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad gör Usart_Init() ?

Har du provat att strunta i den och sätta upp USART'en själv ?
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Kod: Markera allt

$120E	$	_Usart_Init:
$120E	$8AAC	    			BSF	TXSTA, 5, 0
$1210	$0E90	    			MOVLW	144
$1212	$6EAB	    			MOVWF	RCSTA, 0
$1214	$8E94	    			BSF	TRISC, 7, 0
$1216	$9C94	    			BCF	TRISC, 6, 0
$1218	$	L_Usart_Init_0:
$1218	$AA9E	    			BTFSS	PIR1, 5, 0
$121A	$D003	    			BRA	L_Usart_Init_1
$121C	$CFAE	F073			MOVFF	RCREG, Usart_Init_tmp_L0
$1220	$D7FB	    			BRA	L_Usart_Init_0
$1222	$	L_Usart_Init_1:
$1222	$0012	    			RETURN
Så den sätter SPEN, CREN i RCSTA och sätter SYNC i TXSTA
Räcker detta eller ska jag lägga till något?
Den körs på 20MHz, kan det vara något med låg/hög baudrate?
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Kopplade nu datorn TX till pic:ens RX och då får den alla värden helt korrekt.
Kan det vara för att jag har kopplat både datorns och pic:ens rx till bewatorn?
Eller för att min rs232 till ttl omvandlare är en bc547C och 2st 10K motstånd?
Ska jag byta till max232?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Kan det vara för att jag har kopplat både datorns och pic:ens rx till bewatorn?

Inte vet jag! Du får väl kolla själv om du har kopplat fel...

> Eller för att min rs232 till ttl omvandlare är en bc547C och 2st 10K motstånd?

Right...

Du verkar ju fullt medveten om vad du har gjort för fel... :-)
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Men den funkar när jag skickar rs232 signaler från datorn serieport.
Och då får jag korrekt data i exakt samma hastighet/inställningar.

Och jag menade att bewatorn skickar signaler till både datorn och pc:en samtidigt.

TX => RX*2 men det ska la funka.

och trissan är kopplad såhär:
http://www.scienceprog.com/wp-content/u ... ematic.gif
fast ingen bc557 för jag har bara envägs komunikation
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Tja, koppla rätt och se om det fungerar först.
Innan dess blir ju detta enbart spekulationer.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Det är rätt kopplat.
Om jag trycker på en knapp får jag data till picen som visar den på skärmen och data till datorn som jag visat med ett terminal program men det är inte samma data som kommer.
Provar att köra med mjukvaru uart nu för att se om det funkar.

Och när jag kopplar datorns TX till pic:ens RX får jag rätt data.

Så det är jätte konstigt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Det är rätt kopplat.

Nja, du kör med två mottagare och du har fuskat med RS232.
Fixa det och testa.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

En mottagare hjälpte inget. samma fel.
Och den kopplingen sak funka, jag brukar använda den när jag bara vill ha simplex.
Och när jag skickar från datorn via den kopplingen till pic:en får den rätt data.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK. Det fungerar inte, men du hävdar att det *ska* fungera.
Ringt, vad ska jag göra åt det ? :-)

Om du skulle fått samma problem med en MAX232
så hade det varit en annan sak.

Skit samma, det fungerar ju tydligen inte. Det första att göra
är att ersätta sneak-RS232 omvandlaren med en MAX232. Sedan
kan man fortsätta med annat.

Har du tillgång till ett oscillioskop ?
Så att du kan "titta" på signalerna ?
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Jag har en max232 på samma kort men får den inte att skicka data åt ena hållet men andra.

Ää, jag gör som du säger och fixar lite med omvandlaren så jag kan utesluta den.
För jag tror att du är en (väldigt stor) gnutta bättre på detta än mig.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nja, det är ju du som har prylarna framför dig... :-)
Jag skulle ha kopplat på oscillioskopet och tittat på signalerna.
Sen så tror jag på att alltid börja med det som är minst "by the book",
så att säga. Speciellt om det är någon annans koppling... :-)
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag har använd denna snikversion till att omvandla RS232 till 5V nivåer, det kan fungera ganska bra MEN en sak många missar är att man måste ha en diod med i basen, en transistor har nämligen en zener-effekt när basspänningen blir negativ nog (på en NPN) och det är runt 6V, alltså kan -12V från en bra RS232-lina ställa till det en del.

Jag har sett tillfällen där detta just var största problemet.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Inlägg av victor_passe »

Mätte nu med oscilloskop.

Det var redan ttl nivåer fast inverterat.
Provade nu med mjukvaru uart med inverterning, det funka sådär.
Kan man invertera hårdvaru uarten?
Skriv svar