www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schieberegister?


Autor: Mat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso verbindest Du die Mikrocontroller nicht direkt per SPI?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mat (Gast)
Datum:

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

Gruss
mat

Autor: Mat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...geht das überhaupt das mehrere Mc´s per Uart untereinander Daten 
austauschen?

Autor: Matthias Lipinsky (lippy)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei 16 MHz sind da 1 MBit/s drin. Macht 100kB/s

Wäre Hardware-SPI nicht dreimal so schnell?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Branko Golubovic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.