Bitfolge mit bestimmter Frequenz ausgeben

Gast #1619638
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
#1619809
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
#1619829
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren