Guten Morgen,
Ich brauche dringend Hilfe bei einer Abitur Aufgabe, die wie folgt lautet:
Erstellen Sie das Unterprogramm in C wait50ms(), welches ca. 50 ms wartet, wenn es aufgerufen wird. Der Maschienenzyklus soll 1 mikrosekunde betragen und es soll ein integrierter Hardware Timer ohne Interrupt genutzt werden. Die Initialisierung soll auch in dem Unterprogramm erfolgen.
Wir sollen das Programm auf unseren Mikrocontroller anpassen, den wir auch in der Schule verwenden, welches der Atmega 2560 ist, aber dennoch den vorgegebenen Maschienenzyklus verwenden.
Ich würde die Aufgabe mit dem Countermode lösen, jedoch weiß ich nicht, wie ich das ganze Programmieren und Initialisieren soll, so dass diese 50ms wartet.
In unserer Formelsammlung steht zu dem Thema Initialisierung des Counters, nur folgendes:
cli();
TCNT5 = 0;
TCCR5A = 0;
TCCR5B = 7;
TIMSK5 = 1;
sei();
Mein Lösung wäre jetzt diese hier gewesen:
void wait50ms(){
cli();
TCNT5 = 0;
TCCR5A = 0;
TCCR5B = 7;
TIMSK5 = 1;
sei();
while(TCNT5!=15536){
}
TIMSK5=0;
}
Ich überprüfe auf den Wert 15536, da 50ms= 0,05s, 0,05*1.000.000=50.000 65536-50.000=15536.
Jedoch bin ich mir ziemlich sicher, dass es so nicht funktionieren kann, aber ich weiß auch nicht, wie ich es sonst lösen soll. Dementsprechend würde ich mich sehr freuen, wenn mir jemand die richtige Lösung "programmieren" könnte, aber vor allem die Lösung Schritt für Schritt erklären könnte.
ich bedanke mich im voraus für eure Hilfe.