Hallo! Mich würde mal interessieren, ob hier jemand schon mal den USART der ATmegas im MPCM (multi-processor communication mode) benutzt hat, mit dessen Hilfe man ja sehr einfach eine Buskommunikation realisieren kann, weil sich recht einfach zwischen Adressdaten und Nutzdaten unterscheiden lässt. Gibt es irgendwo Beispiele im Netz? Ich habe Probleme mit der Kommunikation, weil beim Empfangen immer ein Frame Error erzeugt wird, wenn der Master seine Antwort vom Slave bekommt. So habe ich den USART bei Master und Slaves initialisiert: UCSRC = (1<<URSEL)| (2<<UPM0) | (1<<USBS) | (3<<UCSZ0); SETBIT (UCSRB, UCSZ2); /* Daten Format: 9 Bit Daten 1 Bit Parity-Bit Even Parity 2 Bit Stopp-Bit */ UCSRA |= (1 << MPCM); /* Multiprocessor Communication Mode aktivieren */ Der Frame Error wird angeblich erzeugt, wenn ein Kommunikationsteilnehmer 8Bit Daten erwartet und dann das Stopbit 0 ist. Ich habe aber alle für 9Bit Daten konfiguriert und kann mir diesen Fehler nicht erklären. Danke für die Hilfe!!
Für 9 Datenbits muß es heißen ...(7<<UCSZ0). Ich glaube nicht, daß Deine Bitkombination zulässig ist. Versuche doch erst einmal 1xStart, 9-Datenbit, 1xStopp; mit MPCM aber ohne Parität. Andere Prozessoren beschränken sich auch darauf - insbesondere der 8051, von dem das Ganze wohl abgeleitet wurde.
hmm .. das Verändern hat leider auch nicht zum Erfolg geführt. Irgendwie habe ich den Eindruck, dass dieser MPCM nicht richtig ausgereift ist. Es gibt ja auch anscheinend keine Beispiele weiter im Internet
>> Irgendwie habe ich den Eindruck, dass dieser MPCM nicht richtig
ausgereift ist.
Na das ist ja heftig.
Wie ausgereift sind denn Deine Programmierkenntnisse ? Dort würde ich
die Lösung des Problems suchen - und das mußt Du dann wohl alleine
machen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.