Guten Morgen!
ich möchte gerne aus einer auf dem Flash-Speicher hinterlegten "Tabelle"
Werte einlesen.
Ich lese am ADC eine Spannung ein, auf die dann der jeweilige Wert aus
der Tabelle gelesen werden soll (ADC funktioniert, passende Spannung
wird auf dem LCD ausgegeben):
1 | ;Lambda-Wert aus Tabelle lesen, pointer einfach +r21:
|
2 | ldi ZL, LOW(lambdawerte*2)
|
3 | ldi ZH, HIGH(Lambdawerte*2)
|
4 | clr r16
|
5 | add ZL, r21
|
6 | adc ZH, r16 ;only carry
|
7 | lpm
|
8 | mov r21, r0 ;Wert aus tabelle an R21 und somit LCD übergeben
|
die Tabelle dazu (nur ein Ausschnitt, sind rund 240 Werte):
1 | ; Daten für die Lambda-Anzeige
|
2 | ;Lambda , Spannung
|
3 | ; /100 , /100 V
|
4 | ;
|
5 | lambdawerte:
|
6 | .DB 121 ; 0
|
7 | .DB 121 ; 1
|
8 | .DB 120 ; 2
|
9 | .DB 120 ; 3
|
10 | .DB 119 ; 4
|
11 | .DB 118 ; 5
|
12 | .DB 117 ; 6
|
13 | .DB 117 ; 7
|
14 | .DB 116 ; 8
|
15 | .DB 116 ; 9
|
16 | .DB 115 ; 10
|
17 | .DB 115 ; 11
|
18 | .DB 114 ; 12
|
19 | .DB 113 ; 13
|
20 | .DB 112 ; 14
|
21 | .DB 112 ; 15
|
22 | .DB 111 ; 16
|
23 | .DB 111 ; 17
|
24 | .DB 110 ; 18
|
25 | .DB 110 ; 19
|
26 | .DB 109 ; 20
|
27 | .DB 108 ; 21
|
28 | .DB 108 ; 22
|
29 | .DB 107 ; 23
|
30 | .DB 107 ; 24
|
31 | .DB 106 ; 25
|
32 | .DB 106 ; 26
|
33 | .DB 106 ; 27
|
34 | .DB 105 ; 28
|
So, natürlich funktioniert das ganze nicht, sonst würde ich keinen neuen
Beitrag starten :).
er zeigt mir, wenn ich die Werte einlese, immer den Wert 0 oder 117 aus
der Tabelle an, obwohl ich irgendwo in der Mitte stehen sollte.
so, nun wo liegt der Fehler?
muss ich das R21 mit 2 Multiplizieren und dann zum pointer addieren?
- habe ich schon probiert, funktioniert allerdings auch nicht.
oder habe ich etwas grundlegendes an der Tabelle falsch gemacht?
Ich Danke euch schonmal im voraus für eure Hilfe.