Hallo
Das sieht ja eigentlich gut aus, ich erhalte beim Kompilieren allerdings Warnungen weil das void als Parameter in den Definitionen fehlt:
void driveForward(void){
Aber das kann's eigentlich nicht sein. Hauptfehler beim Verwenden des AVR-Studios ist das Vergessen des Speicherns vor dem Kompilieren. Deshalb im Anhang die von mir erzeugte Hex-Datei.
Funktioniert das:
(Nicht getestet weil mir der passende Roboter fehlt)Code:#define __AVR_ATmega88__ #include <avr/io.h> //#include <iom88.h> #define STATSLED0_ON (PORTC |= 1<<PC0) #define STATSLED0_OFF (PORTC &= ~(1<<PC0)) #define STATSLED1_ON (PORTC |= 1<<PC1) #define STATSLED1_OFF (PORTC &= ~(1<<PC1)) #define STATSLED2_ON (PORTC |= 1<<PC2) #define STATSLED2_OFF (PORTC &= ~(1<<PC2)) #define STATSLED3_ON (PORTC |= 1<<PC3) #define STATSLED3_OFF (PORTC &= ~(1<<PC3)) #define SWITCH_LEFT (PINC & 1<<PC4) #define SWITCH_RIGHT (PINB & 1<<PB4) #define SWITCH_BACK_LEFT (PINC & 1<<PC6) #define SWITCH_BACK_RIGHT (PINB & 1<<PB0) int main(void){ //DDRD = 1<<PD6 | 1<<PD7; // PD6 PD7 Output Motor1; //DDRB = 1<<PB1 | 1<<PB2; // PB1 PB2 Output Motor2; DDRC &= ~(1<<PC4 | 1<<PC6); // PC4 PC6 Input SWITCH_LEFT & SWITCH_BACK_LEFT; DDRB &= ~(1<<PB4 | 1<<PB0); // PB4 PB0 Input SWITCH_RIGHT & SWITCH_BACK_RIGHT; DDRC = 1<<PC0 | 1<<PC1; // PC0 PC1 Output StatusLED0 & 1; DDRC |= 1<<PC2 | 1<<PC3; // PC2 PC3 Output StatusLED2 & 3; while(1) { if(SWITCH_LEFT) STATSLED0_ON; else STATSLED0_OFF; if(SWITCH_BACK_LEFT) STATSLED1_ON; else STATSLED1_OFF; if(SWITCH_RIGHT) STATSLED2_ON; else STATSLED2_OFF; if(SWITCH_BACK_RIGHT) STATSLED3_ON; else STATSLED3_OFF; } return(0); }
Ich hoffe, es ist so richtig. Die Hex-Datei dazu ist auch im Anhang. Übrigens: Willkommen im RN-Forum.
Gruß
mic






Zitieren

Lesezeichen