Hallo Zusammen,
es geht um folgenden Code auf einem Olimex AVR-P28 mit einem ATMega8:
Leider geht der Code auf dem Bord nicht. Die LED geht an und es gibt keine weitere Reaktion auf den Schalter.Zitat:
/****************************
Ein-/Ausgänge
Zeitverzögerung
Variablenlängen
*****************************/
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
/****************************
Anlegen der Funktionen
*****************************/
void initialize();
void LEDschalten(int status);
/****************************
Globale Variable für Zähler der An-Aus-Schleife
*****************************/
uint8_t zaehler=0; //bis max 255 ansonsten uint16_t
int main(void)
{
initialize();
while(1)
{
if (PIND & (1<<2))
{
LEDschalten(1); //LED ein
zaehler=0;
}
if (zaehler >= 1999)
{
LEDschalten(0); //LED aus nach 2sec
zaehler=0;
}
else
{
zaehler++;
_delay_ms(1);
}
}
return 0;
}
void initialize()
{
DDRB = 0x00; //B als Eingang
DDRC = (1<<5); //C5 als Ausgang
DDRD = 0x00; //D als Eingang
PORTB = 0x00; //B 00000000
PORTC = (1<<5); //C 00100000
PORTD = 0x00; //D 00000000
LEDschalten(1); //LED ein
_delay_ms(500); //0.5sec Leuchten
LEDschalten(0); //LED aus
}
void LEDschalten(int status)
{
switch (status)
{
case 1: //LED ein??
PORTC &= ~(1<<5);
break;
case 0: //LED aus??
PORTC |= (1<<5);
break;
}
}
Bei der Simulation in AVRStudio werden außerdem die _delay_ms übersprungen, ohne dass die Stoppuhr entsprechend weiter zählt.
Könnt ihr mir sagen, wo ich meine(n) Fehler habe...
Danke für die Hilfe...Grüße
PS: Bei mir im Programm habe ich die einzelnen Blöcke eingerückt. Hier kommt das leider nicht an :-(