
Ich brauche als Signalquelle für eine Halbbrückenansteuerung einen Frequenzgenerator mit 50% Duty Cycle und variabler Frequenz. Ich habe dafür diesen Code für den Arduino UNO gefunden:
Code: Alles auswählen
//dynamic frequency generator
//for timer2
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned long frequency = 1000000 ;
void setup(){
pinMode(9,1);
pinMode(10,1);
DFG(frequency);
Serial.begin(57600);
}
void loop(){
}
void DFG(unsigned long tempfreq){
cli();//disable interupts
TCCR1A = 0;//registers for timer 1
TCCR1B = 0;
TCNT1=0;
TCCR1A |= _BV(COM1A0) + _BV(COM1B0);
TCCR1B |=_BV(WGM12);
TCCR1C = _BV(FOC1A);
if(tempfreq > 122 && tempfreq < 1000001){
OCR1A = (8000000/tempfreq)-1;//#TIMER COUNTS
TCCR1B |= _BV(CS10);
}
else if(tempfreq <= 122 && tempfreq > 15){
OCR1A = (1000000/tempfreq)-1;
TCCR1B |= _BV(CS11);
}
else if(tempfreq <= 15 && tempfreq > 4){
OCR1A = (125000/tempfreq)-1;
TCCR1B |= _BV(CS10) + _BV(CS11);
}
//TIMSK1 = _BV(OCIE1A);//TIMER1 COMPARE INTERUPT
sei();//enable interupts
}
Der Code macht genau dass, was ich brauche. Man kann einfach den Wert der Frequenz hinter "unsigned long frequency =" schreiben. Meine Frage lautet nun, wie ich die Frequenz mit einem Potentiometer über die AnalogIn Eingänge ändern kann? Ich habe bereits verschiedene Funktionen wie AnalogRead anstatt des Frequenzwerts versucht, aber das hat nicht funktioniert.
Was muss ich am Code ändern, dass ich mit dem Poti z.b zwischen 10 und 50kHz regeln kann?
Danke schon im Voraus
Mit besten Grüßen
Phoenix