Maximale Übertragungsrate

Gast #329384
Lesenswert?
• ▲
▼
HI, ich hab wieder mal eine Frage zum M16C/62A.
Im Moment sende ich Daten mit 500kHz an die serielle Schnittstelle
S I/O 3. Allerdings benötige ich eine Bandbreite von 1Mhz. mit 500kHz
klappts, mit 1Mhz kommt nur müll raus. Mal kurz zur Anwendung:
Über den S I/O 3 Empfange ich wie gesagt mit 500kHz 252 Bytes, die ich
mir nach dem 252ten Byte per printf() anzeigen lasse. Dies klappt auch
soweit, jedoch liefern mir mit 1Mhz übertragene Daten unzulässige
Ausgaben. Mich interressiert jetzt eigentlich nur, ob es eine
Einschränkung in der Taktfrequenz gibt. Ich kann wie immer dazu nichts
finden.

mfg und danke,

LC
Gast #329386
Lesenswert?
• ▲
▼
Erstmal danke für die Antwort. Die CPU läuft mit 10 Mhz, das solte
schnell genug sein, um aus dem S I/O 3 Register BYytes lesen zu können,
die mit 1Mhz ankommen. Die Empfangsroutine ist eine ganz gewöhnlich
ISR,
die jedes Byte in einem incrementierten Array speichert. Mir geht´s
eigentlich nur um eine eventuelle Beschränkung der Taktrate von der ich
nichts finden kann, die aber eine Erklärung darstellen würde.

mfg,

LC
Gast #329387
Lesenswert?
• ▲
▼
hast du schonmal in Assembler nachgerechnet ob das wirklich klappt?
Ein schneller Test wäre auch am Anfang der ISR Portpin setzen und am
Ende löschen und die Zeiten am Oszi anschauen. Oder am Ende der ISR
nachschauen ob schon wieder Daten in der Schnittstelle sind-> dann
wirds knapp.
#329388
Lesenswert?
• ▲
▼
Schau mal genau nach, wieviele Takte ein ISR-Aufruf benötigt. Bei einem
AVR zum Beispiel dauert ein Interruptaufruf 4 Takte, dazu noch reti von
3 (villeicht sogar 4). Dazu noch ein paar Takte, die du in der ISR
selbst "verbrätst" und du kommst schnell über die 10 dir zur
Verfügung stehenden.
Versuche (vor allem bei solchen Datenraten) das Auslesen sequenziell in
einer Routine ohne ISRs zu machen, weil das einfach zu viele
Ressourcen ins nichts verbrät.
Gast #329390
Lesenswert?
• ▲
▼
Wenn sich nichts geändert haben sollte (altes Datenblatt von 2000), gilt
bei den asynchronen Seriellen: interner Takt /1, /8 oder /32 danach
durch Baudrate und zum Schluss durch 16 (/2 synchron). Das hieße für
10MHz maximal 625kbit/s (62500 Interrupts) asynchron und 5Mbit/s
(625000 Interrupts) synchron
Gast #329391
Lesenswert?
• ▲
▼
Hey, großes Danke für die vielen Anregungen. Mach jetzt Feierabend...
;)
Den Tip mit DMAC hab ich auch g´rade bekommen. Das Setzen des Portpins
hatte ich auch schon getan, jedoch mit den erwarteten Wert am Oszi,
aber trotzdem ideal zum debuggen. Morgen früh wird nochmal getestet.

Thx, cya, mfg,

LC

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.