Forum: Mikrocontroller und Digitale Elektronik Einlesen von Zählerstand


von Thomas P. (newi)


Lesenswert?

Hallo,
ich bin Anfänger in Sachen MC Programmierung.
Ich hoffe mir kann einer weiterhelfen.

Ich habe folgendes Problem. Ich möchte mit einem Atmega32 einen 16 Bit 
Zähler auslesen. Die Daten gehen an die Ports A und B. Dabei steht PA0 
für das niederwertige und PB7 für das höchstwertige Bit.

Kann mir bitte einer ungefähr sagen wie ich diese Leitungen auslesen 
kann, so dass ich nachher einen einzigen Zahlenwert der Wertigkeit 
bekomme? Das wäre echt super! Ich habe keine Vorstellung wie man das 
realisieren kann.

Vielen Dank schonmal!
Gruß Thomas

von STK500-Besitzer (Gast)


Lesenswert?

In C:

unsigned int Wert;

Wert = (PINB << 8) | PINA;

von Thomas P. (newi)


Lesenswert?

so einfach geht das´?
Was passiert denn in den Schritten bei << und | `?

von STK500-Besitzer (Gast)


Lesenswert?

>Was passiert denn in den Schritten bei << und | `?


Dazu besorge man sich ein C-Buch.

von gast (Gast)


Lesenswert?

<< ist eine shift operation, d.h es wird nach rechts oder links 
"geshiftet"
| ist ein logischen oder

im klartext liest du erst PINB in eine 16 bit Variable und schiebst 
alles um 8 bit nach rechts, dann nimmst du das Ergebnis und verknüpfst 
es ODER mit PINA, dadurch steht nun in den unteren 8Bit dein PINA

von STK500-Besitzer (Gast)


Lesenswert?

>alles um 8 bit nach rechts,

Wenn dann nach links...

von gast (Gast)


Lesenswert?

ja sry, natürlich nach links

von Thomas P. (newi)


Lesenswert?

Ja nach meinen Kenntnissen heißt das aber:

Eine 8 an Pinb schreiben und | bedeutet normal Oder?
Also für mich gibt das keinen Sinn.

Habe mir auch dazu das AVR-GCC-Tutorial durchgelesen.
Bitte Sagen Sie mir doch noch was der Befehl auf sich hat...damit wäre 
mir sehr geholfen!

Danke

von Thomas P. (newi)


Lesenswert?

Da habe ich gerade wohl zu spät gepostet!
Dankeschön für die Erklärung !!! Jetzt weiß ich wie ich es zu machen 
habe.
Wenn mans weiß ist es ja total simpel ...aber als Anfänger muss man 
darauf erst mal kommen!

von STK500-Besitzer (Gast)


Lesenswert?

>Eine 8 an Pinb schreiben und | bedeutet normal Oder?
>Also für mich gibt das keinen Sinn.

Wie oben schon geschrieben: Dir fehlen C-Grundlagen.
"|" ist das binäre "oder" und "||" das logische.

Dann gibt es "<<" das ist eine Operation auf eine Variable . Hierbei 
wird auf Bitebene der Inhalt der Variablen (in diesem Fall PINB) um die 
Anzahl der angegeben Stellen (8) nach links verschoben. Das Gegenstück 
wäre ">>", was ein Rechstverschieben macht.
Klammern sollten dir ein Begriff sein.
Die Ausführungsreihenfolge hat gast schon beschrieben.

von Thomas P. (newi)


Lesenswert?

ja alles klar .. ich weiß bescheid!

danke

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
Noch kein Account? Hier anmelden.