www.mikrocontroller.net

Forum: Compiler & IDEs Bitfolge mit bestimmter Frequenz ausgeben


Autor: Axel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp!

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

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.