Forum: Mikrocontroller und Digitale Elektronik Schieberegister?


von Mat (Gast)


Lesenswert?

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!

von Falk B. (falk)


Lesenswert?

@ 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

von Mat (Gast)


Lesenswert?

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.

von Dietmar E (Gast)


Lesenswert?

Wieso verbindest Du die Mikrocontroller nicht direkt per SPI?

von Falk B. (falk)


Lesenswert?

@ 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

von Matthias L. (Gast)


Lesenswert?

>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?

von Falk B. (falk)


Lesenswert?

@ 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

von Mat (Gast)


Lesenswert?

@ 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.

von mr.chip (Gast)


Lesenswert?

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.

von Mat (Gast)


Lesenswert?

Danke! Ich werde es per Uart versuchen. Schaue mir jetzt erstmal Mc - 
Kommunikation per Uart an.

Gruss
mat

von Mat (Gast)


Lesenswert?

...geht das überhaupt das mehrere Mc´s per Uart untereinander Daten 
austauschen?

von Matthias L. (Gast)


Lesenswert?

Natürlich. Dafür gibt des zB den MPCM (multi processor communication 
mode)
Sehr feine Betriebsart, aber nicht immer und überall notwendig ;-)

von Falk B. (falk)


Lesenswert?

@ 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

von Dietmar E (Gast)


Lesenswert?

> Bei 16 MHz sind da 1 MBit/s drin. Macht 100kB/s

Wäre Hardware-SPI nicht dreimal so schnell?

von Falk B. (falk)


Lesenswert?

@ 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

von Branko Golubovic (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.