Hi ist mir fast etwas peinlich aber ich hab ein Problem mit dem USART
des Mega8 und bin langsam am verzweifeln weil ich einfach keine Idee
mehr hab woran es liegen könnte:
Problembeschreibung:
Ich kann mit dem Mega8 über USART senden (konstante Zeichen) die auch
ankommen aber nicht im Richtigen format. Irgendwas ist da nicht in
Ordnung mit der Parität und ich bekomme von den Terminalprogrammen
Fehler in der Übertragung angezeigt. Trotzdem kann ich die Zeichen lesen
bzw wenn ich Parity auf Space stelle bekomme ich alles Richtig ohne
Fehler.
Empfangen vom Pc aus geht auch, wenn ich keinen Interrupt verwende. Also
dauernd Statusbit überprüfen und dann das Empfangsregister zurücksenden
geht ohne Probleme, wenn ich aber den Interrupt verwende geht er wohl
nich in die ISR - Warum weiß ich nicht. Im Code ist sowohl der
RX-Interrupt enabled, sowie der globale ( sei(); ). Den nicht
funktionierenden Code stelle ich in den Anhang. Irgendetwas simples muss
es eigendlich sein da ich früher auch Programme hatte die vollständig
mit Interrupts gingen.
Zur Hardware:
Ich hab mir für meinen Laptop einen USB-RS232
(USB-FT232RL-MAX232-STK500) gebaut der mit dem STK500 auch funktioniert.
Ich kann alle Funktionen des STK nutzen, weshalb ich den Wandler für in
Ordnung halte. Das Programm hab ich sowohl mit diesem Wandler als auch
mit einem normalen PC mit RS232 Schnittstelle ausprobiert. Beide zeigen
die selben "Probleme".
Der µC lauft mit einem externen Quarz auf dem STK500 (12Mhz). Vorher
hatte ich es mit dem STK500 Takt versucht (3686400 Hz). Die Fuses sind
deffinitiv auf externenm Takt (längste Verzögerung). Hab es sogar mal
mit dem internen probiert, womit es noch weniger ging.
Spannung ist 5V und der Mega8 ist ein 16PU. Hab auch einen neuen
probiert. ( Fuses auch wieder angepasst )
Mir gehen leider die Ideen aus wo ein Fehler sein könnte. Ich hoffe ich
seh den Wald nur vor lauter Bäumen nicht. Da USART mit Interupt für
meine nächsten Programme schöner sind als das Prüfen in der main.
Ich hoffe jemand kann mir helfen oder auch nur nen Hinweis geben was ich
noch probieren könnte. Falls irgend eine Info fehlt bitte sagen.
Gruß ErgoProxy