ich habe mal eine Frage zur Atmel UART. Ich hoffe, die hat schon mal jemand benutzt :o)
Ich bekomme per Uart mehrere Bytes hintereinander. Nun habe ich das Problem, dass ich nicht weiß, wann das erste Byte übertragen wird. Weiß jemand, wie ich das herausfinden kann? Bzw. kommt ein Interrupt nur beim ersten Byte oder bei jedem Byte?
also, so weit ich weiß, kommt bei jedem Byte ein Interrupt.
Wenn ich nämlich eine Zahl größer als 0xFF vom PC aus sende, wird das ganze ja auch in zwei Bytes aufgespaltet. Getrennt ist das erste Byte vom darauf folgenden ja durch ein Stoppbit am Ende. Dies kannst Du ja in der Konfiguration einstellen.
ja,so war mein Verständnis auch. Für jedes Byte bekomme ich einen Interrupt. Nun werden bei mir 16Byte gesendet und dann eine Pause gemacht. Ich kann die 16Byte auch empfangen und in einen Ringpuffer schreiben. Ich bekomme alledings nicht heraus, welches Byte ursprünglich das erste Byte nach der Pause in der Datenübertragung war.
Oder muss ich das RS232 Signal jetzt noch einmal zusätzlich abtasten und nach der Pause suchen?
also abtasten musst Du das Signal denke ich nicht. Weist Du denn, was zuerst gesendet wird von den 16Byte? Highbyte oder Lowbyte? Und, werden die 16Byte sofort hintereinander gesendet?
Dann könnte man das, wie Du schon sagst, einfach in einen Puffer schreiben. Ansonsten muss da ja irgendwie in dem Byte eine Erkennung für High- oder Lowbyte herein.