PIC18, UART, autokompensera OSCTUNE, behöver hjälp. *LÖST*
Postat: 30 augusti 2012, 08:15:08
Håller på med en grej som jävlas ganska mycket med mig.
Kommunikation över 25m kabel, jag har vald RS485. Den bit fungerar riktigt bra. Det rör sig om blockar på 66 bytes med mellan 1 och 30 sekunders mellanrum, vänttiden är ställbar. Blocken har checksum och skulle ett eller fler block kastas är det inte livet om att göra, så länge det inte är för många.
En kristallstyrd µC sänder på 9615 baud och i andra ändan kommer problemet.
Jag har en PIC18F1320 till att ta emot, har ingen kristall och den interna oscillator ska klara biffen. RS485-delen är avklarat och när jag ställer OSCTUNE lite högre än noll fungerar skiten men det är inget jag vågar lita på i framtiden. Alltså skulle jag gärna vilja att skiten på något vis kunde avkänna att UART'en tar emot men att det blir fel och att programmet då autokompenserar OSCTUNE till det är i mål.
Mitt största problem är just nu att jag kom hen ganska sent igår och då detta problem jävlades med mig satt jag ett tag med detta och 04:30 kunde jag inte sova längre av tankarna på detta jävelskap så nu tänker jag mig ta en filt o lägga mig en liten stund på soffan medan jag undrar:
Någon som har något exempel på hur jag kan göra?
Jag har en rutin som kan "zig-zagga" sig fram till rätt OSCTUNE vid att kallas när det blir fel, jag har en rutin som avkänner att en block har time-out men problemet verkar vara att UART-Rx slutar ge interrupt vid framing error eller vad som sker. Och då jag knappast kan vara ensam om detta problem skulle jag uppskatta lite tips om sättet att gå framåt.
Om inte jag får det får jag använda en del tid på att definiera vad som händer och inte händer varefter jag kan lösa problemet men skulle någon redan ha gjort detta jobb skulle jag gärna vilje nasa lite på det...
Kommunikation över 25m kabel, jag har vald RS485. Den bit fungerar riktigt bra. Det rör sig om blockar på 66 bytes med mellan 1 och 30 sekunders mellanrum, vänttiden är ställbar. Blocken har checksum och skulle ett eller fler block kastas är det inte livet om att göra, så länge det inte är för många.
En kristallstyrd µC sänder på 9615 baud och i andra ändan kommer problemet.
Jag har en PIC18F1320 till att ta emot, har ingen kristall och den interna oscillator ska klara biffen. RS485-delen är avklarat och när jag ställer OSCTUNE lite högre än noll fungerar skiten men det är inget jag vågar lita på i framtiden. Alltså skulle jag gärna vilja att skiten på något vis kunde avkänna att UART'en tar emot men att det blir fel och att programmet då autokompenserar OSCTUNE till det är i mål.
Mitt största problem är just nu att jag kom hen ganska sent igår och då detta problem jävlades med mig satt jag ett tag med detta och 04:30 kunde jag inte sova längre av tankarna på detta jävelskap så nu tänker jag mig ta en filt o lägga mig en liten stund på soffan medan jag undrar:
Någon som har något exempel på hur jag kan göra?
Jag har en rutin som kan "zig-zagga" sig fram till rätt OSCTUNE vid att kallas när det blir fel, jag har en rutin som avkänner att en block har time-out men problemet verkar vara att UART-Rx slutar ge interrupt vid framing error eller vad som sker. Och då jag knappast kan vara ensam om detta problem skulle jag uppskatta lite tips om sättet att gå framåt.
Om inte jag får det får jag använda en del tid på att definiera vad som händer och inte händer varefter jag kan lösa problemet men skulle någon redan ha gjort detta jobb skulle jag gärna vilje nasa lite på det...