Gast
#730333
Hallo Leute,
ich bin grad auf einen sehr eigenartigen Fehler gestoßen. Dieses kleine
Programm hier soll nichts Anderes tun, als PD5 und PD6 zuschalten, wenn
PC0 und PC1 auf Low stehen.
Zur Initialisierung dieses Programmabschnitts wird eigentlich nur DDRC
und DDRD benötigt. Wenn ich nun aber, wie hier im Beispiel DDRA mit
initialisiere und für die beiden "XX" 1 eintrage, werden plötztlich PD5
und PD6 gesetzt. Die IF-Anweisungen werden völlig ignoriert.
Wie kann ich mir das erklären? Hatte sowas noch nie.
Wenn ich nun aber "XX" mit 0 initialisiere, funktioniert alles bestens.
Wie kann das sein? DDRA wird doch hier im Programm nirgends benötigt?
Versteh gerade die Welt nicht mehr!
Vielen Dank für Eure Hilfe schon mal.
Grüße Thomas
#include <avr/io.h>
#include <stdint.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
int main (void)
{
DDRA = 0b11XX0000;
DDRC = 0b00000000;
DDRD = 0b11110000;
for(;;)
{
if(!(PINC &(1<<PINC0)))
{
PORTD = PORTD | (1 << PD5);
}
if(!(PINC &(1<<PINC1)))
{
PORTD = PORTD | (1 << PD6);
}
}
}
