Forum: Mikrocontroller und Digitale Elektronik Programm funktioniert nur in der Simulation!


von Valentin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo  zusammen.

Ich bin dabei ein LC-Messgerät zu bauen, und vielleicht kann mir jemand 
von euch ein paar Tipps geben, wie man dieses Programm in die Praxis 
umsetzt.

Wenn ich die Frequenzen einzeln messe, kann ich dann mit dem 
Taschenrechner die richtige Kapazität ausrechnen.
Aber messe ich diese mit "LC-Messgerät"-Programm, sind die Frequenzen um 
65536 größer, und als Kapazität kommt immer der Wert 16776260, was man 
auch als 0-956 ausdrücken kann. Aber in der Simulation kommt keine null 
bei der Division raus.

Wenn ich mit diesem Teil des Programms(im Hintergrund) die Frequenzen 
messe, kommen erst nach dem ich zwei Mal die Eins sende, die richtige 
Frequenzen raus. Aber der Wert 16776260 bleibt.

;        sei

;Lösche Register TCNT1 -> !!! Zuerst TCNT1H dann TCNT1L
;anfang:               clr  tcnt1h_l
;        out  TCNT1H, temp0
;        out  TCNT1L, temp0


;Warteschleife

;Sollschleifenanzahl
;=(Wartezeit*Quarzfrequenz)/4
;=zahl_1*zahl_2*zahl_3 -> siehe Faktor3.bas
;        clr  zahl_3
;loop1:  clr  zahl_2
;loop2:  clr  zahl_1
;loop3:  inc  zahl_1
;        cpi  zahl_1, 250
;        brne loop3
;        inc  zahl_2
;        cpi  zahl_2, 185
;        brne loop2
;        inc  zahl_3
;        cpi  zahl_3, 75
;        brne loop1


;Der Wert des TCNT1-Register wird ausgelesen
;        in   einer_low, TCNT1L
;        in   einer_high, TCNT1H
;        mov  einer_high_low, tcnt1h_l
;        mov  a1, einer_low
;        mov  a2, einer_high
;        mov  a3, einer_high_low

Ich Danke euch für jede Kritik, Tipps und Hilfe.

von Steven (. (ovular) Benutzerseite


Lesenswert?

Lass die Semikolon weg :-)

von Valentin (Gast)


Lesenswert?

Das ist mir schon klar, aber wieso ist die Frequenz beim ersten Mal um 
65536 größer als sie sein soll?

von rechner (Gast)


Lesenswert?

2 exp 16 ist zufällig 65536,
irgendwo nen variablen überlauf oder so?
kann kein asm

von rechner (Gast)


Lesenswert?

also ein "unsigned int" zu viel quasi mein ich...

von Valentin (Gast)


Lesenswert?

OK, wenn wir also die Frequenz für kurze Zeit außer acht lassen, d.h. 
ich sende zwei Mal die Eins und dann die Zwei, kann ich aber nicht 
nachvollziehen wieso für Cx der Wert 16776260 angezeigt wird. Ich habe 
die Berechnung Schritt für Schritt nachvollzogen und kontrolliert. Für 
Cx=1nF kommt 0x777 -> 955pF raus.
Es ist bestimmt ein kleiner Fehler aber ich als Anfänger kenne 
wahrscheinlich diesen Fehler noch nicht und kann ihn deshalb nicht 
erkennen.
Hoffentlich findet ihn einer von euch.

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.