Hallo,
er kann es ausprobieren. ![]()
Er kann noch ein Board suchen welches einen Quarz drauf hat. Ansonsten müßte er den Quarztakt mittels änderbaren Kondensator verstimmen. Allerdings benötigt man dafür die Meßgeräte. Hier würde dann bei mir der Aufwand/Nutzen in Frage gestellt. Ich denke aktuell das die Abweichung für 24h noch keine große Rolle spielt. Kann mich auch irren. Er kann es ja mal nachrechnen. Die unbekannte Taktfrequenz seines Resonators lassen wir dabei mal außen vor.
Der Code würde wie folgt aussehen inkl. 2 Funktionen zum starten/stoppen.
/*
Doc_Arduino - german Arduino Forum
IDE 1.8.8
Arduino Mega2560
20.12.2018
Sollwert: 12,36943503087136 Hz
Istwert: 12,36889 Hz (rein rechnerisch)
Pinouts >>> http://www.pighixxx.net/pinoutspg/boards/
Uno >>> http://www.pighixxx.net/portfolio-items/uno/?portfolioID=314
Mega2560 >>> http://www.pighixxx.net/portfolio-items/mega/?portfolioID=314
http://forum.arduino.cc/index.php?topic=547659.0
*/
// Mega
const byte Takt_Pin = 11; // OC1A bzw. PB5
// Uno
// const byte Takt_Pin = 9; // OC1A bzw. PB1
void setup() {
pinMode(Takt_Pin, OUTPUT);
set_Timer1();
start_Timer1();
}
void loop() {
} // loop Ende
// ****** Funktionen ******* //
void start_Timer1()
{
TCCR1B |= (1 << CS11) | (1 << CS10); // Timer starten, Prescaler 64
}
void stopp_Timer1()
{
TCCR1B &= ~( (1 << CS12) | (1 << CS11) | (1 << CS10) ); // Timer stoppen
}
void set_Timer1() // Phase Frequenz Correct Mode 9
{
cli(); // Interrupts ausschalten
TCCR1A = 0; // Reset TCCR1A Register
TCCR1B = 0; // Reset TCCR1B Register
TIMSK1 = 0; // Reset TIMSK1 Register (disable Timer Compare Interrupts)
TCNT1 = 0; // Start 0
OCR1A = 5053; // TOP Wert bestimmt mit Prescaler den Takt (12,369 Hz)
TCCR1A = (1 << COM1A0) | (1 << WGM10);
TCCR1B = (1 << WGM13);
sei(); // Interrupts einschalten
}