Ich habe einen Arduino Nano mit einem 328P und brauche alle 6 PWM-Pins.
Daher musste ich den Prescaler und den WGM-Modus von Timer0 anpassen.
Es befindet sich jetzt im phasenkorrekten PWM-Modus mit einem Vorteiler von 1.
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00);
TCCR0B = _BV(CS00);
Jetzt brauche ich eine Arbeitszeitberechnung für andere Bibliotheken, aber da Timer0 diese Aufgabe hatte, ist jetzt alles außer Betrieb.
Ich habe versucht, die Verkabelung anzupassen. C.
// the prescaler is set so that timer0 ticks every 64 clock cycles, and the
// the overflow handler is called every 256 ticks.
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))
dazu
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(1 * 510))
Aber es ist, als hätte ich nichts geändert. (testete andere Einstellungen, die geändert wurden, damit sie neu kompiliert wurden)
Ganzer Code:
void setup() {
// Set Timer 0, 1 and 2
// Register A: Output A and B to non-inverted PWM and PWM mode to phase correct.
// Register B: Pre Scaler to 1.
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00);
TCCR0B = _BV(CS00);
TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM10);
TCCR1B = _BV(CS10);
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(CS20);
pinMode(8, OUTPUT);
}
void loop() {
digitalWrite(8, LOW);
delay(65000);
digitalWrite(8, HIGH);
delay(65000);
}