Hallo Rolf,
ich glaube, ich habe einen Fehler beim SerPort-Treiber in Verbindung mit dem XMega128A4U (vielleicht bei der ganzen Reihe A4 und A4U?) gefunden. Ich wollte mal nicht nur einen GPS-Empfänger lesen, sondern ihn auch umkonfigurieren. Dazu sendet man sog. PMTK-Kommandos zum Empfänger, aber nichts ist passiert. Zuerst dachte ich mein MAX3232 spinnt, aber aus dem µC kam überhaupt nichts raus.
Lösung (ich verwende den SerPortE0) und so funktioniert es:
Der Treiber schaltet den PortE,3 (TxD) nicht auf Ausgang um. Das sollte der Treiber doch von sich aus machen oder?
Mein verwendeter Code:
Define
SerPortE0 =9600, ParNone, Stop1, Databit8;
RxBufferE0 =$FF, iData;
TxBufferE0 =$20, iData;
.
.
.
Write(SerOutE0,'$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28'+#$0D+#$0A);
Write(SerOutE0,'$PMTK353,1,1,1,0*36'+#$0D+#$0A);
Write(SerOutE0,'$PMTK251,19200*22'+#$0D+#$0A);
SetSerBaud(USARTE0,19200);
Gruss
Harry
ich glaube, ich habe einen Fehler beim SerPort-Treiber in Verbindung mit dem XMega128A4U (vielleicht bei der ganzen Reihe A4 und A4U?) gefunden. Ich wollte mal nicht nur einen GPS-Empfänger lesen, sondern ihn auch umkonfigurieren. Dazu sendet man sog. PMTK-Kommandos zum Empfänger, aber nichts ist passiert. Zuerst dachte ich mein MAX3232 spinnt, aber aus dem µC kam überhaupt nichts raus.
Lösung (ich verwende den SerPortE0) und so funktioniert es:
Code
DDRE:=%00001000; // x x x x TxE0 RxE0 x x
Der Treiber schaltet den PortE,3 (TxD) nicht auf Ausgang um. Das sollte der Treiber doch von sich aus machen oder?
Mein verwendeter Code:
Code
Define
SerPortE0 =9600, ParNone, Stop1, Databit8;
RxBufferE0 =$FF, iData;
TxBufferE0 =$20, iData;
.
.
.
Write(SerOutE0,'$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28'+#$0D+#$0A);
Write(SerOutE0,'$PMTK353,1,1,1,0*36'+#$0D+#$0A);
Write(SerOutE0,'$PMTK251,19200*22'+#$0D+#$0A);
SetSerBaud(USARTE0,19200);
Gruss
Harry