hallo, um die c grundlagen mit dem rp6 mal richtig zu lernen, schreibe ich jetzt einzelne programme ohne die vordefinierten makros.
jetzt hab ich mal ausprobiert mit einem taster eine led anzusteuern.
Der taster ist am Register B am Pin 0 angeschlossen. Die ist am Register
B an Pin 7 angeschlossen. hier mein programm:
irgendwo liegt noch ein programmierfehler denn die led leuchtet nicht
woran liegt es?
grußCode:#include "RP6RobotBaseLib.h" void taster(void) {if (PINB & (1<<0)) //wenn PINB high (taster gedrückt) { PORTB |= (1<<7);} //PIN7 von PORTB auf high else {PORTB &=~ (1<<7);} //PIN7 von PORTB auf low } int main(void) //Hauptprogramm {initRobotBase(); DDRB&=~ (1<<0); //PIN0 von PORTB als Eingang DDRB |= (1<<7); //PIN7 von PORTB als Ausgang taster(); }
Hallo
Versuche das mal ohne RP6-Library:
Ich hoffe, das funktioniert, ich habe es nicht getestet. Beachte die Anzahl der Bytes ohne RP6-Library!Code:#include <avr/io.h> // I/O Port definitions //#include "RP6RobotBaseLib.h" void taster(void) { if (PINB & (1<<0)) //wenn PINB high (taster gedrückt) { PORTB |= (1<<7); //PIN7 von PORTB auf high } else { PORTB &=~ (1<<7); //PIN7 von PORTB auf low } } int main(void) //Hauptprogramm { //initRobotBase(); DDRB&=~ (1<<0); //PIN0 von PORTB als Eingang DDRB |= (1<<7); //PIN7 von PORTB als Ausgang while(1) taster(); //endlos Taster abfragen }
Ein Programm für einen AVR darf nie beendet werden, deshalb muss immer eine Endlosschleife am Ende ausgeführt werden.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen