Wie programmiert man Eingänge mit AVR-GCC?

Gast #39747
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
Gast #39748
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
Gast #39752
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?
Gast #39753
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?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.