Alex_T schrieb:
Ich Teile dern Wert watt_gesamt durch 100 um die hunderter zu erhalten. Er gibt aber hier immer die 10er aus.
Alex_T schrieb:
Flackert hier meine 7 Segment Anzeige
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
Alex_T schrieb:
Ich Teile dern Wert watt_gesamt durch 100 um die hunderter zu erhalten. Er gibt aber hier immer die 10er aus.
Alex_T schrieb:
Flackert hier meine 7 Segment Anzeige
Alex_T schrieb:
Kann aus meiner sicht hier nur am tauschen des Chips liegen AtMega48(Funkuhr) gegen AtMega8.
Alex_T schrieb:
Var_ampere_adc = Var_tmp_wert / 200
Alex_T schrieb:
Var_tmp_wert = Var_watt * 100
businski schrieb:
Nein das liegt nicht am Chip das liegt anVar_tmp_anzeige = Writekey(222 , 0) ("löschen" Segmentanzeige)
Da das immer ausgeführt wird egal wie Groß var_y ist führt das zum Flackern.
(Segmentanzeige "löschen", neu schreiben, "löschen" ….)
Das mit Funktion (schau mal in die Hilfe unter Sub) und goto endif solltest du vielleicht noch einmal überdenken.
Michael schrieb:
Hier bekommst du ein fehlerhaftes Ergebnis, wenn Var_tmp_wert > 65535 ist.Alex_T schrieb:
Var_ampere_adc = Var_tmp_wert / 200
Auch huer, wenn Var_watt > 655 ist, dann gibt es ein Problem mit der Variablengröße bzw. Überlauf.Alex_T schrieb:
Var_tmp_wert = Var_watt * 100
Alex_T schrieb:
"Dword(fout bytes). Dwords are stored as unsigned 32-bit unsigned numbers ranging in value from 0 to 4294967295" Bascom hilfe.
djmsc schrieb:
Es wäre auch besser für die Segmente einen kompletten Port zu verwenden (PORTD zum Beispiel) und für die einzelnen Stellen auch wieder einen eigenen Port.
Somit kannst du die Segmente und Stellen besser ausgeben.
Beispiel
Michael schrieb:
Oh, Mann, simulier es doch einfach, wenn du mir nicht glaubst.a_45_132ca9f5
Alex_T schrieb:
Dword müsste doch Werte bis 4294967295 aufnehmen können.
200 * 1024 = 204800
Alex_T schrieb:
Ich teste es lieber direkt an der Platine mit 10w verbraucher.
Alex_T schrieb:
Experimtel ermittelt liegt es schon am Chip beim AtMega48 hab ich den selben Code übertragen und es kam zu keinem geflackere - während der Mega8 diesen Fehler zeigt.
Michael schrieb:
Var_ampere_adc = Var_tmp_wert / 200
Hier ist die erste Variable ein Word und die rechts neben dem = ein Dword.
Die Rechnung wird prinzipiell im Ergebnis ausgeführt.
Der Compiler lädt sich den Wert in die Ergebnisvariable, die läuft über, aus die Maus.
Michael schrieb:
Du hast die Taktfrequenz geprüft?
Alex_T schrieb:
Nur ich lade ja max. 1024 ; 200 mal in die Variable var_tmp_wert
Dann teile ich den Wert durch 200.
Der Wert müsste jetzt wieder kleiner als 1024 sein.
Alex_T schrieb:
Oder meinst du das es daran liegt das esn eine Gleitkommazahl werden könnte?
Alex_T schrieb:
Var_ampere_adc = Var_tmp_wert / 200
Alex_T schrieb:
Der Chip gibt sogar den korrekten Wert aus.
Alex_T schrieb:
Noch eine Frage: liegt es daran das die Speichermenge, im Gedächtnis, die Bascom für eine Variable reserviert von der definition der Variable abhängt?
Michael schrieb:
Du hast es erkannt, meinen Glückwunsch!Du hast eine wichtige Stufe auf der Leiter hoch zum Programmiererolymp genommen.
An deinem Codebeispiel sehe ich, dass du es auch verstanden hast.
Weiter so