Forum: Compiler & IDEs 8-Bit Variable an Port ausgeben


von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
Wie kann ich eine 8-Bit variable auf einem Atmel-Chip direkt an einen 
Port ausgeben, sodass die dort angeschlossenen LEDs die ausgegebene Zahl 
in binär darstellen?
1
uint8_t zaehler;
2
zaehler =0;
3
DDRB= 0*FF
4
PORTB = zaehler;
5
zaehler=1;
Funktioniert das in dieser Art und Weise?
Kann ich die Variable, wenn ich sie mit volatile als global deklariere 
auch in anderen Funktionen ändern und die LEDs würden sich dann auch 
verändern?
Gruß Jannis
PS: die Suche hat für mich nichts brauchbares zu Tage gebracht.

von Helfer (Gast)


Lesenswert?

Nö. Der C Compiler wird dein Programm wegen zu vielen Fehlern ablehnen. 
Eine Chance hast du mit
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  uint8_t zaehler = 0;
6
  
7
  // Hardware initialisieren: PORTB komplett Ausgang
8
  DDRB = 0xFF;
9
10
  // Unendliche Arbeitsschleife
11
  while(1) {
12
    PORTB = zaehler;
13
    zaehler += 1; // überlauf bei 255 -> 0
14
    // Bei hoher Taktrate des AVR hier Pause (delay) einplanen...
15
  }
16
}

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
Das dass genannte Programm so nicht funktioniert war mir bekannt. Sehe 
ich das richtig, dass die Zuweisung der Variable an den Port immer in 
der gleichen Schleife stehen muss?
Gruß Jannis

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jannis C. schrieb:
> Sehe
> ich das richtig, dass die Zuweisung der Variable an den Port immer in
> der gleichen Schleife stehen muss?

Der Port spiegelt nicht automagisch den Inhalt der Variablen, sondern es 
muss der Inhalt der Variablen schon "von Hand" an den Port ausgegeben 
werden. Wenn sie sich ändert, und der Port dem folgen soll, muss sie 
wieder an den Port ausgegeben werden.

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
Danke für die Antworten, Frage und Problem gelöst.
Gruß Jannis

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.