Hallo,
Ich will ein Stoppuhr- Programm schreiben mittels Timer.
Also die Uhr funktioniert schon aber das mit Stoppen und wieder starten
haut nicht hin.
Wenn ich auf Stop drücke stoppt die Uhr vllt nach 3-4 Sekunden aber auch
nicht immer -.-
Das Programm is für einen Luminary Mikrocontroller.
Hier der Code:
1
intmain(void)
2
{
3
intsek=0;
4
intmin=0;
5
intstunde=0;
6
// int i=0;
7
intstatusUp=0;
8
intstatusDown=0;
9
10
11
charausgabe[50];
12
13
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);// port f enablen
14
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);// port e enablen
15
16
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE,GPIO_PIN_0|GPIO_PIN_1);//Configures PIN0, PORTF for use as GPIO input --> Up- und Down-Taster
17
18
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//Aktiviert Pull-Up Widerstand für Select Taster
19
GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_PIN_0|GPIO_PIN_1,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//Aktiviert Pull-Up Widerstand für Up- und Down-Taster
20
21
22
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_1);//Setze den PIN_1(Select-Button) als Input
> Ich will ein Stoppuhr- Programm schreiben mittels Timer.
Dann solltest du dir mal ansehen, was du mit dem Timer sonst noch so
machen kannst. Zum Beispiel, wei man da bei einem Overflow eine
Interrupt Routine drann hängt.
Das hier
ist effektiv kein Ersatz dafür. Denn an dieser Stelle wartet dein
Programm auf den Überlauf des Timers.
Solange dein Programm nicht mehr machen soll, als die Zeit zählen, mag
das noch angehen. In dem Moment, in dem dein Programm aber nebeher auch
noch andere Dinge machen soll, wie zb ein paar Taster überwachen, ist so
etwas nicht tragbar.
Und spätestens, nachdem du hier
den Timer überhaupt abgeschaltet hast, wird dann die erst genannte
Schleife bis zum St. Nimmerleinstag warten. Da wird dann kein Timeout
(ich nehme mal an, dass das ein Overflow ist) mehr kommen. Denn ... der
Timer läuft ja nicht.
Fazit: so gehts nicht.
Die vernünftigste Lösung ist eine Trennung des Uhrenmechanismus von den
Tasten. Wenn dein Timer Interrupts kann (wovon ich mal stark ausgehe),
dann besteht die Lösung darin, die Uhr als Ganzes (ohne AUsgabe) im
Interrupt zu machen und die Tasten in der Hauptschleife zu behandeln.
zuerst danke für die Antwort
Also mir wurde gesagt in der Schule, dass ich das ohne Interrupts machen
muss.
Und wie meinen Sie das, dass ich das mit der Tastenabfragung auserhalb
verwenden soll ?
Serieousl Lesrely schrieb:> zuerst danke für die Antwort> Also mir wurde gesagt in der Schule, dass ich das ohne Interrupts machen> muss.
Ok.
Dann aber bitte so
Und wieso hat das von mir nicht vorher gestimmt
ich muss ja abfragen während er zählt oder?
Wie du es gemacht hast überprüft er die Tasten zum Schluss oder wie ?