Serielles einlesen mit PC_INT

Gast #4380539
Lesenswert?
• ▲
▼
Hallo,

ich versuche gerade 8 bit in Folge mithilfe des Pin-Change-Int´s bei 
jeder Flanke einzulesen und frage mich, ob meine Gedanken da richtig 
sind!
Ich lese bei jedem "clock"-Puls PB0 als "Datenbit" ein, schiebe danach 
das Datenbyte, bis 8 bit erreicht sind!
Die Hauptidee war, ein counter-Register durch einen Preset von OWD(R16) 
mit "1" und anschließendem schieben zu vermeiden.
1
_PCINT0:           SBIC PINB,0;Überspringe nächstes, wenn PB0=0
2
       ORI OWD,0b00000001     ;Bit speichern
3
        LSL OWD      ;Bit-shift
4
       BRCC PCEND
5
       ;---Zähler=8 überschritten
6
       LDI OWD,1      ;Preset-Wert
7
                   RETI
Hat jemand eine Verbesserungsidee?/ schneller?

Danke
Gast #4381489
Lesenswert?
• ▲
▼
Also es gibt einen Clocking-Pin (PB2 / INT0) und einen Daten-Pin (PB0). 
Bei jedem Flankenwechsel wird der Datenpin ausgelesen. Das Problem ist 
nur, daß ich noch keine "Stoppbedingung" definieren konnte!

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.