www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einlesen von Zählerstand


Autor: Thomas P. (newi)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C:

unsigned int Wert;

Wert = (PINB << 8) | PINA;

Autor: Thomas P. (newi)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was passiert denn in den Schritten bei << und | `?


Dazu besorge man sich ein C-Buch.

Autor: gast (Gast)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>alles um 8 bit nach rechts,

Wenn dann nach links...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja sry, natürlich nach links

Autor: Thomas P. (newi)
Datum:

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

Autor: Thomas P. (newi)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Thomas P. (newi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja alles klar .. ich weiß bescheid!

danke

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.