Forum: Compiler & IDEs Bitfolge mit bestimmter Frequenz ausgeben


von Axel M. (Gast)


Lesenswert?

Hallo,

ich möchte auf dem AT91SAM7S256-EK eine beliebige Bitfolge ausgeben; 
eine LED soll die Bits anzeigen (1 -> LED ein, 0 -> LED aus). Den Takt 
(z.B. 1Hz) erzeuge ich über einen Timer.

Wie könnte eine Funktion aussehen, die mir (mit dem vom Timer erzeugten 
Takt) die Bits ausgibt?

Danke und Gruß Axel

von Günter R. (galileo14)


Lesenswert?

Das kann doch ganz einfach sein; du definierst eine Tabelle mit Bytes, 
in denen in jedem Byte 8 deiner auszugebenden Bits verpackt sind. Dazu 
führst du einen Zeiger für die Bits im gerade aktiven Byte, einen 
weiteren Zeiger auf die Bytes der Tabelle (globale Variablen!); bei 
jedem Timerinterrupt liest du dann das Bit aus dem jeweils aktiven Byte 
aus und gibt es auf den Ausgabepin, dann stellst du den Bit-Pointer 
weiter und ggf. - bei Überlauf über die "7" hinaus" - stellst du den 
Bitpointer auf null zurück und den Byte-Pointer weiter; dann fragst du 
ab, ob die Tabelle zuende bearbeitet ist und stoppst dann oder fängst 
von vorn an, wenns eine periodisch zu wiederholende Bitfolge sein soll.

Viel Erfolg.

Günter

von Axel M. (Gast)


Lesenswert?

Danke für den Tipp!

Gibt es evtl. eine weitere Möglichkeit, ohne den Timerinterrupt zu 
benutzen?

von Günter R. (galileo14)


Lesenswert?

Kaum. Nur der Timerinterrupt sichert dir, daß die Bits mit wenig Jitter 
periodisch erscheinen. Außerdem hat der Prozessor dann zwischendurch 
Zeit, anderes zu tun. Du darfst aber die Interrupts nicht für längere 
Zeit sperren, sonst gibt's u.U. erheblichen Jitter.

Willst du aber auf den Timer-Interrupt verzichten und hat der Prozessor 
sonst nichts zu tun, dann kannst du stattdessen eine Zählschleife 
etablieren und jeweils beim Ablauf des Zählers die oben genannte 
Prozedur ausführen; damit emulierst du quasi einen Interrupt.

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.