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:
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);
}
(Nicht getestet weil mir der passende Roboter fehlt)
Ich hoffe, es ist so richtig. Die Hex-Datei dazu ist auch im Anhang. Übrigens: Willkommen im RN-Forum.
Gruß
mic
Lesezeichen