mikrocontroller.net

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


Autor: Jens Neitzel (Gast)
Datum:

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

Autor: BAB (Kai K.) (Gast)
Datum:

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

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na da ist wohl ein kleiner Flüchtigkeitsfehler drin...

DDRB = DDRB;
x = DDRD;

...sollte wohl eher...

PORTB = PIND;
x = PIND;

...heissen.

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oops..:)...yo..hehe

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ansonsten hätte ich eben das data direction register eingelesen..:)))

Autor: Jens Neitzel (Gast)
Datum:

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

Autor: Jens Neitzel (Gast)
Datum:

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

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.