PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega in MPCP Modus



demmy
06.05.2012, 20:39
Hallo zusammen,

ich würde gerne den MPCP-Modus nutzen um die Adresse in einem Protokollframe zu übertragen.
Meine Frage ist nun, werden Daten die nicht im MPCP-Modus übertragen werden trotzdem in den Empfangspuffer des µC geschrieben? Normalwerweise müssten diese Daten dann verloren gehn oder?

Danke für euere Hilfe.

021aet04
06.05.2012, 21:11
Ich kenne zwar den MPCP Modus nicht, es wäre aber nicht schlecht zu wissen welchen Atmega du verwendest.

MfG Hannes

demmy
06.05.2012, 21:58
Hi,

es ist ein Atmega162 mit zwei Hardware UART's.

Ich habe eben gelesen, das UART's von PC's den MCPM-Modus gar nicht unterstützen!? Das wäre meine zweite Frage gewesen. Kann das jemand bestätigen?

WL
07.05.2012, 04:58
Hallo demmy,

ich bin auch gerade dabei zwei Megas(8 & 16) mittels RS485 im MCPM-Modus kommunizieren zu lassen.
Das funktioniert (fast) ! Warum sollten Daten verlorengehen ?
Die Frames ohne gesetztes 9. Bit gehen auch in den Puffer, lösen aber keinen Interrupt aus.
Das das mit dem PC nicht funkionieren wird, sehe ich auch so. Zumindest kann ich kein 9N1 konfigurieren !

demmy
07.05.2012, 09:23
MHh ich dachte, dass wenn das empfangene Frame nicht dem Format entspricht wie es sein soll, d.h. mit gesetztem 9. bit. das er es dann gar nicht erst in den Puffer einliest. Dann müsste man nicht jedes einzelne Byte prüfen ob es ein Adressbyte ist und es andernfalls mühsam aus dem Puffer löschen.
Die Datenbytes würden einfach übergangen werden bis wieder ein Adressbyte kommt. Ich hoffe ihr versteht was ich meine?

Diese Methode fällt aber nun eh flach, da de PC ja leider kein MPCM unterstützt.

Eine andere Möglichkeit wäre evtl. mit dem Paritybit zu arbeiten. Der PC kann es per MARK dauer auf 1 oder per SPACE dauer auf 0 setzen. Allerdings unterstützt der AVR nur EVEN und ODD. was wiederum doof ist.

Außer es gibt eine Möglichkeit im AVR auch bei abgeschalteter Paritätsprüfung das gesendete Paritätsbit auszulesen?