Hallo,
ich nutze gerne diesen Code um einen Rechteck zu erzeugen
// Benutzt wird in diesem Beispiel der Timer/Counter 2 (TCNT2)
// byte outpin = 11; // das ist Pin 17 am ATMega328P (PB3, MOSI/OC2A/PCINT3)
byte outpin = 10; // das ist Pin 23 am ATMega2560 (PB4, OC2A/PCINT4)
void setup () {
TCCR2B = B00000001;
// Bits 2 1 0 = 0 0 1 : No prescaling, Teiler = 1
// andere Werte für Teiler: 8, 32, 64, 128, 256, 1024
TCCR2A = B01000010;
// | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// | 0 | 1 | 0 | 0 | - | - | - | - | : Toggle OC2A on Compare Match. siehe (*)
// | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// | - | - | - | - | 0 | 0 | 1 | 0 | : Clear Timer on Compare Match
OCR2A = 79; // 79 entspricht 100kHz
// jedesmal, wenn der Timer-2 der Wert x erreicht, wird der Ausgang invertiert
// Ausgangsfrequenz = 16000000 / 2 / (OCR2A + 1)
// Wert 255 ergibt 31250 Hz, kleinere Werte ergeben größere Frequenzen
pinMode(outpin, OUTPUT); // Pin auf Ausgang setzen
}
void loop () {
}
Gruß
Reinhard