Gast
#2890970
Hallo Leute, in der uC Programmierung bin ich zwar noch nicht so geübt, ich habe allerdings nun folgendes Verhalten mit meinem Code festgestellt, das ich nicht nachvollziehen kann. Zunächsteinmal der Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
Das ganze dient zum Auslesen einer sinusförmigen Schwingung, um 2.5V. Ich möchte den Abstand des Signals zu den 2.5V messen und in das Array schreiben. Da ich den in den ATMega88 integrierten 10bit ADC nutze, liegen diese 2.5V bei 512 Steps. Aus einem mir nicht erklärlichen Grund ergibt sich immer folgende Belegung des Arrays: siehe Anhang. Eigentlich sollten keine Werte >1024 auftreten, da der ADC nur 10bit besitzt. Zu Testzwecken habe ich auch diese if-Abfrage oben eingebaut. An einen Überlauf habe ich schon gedacht, aber wo woll er auftreten? Wenn das Ergebnis >=512 ist, wird davon 512 abgezogen, also kommt mindestens 0 raus. Ist es kleiner als 512, wird es von 512 abgezogen, auch hier sollte es mindestens 0 sein. Ich verstehe auch nicht, warum diese Werte nur ab ca Messwert 430 beginnen so zu schwanken. Vor Eintritt in die Hauptschleife des Programms wird das Array mit Nullen initialisiert. Das gleich Verhalten tritt auch auf, wenn ich nicht den FreeRun Modus nutze, sondern die Konversation immer explizit starte.
