Hallo,
ich möchte mit einem Atmega8 2 Tasten abfragen und dann wenn die eine gedrückt wird eine Variable um 1 erhöhen, bzw. wenn die andere Taste gedrückt wird die Variable um 1 erniedrigen. Wenn die Variable dann den Wert 3 hat soll eine LED angehen. Dazu verwende ich folgenden C Code:
Code:
#include <avr/io.h>
#include "wait.h"
int count = 0;
void main()
{
DDRC = 0x07;
while(1)
{
if(PINC & (1 << PC5))
{
if(count < 15)
{
count++;
wait_ms(500);
}
}
if(PINC & (1 << PC4))
{
if(count != 0)
{
count--;
wait_ms(500);
}
}
if(count == 3)
{
sbi(PORTC, 1);
}
else
{
cbi(PORTC, 1);
}
}
}
wait.h
Code:
#define F_CPU 3686400ul
#include <util/delay.h>
void wait_ms(int miliSec)
{
_delay_loop_2(1*(F_CPU/(1000/4))*miliSec);
}
void wait_us(int mikroSec)
{
_delay_loop_2(1*(F_CPU/(1000000/4))*mikroSec);
}
Dieses Programm funktioniert auch wenn ich es am Computer simuliere (ich benutze das AVR Studio 4), aber wenn ich es dann auf den Mega8 lade und starte blitzt die LED unkontrolierbar auf und die Tasten bewirken gar nichts mehr (als Experimentierboard benutze ich das myAVR Board). Woran liegt das???
Lesezeichen