Hallo, ich möchte periodisch 24 Bit von einem Mikrocontroller seriell zu einem Schieberegister (oder ähnlich) übertragen und zu einem unbestimmten Zeitpunkt diese mit einem anderen Mikrocontroller seriell auslesen. Also immer den aktuellen Wert der im Schieberegister (oder ähnlich) steht. Was kann ich dafür nehmen? Ist ein Scheiberegister geeignet? Danke im Vorraus für Antworten!
@ Mat (Gast) >ich möchte periodisch 24 Bit von einem Mikrocontroller seriell zu einem >Schieberegister (oder ähnlich) übertragen und zu einem unbestimmten >Zeitpunkt diese mit einem anderen Mikrocontroller seriell auslesen. Also Und wozu soll das gut sein? AVR-Tutorial: Schieberegister >immer den aktuellen Wert der im Schieberegister (oder ähnlich) steht. Das kann fix ins Auge gehen, wenn nämlich der 2. uC gerade liest, wenn der 1. neue Daten reinschreibt. Sag mal lieber was du machen willst. MFG Falk
also ich möchte mit dem einen Mikrocontroller einen inkrementalen Drehgeber überwachen und dessen aktuelle Position permanent zwischenspeichern. Mit dem anderen Mc möchte ich die Pos. halt zu bestimmten Zeitpunkten auslesen und seriell an den Pc schicken ohne den ersten Mc bei seiner Arbeit zu stören.
@ Mat (Gast) >also ich möchte mit dem einen Mikrocontroller einen inkrementalen >Drehgeber überwachen und dessen aktuelle Position permanent >zwischenspeichern. Mit dem anderen Mc möchte ich die Pos. halt zu >bestimmten Zeitpunkten auslesen und seriell an den Pc schicken ohne den >ersten Mc bei seiner Arbeit zu stören. Ahhh, das ist doch schon mal was GANZ anderes. Nimm einfach den UART. Schick dem "Überwacher" des Encoders ein Zeichen, und der wird darauf die aktuelle Position mittels drei Byte zurücksenden. Oder lass den Überwacher periodisch die aktuelle Position senden, der Empfänger kann ja die Daten ignorieren wenn er sie nicht braucht. Mit Schiebergister ist das Murks. MfG Falk
>aktuelle Position permanent zwischenspeichern
Und warum lässt du den einen µC nicht einfach weg und tust mit dem
anderen permanent den Drehgeber auslesen und überwachen?
@ Dietmar E (Gast)
>Wieso verbindest Du die Mikrocontroller nicht direkt per SPI?
SPI hat den Nachteil, dass der Slave bisweilen recht ausgebremst wird.
Wenn der Encoder mit hoher Abtastfreqeunz abgetastet werden soll kann
das Probleme machen. Per UART geht das wesentlich einfacher!
MFG
Falk
@ all: danke für die schnellen Antworten. Die ca. 5000 Messdaten/Sekunde werden ankommen. Eventuell kommt noch ein zweiter Encoder dazu´.. und ich darf ja auch keine Schritte verlieren nur weil der Mc gerade am senden der seriellen Daten ist. Ich bin mir nicht sicher ob die serielle Schnittstelle schnell genug für sowas ist. SPI hört sich gut an.. da muss ich mich mal drüber informieren.
Also wenn du genügend Zeit hast, die Daten per Software in ein Schieberegister zu schieben, dann solltest du das problemlos auch per Hardware-UART schaffen. Du kannst ja mit den Baudraten noch einiges höhere gehen als die normalerweise 115k, die der PC schafft. So 1 Mbaud sollte sicherlich drinliegen.
Danke! Ich werde es per Uart versuchen. Schaue mir jetzt erstmal Mc - Kommunikation per Uart an. Gruss mat
...geht das überhaupt das mehrere Mc´s per Uart untereinander Daten austauschen?
Natürlich. Dafür gibt des zB den MPCM (multi processor communication mode) Sehr feine Betriebsart, aber nicht immer und überall notwendig ;-)
@ Mat (Gast) >@ all: danke für die schnellen Antworten. Die ca. 5000 Messdaten/Sekunde >werden ankommen. Eventuell kommt noch ein zweiter Encoder dazu´.. und Nun, das macht erstmal 2ms Zykluszeit. Eine kleine Ewigkeit für eine uC. >ich darf ja auch keine Schritte verlieren nur weil der Mc gerade am >senden der seriellen Daten ist. Das Senden macht der UART selber. Und mit halbwegs geschickter Programmierung (Pollen des UART) ist das lückenlos. >Ich bin mir nicht sicher ob die serielle Schnittstelle schnell genug für >sowas ist. Bei 16 MHz sind da 1 MBit/s drin. Macht 100kB/s, macht bei 3Bytes/Messwert 33k Messwerte pro Sekunde Sollte reichen, oder?. >...geht das überhaupt das mehrere Mc´s per Uart untereinander Daten >austauschen? Warum nicht? MFg Falk
> Bei 16 MHz sind da 1 MBit/s drin. Macht 100kB/s
Wäre Hardware-SPI nicht dreimal so schnell?
@ Dietmar E (Gast) > Bei 16 MHz sind da 1 MBit/s drin. Macht 100kB/s >Wäre Hardware-SPI nicht dreimal so schnell? Sogar 8-mal so schnell, als Master! Als Slave immerhin viermal so schnell. Allerdings sollte dann der uC welcher den Encoder dekodiert Master sein, sonst gibt es möglicherweise Probleme. MFg Falk
@Mat Brauchst du tatsächlich 5000 Messdaten/Sekunde zu senden? Dein µC kann einen oder mehreren Inkrementalgebern ständig überwachen bis zu 5000Messungen pro Sekunde, und bei positions- Änderung eine interne Positions-Variable Inkrementieren oder Dekrementieren und aktuale Position nach Anforderung oder permanent mit z.B. zehnmall pro Sekunde absenden. Dadurch übernimmt µC Inkrementalgeber Überwachung und keine Information geht verloren. Branko
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.