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
#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
Na da ist wohl ein kleiner Flüchtigkeitsfehler drin... DDRB = DDRB; x = DDRD; ...sollte wohl eher... PORTB = PIND; x = PIND; ...heissen.
ansonsten hätte ich eben das data direction register eingelesen..:)))
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.