Hallo zusammen,

ich bin AVR Neueinsteiger und möchte gerne die Timerfunktion des oben genannten Controllers nutzen, aber ich bekomme nur knattern und pfeifen aus OC0. Ist diese C-Code korrekt?


#include <io.h>

void setNewFrequency(short);


int main(void){

TCCR0 = 0x11;

//while (DDRB != 0x00 || PORTB != 0xFF){
DDRB = 0x01;
PORTB = 0xFE;
//}


while (DDRD != 0xFF){
DDRD = 0xFF;
}

int lngCount=1,lngUSE=1,lngSleep; //war long
// int intInput=0;
short Music[]={255,200,155,100,23,45,64,23,45,67,22,33,66,100,2 00,255,230,210,1,10};
short musicpt=0;

//Music[]={255,200,155,100,23,45,64,23,45,67,22,33,66,100,2 00,255,230,210,1,10};
while (1){
for (lngCount=1;lngCount<255;lngCount+=3){

for (lngSleep=0;lngSleep<17500;lngSleep++){
asm volatile ("NOP");
}

if (musicpt < 20){
musicpt++;
}
else{
musicpt = 0;
}

setNewFrequency(Music[musicpt]);

// intInput=PINB;

if (lngUSE<12{
lngUSE+=2;
}
else{
lngUSE=0;
}

PORTD = ((lngUSE*2-1) % lngCount);
}
}





return 0;
}

void setNewFrequency(short value){
short newValue=0;

if (value >=1 && value <=255){
//newValue = 256 - value;
newValue = value;
//Laden des Vergleichregisters
OCR0 = newValue;
}
}