mikrocontroller.net

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


Autor: Valentin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Steven () (ovular) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass die Semikolon weg :-)

Autor: Valentin (Gast)
Datum:

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

Autor: rechner (Gast)
Datum:

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

Autor: rechner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ein "unsigned int" zu viel quasi mein ich...

Autor: Valentin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.