Wäre in dem Fall
DDRB &= ~(1 << PB3); /* set PB3 to input*/ PORTB |= (1 << PB5);
aber sowieso egal.
Hast du den ISP Adapter immer angesteckt?
Würde ich mal ohne testen. Ansonsten mal den Pegel an den Pins messen.
Werbung
Wäre in dem Fall
DDRB &= ~(1 << PB3); /* set PB3 to input*/ PORTB |= (1 << PB5);
aber sowieso egal.
Hast du den ISP Adapter immer angesteckt?
Würde ich mal ohne testen. Ansonsten mal den Pegel an den Pins messen.
雅思特史特芬
开发及研究
Habe den ISP Adapter abgesteckt leider ohne erfolg. Habe den Code nochmal über arbeitet und bereinigt.
Code:#define F_CPU 10000000UL #include <avr/io.h> #include <util/delay.h> void PowerOn(){ /**********Start Powerleds*******************/ DDRB |= 1<<PB0; /* set PB0 to output */ DDRB |= 1<<PB1; /* set PB1 to output */ PORTB |= (1 << PB0); /* LED0 on */ PORTB |= (1 << PB1); /* LED1 on */ /********************************************/ } void setPins(){ /**************Input*************************/ DDRB &= ~(1 << PB2); /* set PB2 to input*/ DDRB &= ~(1 << PB3); /* set PB3 to input*/ /********************************************/ /**************Ouput*************************/ DDRD |= 1<<PD6; /* set PB6 to output */ DDRD |= 1<<PD7; /* set PB7 to output */ PORTD &= ~(1<<PD6); /* PD6 off */ PORTD &= ~(1<<PD7); /* PD7 off */ /********************************************/ } void eventhandler(){ /**********Read Input PB2 and PB3*************/ if(!(PINB & (1 << PB2)) ) { PORTD |= 1<<PD6; /* LED on */ }else { PORTD &= ~(1<<PD6); /* LED off */ } if(!(PINB & (1 << PB3)) ){ PORTD |= 1<<PD7; /* LED on */ }else{ PORTD &= ~(1<<PD7); /* LED off */ } } int main(void) { setPins(); PowerOn(); while(1) { eventhandler(); } return 0; }
Wie ist denn das Verhalten? Das Programm sagt mir nur, wie du es gern möchtest, aber nicht, was es bei dir macht.
雅思特史特芬
开发及研究
Eigentlich soll wenn man den Taster die jeweilige led leuchten. Nur leider passiert nichts die Pegel beim AVR liegen bei 5 volt. Habe mittlerweile die Taster im verdacht, wenn ich den Taster drücke habe ich keinen Widerstand wenn ich den Taster nicht drücke habe ich auch keinen. Hatte aus der Tüte noch nen paar über.
Eigentlich muss ich doch nen Riesen widerstand habe wenn ich ihn nicht drücke und wenn ich ihn drücke nen Maginal kleinen ?
Es geht die Taster waren es unglaublich
so den code habe ich auch dar wo ich ihn hin haben möchte:
Code:#define F_CPU 10000000UL #include <avr/io.h> #include <util/delay.h> int channel0; int channel1; void PowerOn(){ /**********Start Powerleds*******************/ DDRB |= 1<<PB0; /* set PB0 to output */ DDRB |= 1<<PB1; /* set PB1 to output */ PORTB |= (1 << PB0); /* LED0 on */ PORTB |= (1 << PB1); /* LED1 on */ /********************************************/ } void setPins(){ /**************Input*************************/ DDRB &= ~(1 << PB2); /* set PB2 to input*/ DDRB &= ~(1 << PB3); /* set PB3 to input*/ /********************************************/ /**************Ouput*************************/ DDRD |= 1<<PD6; /* set PB6 to output */ DDRD |= 1<<PD7; /* set PB7 to output */ PORTD &= ~(1<<PD6); /* PD6 off */ PORTD &= ~(1<<PD7); /* PD7 off */ /********************************************/ } void eventhandler(){ /**********Read Input PB2 and PB3*************/ if((PINB & (1 << PB2)) ) { channel0=1; channel1=0; } if((PINB & (1 << PB3)) ){ channel1=1; channel0=0; } if(channel0==1){ PORTD |= 1<<PD6; /* LED on */ PORTD &= ~(1<<PD7); /* LED off */ }else if(channel1==1){ PORTD |= 1<<PD7; /* LED on */ PORTD &= ~(1<<PD6); /* LED off */ } } int main(void) { setPins(); PowerOn(); channel0=1; while(1) { eventhandler(); } return 0; }
Lesezeichen