Forum: Mikrocontroller und Digitale Elektronik Becker


von Mario (Gast)


Lesenswert?

Hallo,
ich stehe vor dem Problem zwei Controller (M16C) verbinden zu müssen.
Leider habe ich noch keine Ahnung von uC...
Weil die Übertragungsgeschwindigkeint sehr hoch sein muss, dachte ich
an
SPI oder i2c.
Die Daten die Übertragen werden sollen, müssen in Protokoll definiert
werden. Deshalb dachte ich an ein einfaches HDCL Protokoll. Leider weis
ich nicht wie man soetwas in C umsetzt. Hat schon jemand Erfahrung
damit. Evtl. sogar ein Beispiel für mich? Gibt es auch ein einfacheres
Verfahren?
Danke

von Unbekanner (Gast)


Lesenswert?

Was bedeutet: "Übertragungsgeschwindigkeint sehr hoch"?

Kilobit, Megabit oder Gigabit pro Sekunde, Minute oder Stunde?

von Mario (Gast)


Lesenswert?

zwischen 1-15 Mhz

von Unbekannter (Gast)


Lesenswert?

Was soll jetzt 1 bis 15 MHz bedeuten? Das ist immer noch keine korrekt
Angabe. Sollen das 1 bis 15 MBits/s sein oder 1 bis 15 MByte/s oder
was?

Unabhängig davon brauchst Du dafür eine Hardware-Lösung, z.B. SPI oder
eine syncrone, serielle Schnittstelle. Must eben mal ins Datenblatt
schauen was Dein Controller so kann.

von Mario (Gast)


Lesenswert?

Sorry!
Übertragungsgeschwindigkeit: 5Mbit/s
Schnittstelle: SPI

Was für ein Protokoll kann man für so eine Anwendung verwenden?
Mit Protokoll meine ich nicht das eigendliche
SPI-Protokoll(Master/Slave), sondern ein Protokoll zur synchronisation
der Kommunikation. Zudem muss ich noch Kontrollinformationen übertragen
und auswerten.
Die max. Datenlänge ist 64Byte. Hier für ist doch sicherlich ein
Verfahren zu Fehlererkennung notwendig, oder?
Irgendwie muss ich die Daten vor dem versenden strukturieren und beim

Empfänger wieder auswerten(umgekehrt genau so!). Wie kann man so ein
Programm nun am besten aufbauen?

von Unbekannter (Gast)


Lesenswert?

Wenn Du auf einem SPI-Bus Fehler hast, ist die Hardware defekt.

Sicher, kannst Du Fehlererkunngen etc. einbauen, doch wozu? SPI ist
kein Kanal mit Fehlern. Das ist ja kein Internet oder Funk etc.

Wenn Du bidirektionale Übertragung machen willst, musst Du in der Tat
ein Protokoll drauf setzen. Da reicht aber das aller einfachste. Z.B.
ein Byte mit der Länge des Datenpakets senden, dann die Datenbytes.
Danach darf der Empfänger senden. Wenn er nichts zum senden hat,
schickt er eine "0", und der Sender schickt sein nächstes Datenpaket.

von Hannes L. (hannes)


Lesenswert?

Ich werde das Gefühl nicht los, dass hier jemand deine Hausaufgaben
machen soll.

von Peter D. (peda)


Lesenswert?

Wieviel MIPS hat denn so ein M16C ?

Um bei 5MBaud noch ein Protokoll draufzusetzen, brauchst Du aber
Rechenleistung satt !

Single-Master sollte da das einzig mögliche sein, d.h. zum Kollidieren,
Arbitrieren hast Du keine Luft mehr.


Peter

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.