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
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
Danke für den Tipp! Gibt es evtl. eine weitere Möglichkeit, ohne den Timerinterrupt zu benutzen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.