Hallo Gemeinde
habe da ein Problem mit einem kleinen C Programm.
CodeBox C
Verwende einen Attiny841 mit 16MHz und C. Habe die PA0, PA1, PA2, PA3, PA7 und PB2 mit LEDs von 5V mit einem Widerstand von ca. 1,2 KOhm belegt. Ausser dem Pin PB2 schalten alles Pins korrekt. Widerstand stimmt auch (nachgemessen). Die LED PB2 leuchtet leicht ohne auf das schalten zu reagieren ständig. Wenn ich die Spannungen messe scheint die LED ständig eingeschaltet zu sein. Der Prozessor ist neu (defekt?) Programmiere ich den Attiny erlischt die LED kurzzeitig. Damit scheint eigentlich der PB2 zu funktionieren. Die andern Pins habe ich auskommentiert. Auch toggeln funktioniert nicht.
So wie es aussieht bin ich zu blöd so etwas einfaches zu machen. Denkfehler oder Dummheit?
achim
habe da ein Problem mit einem kleinen C Programm.
CodeBox C
#define F_CPU 16000000UL // Angabe der Quarzfrequenz, wichtig für die Zeit #include <util/delay.h> // Einbindung Datei Pause #include <avr/io.h> // Einbindung Datei Ausgänge int main(void) { DDRA=0b10001111; // Port A auf 1, auf Ausgang schalten DDRB=0b00000100; // Port A auf 1, auf Ausgang schalten PORTA=0b10001111; // Port A auf 1, auf Ausgang schalten PORTB=0b00000100; // Port A auf 1, auf Ausgang schalten //PORTA = (1 << PA0); // LED an Pin 0 von Port A aus //PORTA = (1 << PA1); // LED an Pin 1 von Port A aus //PORTB = (1 << PB2); // LED an Pin 1 von Port A aus while(1) // Programmschleife { /* PORTA &= ~(1<<PA0); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTA |= (1<<PA0); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms PORTA &= ~(1<<PA1); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTA |= (1<<PA1); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms PORTA &= ~(1<<PA2); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTA |= (1<<PA2); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms PORTA &= ~(1<<PA3); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTA |= (1<<PA3); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms PORTA &= ~(1<<PA7); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTA |= (1<<PA7); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms */ PORTB &= ~(1<<PB2); // Schaltet Pin aus _delay_ms(500); // Pause 500 ms PORTB |= (1<<PB2); // Schaltet Pin ein _delay_ms(500); // Pause 500 ms //PORTB ^= (1 << PB2); // Port A / PIN toggeln //_delay_ms(500); // warten } }
Verwende einen Attiny841 mit 16MHz und C. Habe die PA0, PA1, PA2, PA3, PA7 und PB2 mit LEDs von 5V mit einem Widerstand von ca. 1,2 KOhm belegt. Ausser dem Pin PB2 schalten alles Pins korrekt. Widerstand stimmt auch (nachgemessen). Die LED PB2 leuchtet leicht ohne auf das schalten zu reagieren ständig. Wenn ich die Spannungen messe scheint die LED ständig eingeschaltet zu sein. Der Prozessor ist neu (defekt?) Programmiere ich den Attiny erlischt die LED kurzzeitig. Damit scheint eigentlich der PB2 zu funktionieren. Die andern Pins habe ich auskommentiert. Auch toggeln funktioniert nicht.
So wie es aussieht bin ich zu blöd so etwas einfaches zu machen. Denkfehler oder Dummheit?
achim