www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Eingangspin direkt in Register


Autor: Robert M. (xertno)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich möchte gern serielle Daten in einen MC von Atmel aufnehmen. dafür 
habe ich einen Pin am PortA auf Eingang geschaltet und möchte den 
Zustand von diesem nun in das Nullte Bit in einem Register schreiben 
dieses denn Schieben usw.
Nun geht das nicht ganz so wie ich mir das vorgestellt oder besser 
Programmiert habe nun ist das auch in gewisser weise nachvollziehbar da 
ich nicht weiß wie das nullte Bit in einem Register durch den IN Befehl 
beschrieben wird.
Währe toll wenn mir jemand dabei helfen kann.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Direkt gehts nicht. In welcher Programmiersprache soll das ganze denn 
sein? Assembler oder C? Oder gar Bascom?

Autor: Robert M. (xertno)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in Assembler

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

auch wenn Du sehr sparsam mit Infos umgehst (welcher Atmel? Welche 
Programmiersprache, welches Datenformat haben die seriellen Daten?),

bei den AVR liest IN PINx,register den Zustand des Ports komplett in das 
angegeben Register.

Von da ab mußt Du dann selber sortieren.

Möglich wäre z.B.:

CLR r17

IN PINA,r16
ROR r16 schiebt Bit 0 in Carry
ROL r17 schiebt Carry in Bit 0

Serielle Daten empfängst Du damit aber noch nicht, ist nur eine mögliche 
Lösung für Deine konkrete Frage, wie man den Zustand von Bit0 eines 
Ports in Register schieben kann.

Gruß aus Berlin
Michael


Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michaels Lösung ist sicher die eleganteste und kürzeste. Du musst dann 
noch das ganze in einer Schleife machen und entsprechend 
synchronisieren.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möchte noch an das "T" Bit erinnern, mit dem sich Bits beliebig 
transportieren lassen.

Autor: Robert M. (xertno)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut das werde ich jetzt mal versuchen, und das nächste mal gibt es die 
Standardinfos gleich ;).

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder
 clc                 ;Carry erstmal auf 0
 sbic pinb,3         ;Pegel an PB3 ermitteln, überspringen, wenn L (0)
 sec                 ;Carry setzen, wenn Pegel H (1) war
 rol r2              ;Carry in das Register r2 rotieren (reinschieben)

Aber das ist noch keine komplette serielle Kommunikation...
Danach hattest Du aber auch nicht gefragt, oder?

...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder
lsl     r16
sbic    pinb,3
inc     r16


Peter

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> Oder
>
>
> lsl     r16
> sbic    pinb,3
> inc     r16
> 
>
>
> Peter

Danke, Du verblüffst mich immer wieder...

Gruß, Hannes

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
> Peter Dannegger wrote:
> ...
> Danke, Du verblüffst mich immer wieder...
Nicht nur Dich...

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.