Forum: Compiler & IDEs Wie programmiert man Eingänge mit AVR-GCC?


von Jens Neitzel (Gast)


Lesenswert?

Hallo,

Ich habe mir eine Platine für den Atmel AT90S4433 gebaut und
habe gerade erst angefangen damit zu programmieren.
Jetzt schaffe ich es nicht die Ports als Eingänge zu verwenden.
Dazu habe ich auf dieser Seite folgendes Beispiel gefunden:

#include

void main(void)
{
  outp(0xff, DDRB); //Port B = Output
  outp(0x00, DDRD); //Port D = Input
  for(;;) //loop
  {
    outp(inp(PIND), PORTB);
  }
}

Leider verstehe ich absolut nicht, wie man die an Port D anliegennde 
Kombination
in eine Variable speichert, um damit weiter zu arbeiten.
Kann mir jemand weiter helfen?

Vielen Dank im Vorraus,
Jens

von BAB (Kai K.) (Gast)


Lesenswert?

#include <avr/io.h>

int main(void)
{
  unsigned char x;

  DDRB = 0xFF;       //Port B = Output
  DDRD = 0x00;       //Port D = Input

  for(;;) //loop
  {
    DDRB = DDRD;     PortD einlesen und auf Port B ausgeben
    x = DDRD;        PortD einlesen und in x speichern
  }

  return(0);
}

bitte die aktuelle WinAVR version nehemen wenn du unter
windows arbeitest!!

gruss,

BAB

von Sascha Weitkunat (Gast)


Lesenswert?

Na da ist wohl ein kleiner Flüchtigkeitsfehler drin...

DDRB = DDRB;
x = DDRD;

...sollte wohl eher...

PORTB = PIND;
x = PIND;

...heissen.

von BAB (Kai K.) (Gast)


Lesenswert?

oops..:)...yo..hehe

von BAB (Kai K.) (Gast)


Lesenswert?

ansonsten hätte ich eben das data direction register eingelesen..:)))

von Jens Neitzel (Gast)


Lesenswert?

Jau,
Jetzt gehts.
Danke sehr!

Nur eins ist seltsam:
Ich habe an den Pins von Port B Leuchtdioden angeschlossen.
An einem der Pins von Port D ist ein IR-Sensor,
wenn ein Objekt in der Nähe ist, ist an diesem Pin 0V ansonten 5V.

Jetzt kann ich beobachten, dass eine Leuchtdiode leuchtet,
wenn kein Objekt in der Nähe ist.
Sobald das Objekt wieder verschwindet fängt die Diode wieder an zu 
leuchten,
aber auch die zwei benachbarten Dioden leuchten für kurze Zeit.
Wie ist das zu erklären?

von Jens Neitzel (Gast)


Lesenswert?

Vielleicht sollte ich wie in dem AVR-Tutorial I/O-Grundlagen
ein Taster beschrieben ist, am Ausgang des IR-Sensors noch eine
Transistorschaltung mit Pullup-Widerstand anschließen.
Ist es möglich, dass der Eingang ansonsten "überlastet" ist?

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.