Forum: Mikrocontroller und Digitale Elektronik Lookup-Fehler mit Mega32


von DO9XE (Gast)


Lesenswert?

Hallo zusammen,

ich habe für ein UKW-Sender-Projekt (2m-Band FM ;) ) einen ATmega32 als 
Controller für die 1.ZF verwendet. Der Mega32 bekommt über einen 
Seriellen Bus die Ausgangsfrequenz des Senders und schaut dann in einer 
Lookup-Tabelle nach, welchen wert die ZF haben muss und berechnet dann 
den Register wert für den DDS-Chip. Um zu überprüfen, ob er die Werte 
richtig ausliest habe ich erst mal folgenden Code benutzt (ich habe mal 
das Grundgerüst weggelassen):
1
Do
2
Input Mhz
3
4
select case Mhz 'aus der Variablen für die WunschFrequenz vergleichen
5
6
case "Freq.1"
7
Fq = lookup(stelle, datensatz1) 'stelle und datensatz stehen hier nur als ersatz
8
9
case "Freq.1"
10
Fq = lookup(stelle, datensatz2)
11
end select
12
13
print Fq
14
15
Loop
16
end
17
18
'Lookup Tabelle
19
datensatz1:
20
data stelle , stelle1 , stelle2
21
22
datensatz2:
23
data stelle , stelle1 , stelle2

Die Komplette Lookup-Tabelle hat einen Umfang von 19 Datensätzen mit 20 
werten. für jeden wert habe ich einen eigenen Lookup Befehl, da es keine 
lineare Zuweisung der Tabelle zu der Wunschfrequenz ist.

Mein Problem ist nun folgendes:
Wenn ich über seriell einen Wert hineingebe kommt nur bei einer Zahl der 
richtige Wert zurück, da diese in einer extra spalte der lookup-Tabelle 
ist, sonst kommt meistens 2056 oder eine anderer wert im Bereich von 
-30000 bis +30000 zurück, was definitiv nicht die ZF Werte sind.

Hat jemand eine Ahnung, warum ich nichts sinnvolles zurück bekomme und 
wie ich das lösen kann? Ist der Ram vom µC zu klein oder ist das 
außerhalb der Maximalgröße für lookup-Tabellen? Ich bin mit meinem 
Latein am ende :P

von DO9XE (Gast)


Lesenswert?

Das Problem hat sich gelöst. nach einem Wochenende voller Google und 
Freunde fragen lag es an einer Fehlerhaften Zuweisung der Variablen. Man 
muss nämlich eine Deklaration vor oder hinter den wert setzen, zum 
Beispiel ein Ausrufezeichen für einen Single und so weiter. Schade, dass 
keiner geantwortet hat :/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.