Dimmen, Schalten und Wolkensimmulation
Moderator: T.Hoffmann
Hi Borax,
danke für deine Erklärung zum Thema Timer einstellen!
(der Countdown von 1:25 ist ein bissle zu früh fertig, so ca 4sec.)
Zum Thema DCF kann ich nix neues oder Besserung berichten. Es ist alles beim alten: entweder die Minute schaltet bei 28sec um, oder wenn ich die "Time$"-Funktion nehm dann läuft die Zeit ca 2sec zu schnell!
grüßle
mario
danke für deine Erklärung zum Thema Timer einstellen!
(der Countdown von 1:25 ist ein bissle zu früh fertig, so ca 4sec.)
Zum Thema DCF kann ich nix neues oder Besserung berichten. Es ist alles beim alten: entweder die Minute schaltet bei 28sec um, oder wenn ich die "Time$"-Funktion nehm dann läuft die Zeit ca 2sec zu schnell!
grüßle
mario
..der Countdown von 1:25 ist ein bissle zu früh fertig, so ca 4sec
Ist das 'linear' (also nach ca. 1 Minute schon um 2-3 Sekunden zu schnell) oder schaltet er einfach 4 Sek zu früh ab (also von Anzeige 00:04 auf 00:00)?
Wegen DCF...
Bitte neues Log erstellen (mind. 10 Minuten!)
P.S. Schon komisch... Sowohl der Countdown-Timer als auch der DCF Timer laufen zu schnell
Ist das 'linear' (also nach ca. 1 Minute schon um 2-3 Sekunden zu schnell) oder schaltet er einfach 4 Sek zu früh ab (also von Anzeige 00:04 auf 00:00)?
Wegen DCF...
Bitte neues Log erstellen (mind. 10 Minuten!)
P.S. Schon komisch... Sowohl der Countdown-Timer als auch der DCF Timer laufen zu schnell
Hast Du das alles mit nur einem µC getestet? Könnte schon sein, dass dessen interner Oszillator ein wenig 'daneben' läuft. Ggf. mal mit 16Mhz Quarz (Pollin Board) versuchen (dann $crystal=... auf 16000000 ändern, den Timer Startwert auf 3036 ändern und mit Ponyprog die Fuses entsprechend setzen). Wenn es dann immer noch zu schnell läuft, hab ich auch keine Idee mehr...
Hi,
nein !
Ich habe heute auch schon daran gedacht einen zweiten µC zu testen.
Da habe ich genau das gleiche Problem, beide Prog's(DCF + Timer) laufen eigentlich zu schnell!
Habe bis eben getestet! Nur die 16MHz noch nicht.
Das bei mir auf dem Test-Board irgendetwas kaputt ist
gute nacht
nein !
Ich habe heute auch schon daran gedacht einen zweiten µC zu testen.
Da habe ich genau das gleiche Problem, beide Prog's(DCF + Timer) laufen eigentlich zu schnell!
Habe bis eben getestet! Nur die 16MHz noch nicht.
Das bei mir auf dem Test-Board irgendetwas kaputt ist
gute nacht
Glaube ich eher nicht. Der interne Oszillator hat problemlos 5% Abweichung von der vorgegebenen Frequenz von 8MHz (und das auch noch Betriebsspannungs- und Temperaturabhängig - siehe Datenblatt Seite 270 Fig. 170: Oscillator Frequency vs. Temperature). Da würde ich nicht allzu viel drauf geben. Dafür gibt es Quarze. Damit sollten die Abweichungen vom Takt (Quarzfrequenz) weit unterhalb von 0.1% liegen. Wenn Du für Deinen Belichtungstimer keinen Quarz verwenden willst, dann reicht auch eine stabile Betriebsspannung (7805 o.ä.), halbwegs gleich bleibende Betriebstemperatur (25°+/-5°) und ein wenig Nachkalibrieren am Timer-Startwert. Also Schaltung fertig aufbauen (ATMega mit Fassung einbauen), Timer z.B. exakt 10 Minuten laufen lassen und Differenz zur 'realen' Laufzeit in % berechnen. Mit dieser prozentualen Abweichung den Timer Startwert korrigieren:Das bei mir auf dem Test-Board irgendetwas kaputt ist
Theoretisch: Zielzeit: 1 Sekunde; dafür erforderliche Timertakte: 1/0,000032 = 31250; Überlauf bei 65536 => der Timer muss mit dem Startwert 65536 - 31250 = 34286 starten
Abweichung z.B. 5% =>
Ein Timertakt ist nicht 0,000032 Sekunden sondern 5% weniger also 0,0000304 Sekunden. Oben eingesetzt: 1/0,0000304 = 32895 ; Überlauf bei 65536 => der Timer muss mit dem Startwert 65536 - 32895 = 32641 starten
Programm anpassen, Chip neu programmieren und wieder testen.
Hallo
beim Timer-Prog bin ich jetzt
bei diesem Wert angekommen, und es kommt meine anderen Stopp-Uhren sehr sehr Nahe.
Aber ich konnte nur mit 4:00min testen, weil ich keine andere Zeiten über 4:00 einszellen kann.
gruß
Ps: kannst du einen blick auf dieses
viewtopic.php?p=115178#p115178
werfen, da will keiner antworten.
beim Timer-Prog bin ich jetzt
Code: Alles auswählen
Timer1 = 32800 ' 34286 Aber ich konnte nur mit 4:00min testen, weil ich keine andere Zeiten über 4:00 einszellen kann.
gruß
Ps: kannst du einen blick auf dieses
viewtopic.php?p=115178#p115178
werfen, da will keiner antworten.
Warum? Ich hab es eigentlich so in geplant, dass Zeiten bis 59:59 (also fast eine Stunde) möglich sind... Wenn das nicht geht, was passiert genau wenn Du versuchst mehr als 4 Minuten einzustellen?Aber ich konnte nur mit 4:00min testen, weil ich keine andere Zeiten über 4:00 einszellen kann.
Also wenn ich jetzt zum Beispiel 5:00min einstelle dann kommt nachher in der Anzeige 0:44
Wie und was hast du damit gemeint:
In der Zeile soll das gar nicht angezeigt werden, sondern ein paar Zeilen weiter oben:
Wo sollte das denn hin verschoben werden?
Wie und was hast du damit gemeint:
In der Zeile soll das gar nicht angezeigt werden, sondern ein paar Zeilen weiter oben:
Code: Alles auswählen
If Timeron = 1 Then
If Disptime = 1 Then
Disptime = 0
Locate 2 , 1
Lcd "Restzeit: " ; Formatzeit(runtime) ; " Min:Sek"
End If
Klingt irgendwie nach Typisierungsproblem... Die Zeit wird ja in den Word-Variablen Settime und Runtime gespeichert.
Zu Anzeigezwecken wird daraus Minute:Sekunde (Byte Variable: Setmin und Setsek) berechnet:
Setmin = Settime \ 60
Setsek = Settime Mod 60
Und nach ggf. Änderung von Setmin oder Setsek wieder Settime zusammengesetzt:
Settime = Setmin * 60
Settime = Settime + Setsek
Ich befürchte jetzt, dass Bascom hier bei Settime = Setmin * 60 die Rechnung fälschlicherweise mit der Typisierung Byte (ausgehend von der Byte Variable Setmin) durchführt und daher alle Ergebnisse > 256 (5*60=...) verwirft, weil sie nicht mehr in ein Byte passen. Ähnliches gilt an anderen Stellen im Code.
Weil wir hier aber keine Platzprobleme haben, einfach überall auf Word-Variablen gehen, dann sollte das Problem 'verschwinden'.
Also das alles ändern:
$lib "mcsbyte.lbx" <- Löschen oder auskommentieren
Dim Setmin As Word <- Ändern von Byte auf Word
Dim Setsek As Word <- Ändern von Byte auf Word
und ganz unten im Code:
Local Bmin As Word <- Ändern von Byte auf Word
Local Bsek As Word <- Ändern von Byte auf Word
Zu Anzeigezwecken wird daraus Minute:Sekunde (Byte Variable: Setmin und Setsek) berechnet:
Setmin = Settime \ 60
Setsek = Settime Mod 60
Und nach ggf. Änderung von Setmin oder Setsek wieder Settime zusammengesetzt:
Settime = Setmin * 60
Settime = Settime + Setsek
Ich befürchte jetzt, dass Bascom hier bei Settime = Setmin * 60 die Rechnung fälschlicherweise mit der Typisierung Byte (ausgehend von der Byte Variable Setmin) durchführt und daher alle Ergebnisse > 256 (5*60=...) verwirft, weil sie nicht mehr in ein Byte passen. Ähnliches gilt an anderen Stellen im Code.
Weil wir hier aber keine Platzprobleme haben, einfach überall auf Word-Variablen gehen, dann sollte das Problem 'verschwinden'.
Also das alles ändern:
$lib "mcsbyte.lbx" <- Löschen oder auskommentieren
Dim Setmin As Word <- Ändern von Byte auf Word
Dim Setsek As Word <- Ändern von Byte auf Word
und ganz unten im Code:
Local Bmin As Word <- Ändern von Byte auf Word
Local Bsek As Word <- Ändern von Byte auf Word
Sorry,
hatte den vergessen
hatte den vergessen
Code: Alles auswählen
$lib "mcsbyte.lbx" <- Löschen oder auskommentieren
Jup bin noch am leben muss das Projekt leider noch ein wenig ruhen lassen , zur zeit muss ich die Prioritäten ein wenig anders setzen . Nach 10-12 Stunden auf Arbeit will die Familie noch was von mir hoffe das ändert sich bald wieder .
Hallo,
OK, das kann ich verstehen Alex. Habe auch Kinder, leben aber schon länger bei der Mutter! Ich habe damit kein Problem. Bei mir steht im Moment alles auf den Kopf. Stehe kurz vor einem Umzug, muß nur noch die neue Wohnung renovieren! Also nicht wundern, wenn von mir nix mehr kommt!
Ich hoffe nur das es mit dem neuen DSL-Anschluß alles klappt und ab nächsten Monat funktioniert.
Grüßle
melde mich wieder
OK, das kann ich verstehen Alex. Habe auch Kinder, leben aber schon länger bei der Mutter! Ich habe damit kein Problem. Bei mir steht im Moment alles auf den Kopf. Stehe kurz vor einem Umzug, muß nur noch die neue Wohnung renovieren! Also nicht wundern, wenn von mir nix mehr kommt!
Ich hoffe nur das es mit dem neuen DSL-Anschluß alles klappt und ab nächsten Monat funktioniert.
Grüßle
melde mich wieder
Hallo,
bin jetzt endlich in meiner neuen Bude, aber noch nicht ganz fertig. und schon steht wieder eine kleine reise für zwei wochen an.
bis ich wieder soweit bin etwas in dieser angelegenheit hier zu machen kann also noch bissle dauern.
bis demnächst
grüßle
mario
bin jetzt endlich in meiner neuen Bude, aber noch nicht ganz fertig. und schon steht wieder eine kleine reise für zwei wochen an.
bis ich wieder soweit bin etwas in dieser angelegenheit hier zu machen kann also noch bissle dauern.
bis demnächst
grüßle
mario
Hallo 
habt ihr das mal mit dem OSCCAL Wert versucht einzustellen?
Damit wird der interne Oszillator auf die Taktfrequenz kalibriert.....
Den Osccal Wert kann mit AVRStudio ausgelesen werden, ich weiß nicht, ob Ponyprog das auch kann....
Damit bekommst du auf jeden Fall mal nen sauber kalibrierten Takt...
Standartmäßig beim Reset liest der ATMega8 ja den OSCCAL Wert für den 1 MHz Takt ein,
die anderen Werte müssten per Programmroutine ausgelesen und dem Register OSCCAL übergeben werden...
Sinnig wäre es aber, den Wert einmalig auszulesen, und im EEprom abzulegen, und diesen dann nach dem Start auszulesen und zu übergeben.
Weitergehende Infos (allerdings nicht zu BASCOM) : http://www.mikrocontroller.net/topic/27358
Nur mal so als Denkansatz
Grüße
Tom
habt ihr das mal mit dem OSCCAL Wert versucht einzustellen?
Damit wird der interne Oszillator auf die Taktfrequenz kalibriert.....
Den Osccal Wert kann mit AVRStudio ausgelesen werden, ich weiß nicht, ob Ponyprog das auch kann....
Damit bekommst du auf jeden Fall mal nen sauber kalibrierten Takt...
Standartmäßig beim Reset liest der ATMega8 ja den OSCCAL Wert für den 1 MHz Takt ein,
die anderen Werte müssten per Programmroutine ausgelesen und dem Register OSCCAL übergeben werden...
Sinnig wäre es aber, den Wert einmalig auszulesen, und im EEprom abzulegen, und diesen dann nach dem Start auszulesen und zu übergeben.
Code: Alles auswählen
ReadEEPROM, Wert, Adresse
' Bitte Adresse angeben, an welcher der Wert hinterlegt ist
OSCCAL = Wert
'Schreiben ins EEprom :
WriteEEProm Wert, Adresse
Weitergehende Infos (allerdings nicht zu BASCOM) : http://www.mikrocontroller.net/topic/27358
Nur mal so als Denkansatz
Grüße
Tom
Ist mir durchaus bekannt, funktioniert unter Bascom auch nicht viel anders (hab ich für eine Soft-RS232 Übertragung auch schon verwendet). Hier für diesen Fall war es aber einfacher das über den Timer-Startwert zu ändern. Man muss eine 'echte' Kalibrierung ja sinnvollerweise bei gegebener Betriebsspannung durchführen und zwei 7805 o.ä. haben auch nicht zwingend eine identische Ausgangsspannung (Min: 4.8V max. 5.2V). So gesehen bringt es nicht soo viel, den 'korrekten' Osccal Wert auszulesen und zu verwenden.
Hallo @Borax,
nach langen hin und her bei mir, melde ich mich endlich hier zurück!
Meine Bastelsachen (den BLG-Timer und DCF-Modul) auch mal ausgepackt, und da war schon das nächste Problem war da. Hier kommt absolut keine DCF-Signale an in meiner Wohnung.
Da habe ich die letzten paar wochen und monate viel im internet gestöbert nach steuerrungen für mein vorhaben und da bin ich auf das hier gestossen
http://www.aquaristic.net/gembird-silve ... s-usb.html
Dabei würde eventuell nur noch ein problem bleiben, und zwar die Led-Grundbeleuchtung und die Nachtbeleuchtung(Mondlicht) Hoch-dimmen und bei Ausschaltzeit langsam ausgehen.
Gruß Mario
nach langen hin und her bei mir, melde ich mich endlich hier zurück!
Meine Bastelsachen (den BLG-Timer und DCF-Modul) auch mal ausgepackt, und da war schon das nächste Problem war da. Hier kommt absolut keine DCF-Signale an in meiner Wohnung.
Da habe ich die letzten paar wochen und monate viel im internet gestöbert nach steuerrungen für mein vorhaben und da bin ich auf das hier gestossen
http://www.aquaristic.net/gembird-silve ... s-usb.html
Dabei würde eventuell nur noch ein problem bleiben, und zwar die Led-Grundbeleuchtung und die Nachtbeleuchtung(Mondlicht) Hoch-dimmen und bei Ausschaltzeit langsam ausgehen.
Gruß Mario
Na also!
1. Geht mir auch nicht anders... Ich hab vor einigen Wochen ein Programm zum Auswerten der CLIP (Telefonnummer) geschrieben. Vorlage war ein C-Programm aus dem I-Net. Bis das richtig rund gelaufen ist, hat es bestimmt vier Wochen gedauert. Es gilt was auch Sailor schon gesagt hat: So was sollte man als Herausforderung ansehen, und sich auf alle Fälle genügend Zeit dafür einräumen um die (garantiert auftretenden!) Probleme in Ruhe lösen zu können.
2. Du bekommst ja hier reichlich Hilfe. Gerade wenn es um Software-Probleme geht, die kann man prima hier im Forum zusammen lösen. Bei Hardware ist das wesentlich schwieriger... Ich kann nicht einfach bei Dir vorbeikommen und Nachmessen wo das Problem ist.
=> Also: Nur Mut!
Was meinst Du damit? Funktioniert es nicht, oder hast Du nur Sorge, dass Du nicht in der Lage bist, fehlerfreie Programme zu schreiben? Falls letzteres:nur mit dem Bascom komm ich irgendwie nicht wirklich klar!
1. Geht mir auch nicht anders... Ich hab vor einigen Wochen ein Programm zum Auswerten der CLIP (Telefonnummer) geschrieben. Vorlage war ein C-Programm aus dem I-Net. Bis das richtig rund gelaufen ist, hat es bestimmt vier Wochen gedauert. Es gilt was auch Sailor schon gesagt hat: So was sollte man als Herausforderung ansehen, und sich auf alle Fälle genügend Zeit dafür einräumen um die (garantiert auftretenden!) Probleme in Ruhe lösen zu können.
2. Du bekommst ja hier reichlich Hilfe. Gerade wenn es um Software-Probleme geht, die kann man prima hier im Forum zusammen lösen. Bei Hardware ist das wesentlich schwieriger... Ich kann nicht einfach bei Dir vorbeikommen und Nachmessen wo das Problem ist.
=> Also: Nur Mut!


