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.
Direkt gehts nicht. In welcher Programmiersprache soll das ganze denn sein? Assembler oder C? Oder gar Bascom?
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
Michaels Lösung ist sicher die eleganteste und kürzeste. Du musst dann noch das ganze in einer Schleife machen und entsprechend synchronisieren.
Möchte noch an das "T" Bit erinnern, mit dem sich Bits beliebig transportieren lassen.
Gut das werde ich jetzt mal versuchen, und das nächste mal gibt es die Standardinfos gleich ;).
Oder
1 | clc ;Carry erstmal auf 0 |
2 | sbic pinb,3 ;Pegel an PB3 ermitteln, überspringen, wenn L (0) |
3 | sec ;Carry setzen, wenn Pegel H (1) war |
4 | 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? ...
Peter Dannegger wrote: > Oder > >
1 | > lsl r16 |
2 | > sbic pinb,3 |
3 | > inc r16 |
4 | > |
> > > Peter Danke, Du verblüffst mich immer wieder... Gruß, Hannes
Hannes Lux wrote: > Peter Dannegger wrote: > ... > Danke, Du verblüffst mich immer wieder... Nicht nur Dich...
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.