Hallo zusammen,
Ich bin neu hier, habe schon von Anfang an einen superguten Eindruck!
Zudem habe ich ein Problem.
Ich will Daten von einem Funkempfänger (einer Wetterstation) auslesen, der eine RS-232-Schnittstelle hat. Das programm ist in C geschrieben (MPLAB 6.6, C18 Compiler). Für die nötigen Pegel sorgt ein MAX232ACPE.
Nun, um den Code ein bisschen zu erklären:
Um die "Verbindung" herzustellen, muss DTR High sein und RTS Low. Das Programm wartet, solange keine Daten ankommen. Steht die Verbindung, sollte der Wert $03 (ETX) ankommen und wird in "store" gespeichert.
Dann schicke ich 5 Byte Daten, das sind Einstellungen, deren Bedeutung sollte euch nicht stören. Ist die Einstellung erfolgt, sendet der Funkempfänger laut Theorie den Wert $06 (ACK), der dann in "store2" gespeichert werden sollte.
Hier der Code:
Code:
#pragma code // definiert, dass der Code ausführbare Befehle enthält
void main(void){
InitPeripherals(); // benutzte Ports initialisieren
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_LOW, 64);
store = 0;
store2 = 0;
PORTC_DTR = 0;
/*Initialisiertung der Wetterstation(Empfänger)*/
PORTC_RTS = 0; //clear RTS (RC5)
PORTC_DTR = 1; //set DTR (RC4)
while (!DataRdyUSART()); // warten, solange keine Daten ankommen
store = ReadUSART(); // Get the character received from the USART */
while (BusyUSART());
while (TRUE){
// Display a prompt to the USART
putcUSART ((const far rom char *) 0x01 ); // SOH
while (BusyUSART());
putcUSART ((const far rom char *) 0x36 ); // d 6
while (BusyUSART());
putcUSART ((const far rom char *) 0xC9 ); // d 201
while (BusyUSART());
putcUSART ((const far rom char *) 0x10 ); // zeit in min.: 10
while (BusyUSART());
putcUSART ((const far rom char *) 0x04 ); // EOT
while (BusyUSART());
while (!DataRdyUSART()); // warten solange keine Daten ankommen
store2 = ReadUSART(); // Get the character received from the USART
while (BusyUSART());
}
CloseUSART();
}
Problem:
Ich bekomme entweder gar keine Werte oder dann falsche.
Kann mir jemand helfen?
Das wäre einfach genial, denn ich studiere und probiere schon lange habe nicht mehr ewig Zeit. Aber mal eins nach dem andern
Mit freundlichen Grüssen, mi.ja
Lesezeichen