Hallo Leute,
möchte gerne folgenden Code den ich einst für einen Atmega8 geschrieben
habe auf einen Attiny2313 portieren. Problem ist jetzt das auf dem
Atmega8 recht verschwenderisch mit dem Speicher umgehen konnte, was
jetzt auf dem Attiny2313 nicht mehr möglich ist, da da der SRAM ja um
einiges kleiner ist.
1 | uint32_t best_total
|
2 | uint32_t lap_total
|
3 |
|
4 | // --------------------------
|
5 |
|
6 | best_total = best.min * 10000 + best.sec * 100 + best.csec; // Gesamtzeit der besten Runde ermitteln
|
7 | lap_total = lap.min * 10000 + lap.sec * 100 + best.csec; // Gesamtzeit der Rundenzeit ermitteln
|
8 |
|
9 | if(best_total > lap_total) // Wenn Rundenzeit schneller als Bestzeit -> Rundenzeit wird zur Bestzeit
|
10 | {
|
11 | best = lap; // Rundenzeit zur Bestzeit machen
|
12 | LED_besttime(1); // LED für Bestzeit gefahren an
|
13 | }
|
14 |
|
15 | else // Wurde keine Bestzeit erreicht, den buffer zum Rücksetzen des FF löschen
|
16 | {
|
17 | buffer = 0; // Immer neu initialisieren
|
18 | }
|
Also dachte ich daran obenstehenden Code durch if-Anweisungen ersetzen
zu können, was aber offensichtlich nicht so einfach geht.
Gibt es schon eine gängige angehensweise für solche Vergleiche?
Ich will ja im Prinzip nur wissen ob die aktuelle Rundenzeit schneller /
kleiner als die gespeicherte Bestzeit ist.
1 | if(best.min < lap.min) // Wurde keine Bestzeit erreicht, den buffer zum Rücksetzen des FF löschen
|
2 | {
|
3 | buffer = 0;
|
4 | }
|
5 |
|
6 | else
|
7 | {
|
8 | if(best.sec < lap.sec)
|
9 | {
|
10 | buffer = 0;
|
11 | }
|
12 |
|
13 | else
|
14 | {
|
15 | if(best.csec < lap.csec)
|
16 | {
|
17 | buffer = 0;
|
18 | }
|
19 |
|
20 | else
|
21 | {
|
22 | best = lap; // Rundenzeit zur Bestzeit machen
|
23 | LED_besttime(1); // LED für Bestzeit gefahren an
|
24 | }
|
25 |
|
26 | }
|
27 | }
|