Kannst du mal deinen Code posten?
Werd aus der Beschreibung nicht richtig schlau
Hallo zusammen,
ich habe einen Atmega162 mit 2 Hardware Uart's. Ich nutze für beide die Sende und Empfangsinterrupts. Nun zu meinem Problem:
Auf der Com1 erhalte ich zyklisch ca. 1 x pro sekunde 2 Byte und sende direkt 2 Byte zurück.
Auf die Com2 kann ich ein "Telegramm" senden bestehend aus 12 Byte, welche zu testzwecken direkt zurück gesendet werden sollen.
So mein Problem ist nun auf der Com2 das ich nicht jedes mal das zurück bekomme was ich gesendet habe. 2 von 10 Telegrammen sendet er mir das zurück was ich gesendet habe, die restlichen 8 mal sendet er mir nur 0er zurück. Bei diesen 8 mal dauert die Antwort auch ewig.
Ich bin inzwischen soweit das ich denke das er nur einen Teil der Bytes empfängt oder irgendwas an daten und den rest macht er dann mit $Timeout und überschreinbt alles mit 0. Daher die lange Zeitdifferenz zwischen senden und empfangen.
Nur woran kann das liegen das er nicht jedes mal alles korrekt empfängt und nur manchmal? kann das am Program selber liegen das er durch ein anderes Interrupt unterbrochen wird und dann die Daten im Eingangsbuffer weg sind?
Ich bin momentan echt ratlos!
Danke für euere hilfe.
Kannst du mal deinen Code posten?
Werd aus der Beschreibung nicht richtig schlau
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo zusammen,
sorry für die späte Antwort.
Ich hab den Fehler inzwischen gefunden. Schuld war nicht die Software bzw. ein Programmierfehler, sondern ein defekter Max485-Baustein. Dieser hat wohl Teile des Telegramms verschluckt.
Ich habe ihn getauscht, und die Kommunikation hat wieder einwandfrei funktioniert.
Danke trotzdem.
Lesezeichen