CodeX
10.08.2006, 04:10
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<128){
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;
}
}
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<128){
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;
}
}