RS232 problem
Postat: 2 juni 2005, 15:05:26
Hej!
Jag sitter och försöker få igång en RS232 koppling mellan datorn och en pic18f458. Men det fungerar inte.
jag har skrivit koden i C och har testat den på ett annat kretskort för en pic 18f248, och det fungerar finfint.
Men nu när jag kompilerat om den för 18f458, så blir nått skummt. Det kommer över tecken till Hyperterminalen som jag använder. Problemet är att det är fel tecken. jag skickar t.ex ett 'a' och får fram ett 'X'.
Jag tycker det verkar vara ett baudrate problem. nått som inte stämmer med klockfrekvensen.
jag har ingen aning om vart jag ska leta efter felet. Jag kan däremot lista upp vad jag kollat och dubbelkollat.
* kollat #include filen, select device och *.lkr filen, så att de stämmer överens med p18f458
*kollat configuration bits. kristall = HS, powerup timer enabled, resten är disabled.
*kollat så att alla kondensatorer och ledningar är dragna rätt med max232 kretsen
*kollat med oscilloskop på signalen och sett att den verkar stämma överens med baudraten. en puls uppskattade jag till ca50uS och 1/19200 = 52uS, så det verkar vara i närheten iaf. äver försäkrat mig om att signalen håller rätt nivåer.
*dubbelkollat formeln för BRGH_HIGH och baudrate 19200 = Fosc/(16*(spbrg+1)) => spbrg = Fosc/(16*19200)-1 som ger spgrb = 25.
Dessutom hade som sagt den andra processorn exakt samma kristall, och där fungerar det.
*testat att ändra spbrg från 23 upp till 27, men det blir endå fel tecken.
*byta kristall och även byta processor, men det blir fortfarande samma sorts tecken.
*testat med lägra budrate ner till 1200, men det kommer forfrarande samma sorts feltecken.
Har ni några förslag på vad felet kan vara?
Antagligen är det nått superlätt som jag missat. t.ex nån inställning jag glömmt när jag kompilerat om koden för den nya processorn.
Jag sitter och försöker få igång en RS232 koppling mellan datorn och en pic18f458. Men det fungerar inte.
jag har skrivit koden i C och har testat den på ett annat kretskort för en pic 18f248, och det fungerar finfint.
Men nu när jag kompilerat om den för 18f458, så blir nått skummt. Det kommer över tecken till Hyperterminalen som jag använder. Problemet är att det är fel tecken. jag skickar t.ex ett 'a' och får fram ett 'X'.
Jag tycker det verkar vara ett baudrate problem. nått som inte stämmer med klockfrekvensen.
jag har ingen aning om vart jag ska leta efter felet. Jag kan däremot lista upp vad jag kollat och dubbelkollat.
* kollat #include filen, select device och *.lkr filen, så att de stämmer överens med p18f458
*kollat configuration bits. kristall = HS, powerup timer enabled, resten är disabled.
*kollat så att alla kondensatorer och ledningar är dragna rätt med max232 kretsen
*kollat med oscilloskop på signalen och sett att den verkar stämma överens med baudraten. en puls uppskattade jag till ca50uS och 1/19200 = 52uS, så det verkar vara i närheten iaf. äver försäkrat mig om att signalen håller rätt nivåer.
*dubbelkollat formeln för BRGH_HIGH och baudrate 19200 = Fosc/(16*(spbrg+1)) => spbrg = Fosc/(16*19200)-1 som ger spgrb = 25.
Dessutom hade som sagt den andra processorn exakt samma kristall, och där fungerar det.
*testat att ändra spbrg från 23 upp till 27, men det blir endå fel tecken.
*byta kristall och även byta processor, men det blir fortfarande samma sorts tecken.
*testat med lägra budrate ner till 1200, men det kommer forfrarande samma sorts feltecken.
Har ni några förslag på vad felet kan vara?
Antagligen är det nått superlätt som jag missat. t.ex nån inställning jag glömmt när jag kompilerat om koden för den nya processorn.