Sekunden mittels Mega16 zählen

  • Hallo!


    Habe mal wieder ne Frage zu µC:


    Also ich hab nen Mega16, der mit internem Oszilator auf 8MHz laufen soll. Dann noch nen 8bit Tiimer mit Prescale = 8.
    Wenn ich mir das so durchrechne bekomme ich ne "Timer_isr-Frequenz" von 3906,25 Hz heraus, also alle 0,39ms einen Überlauf vom Timer.
    Nun sage ich, ich will jede Sekunde einen Wert um 1 erhöhen, also die Sekunden zählen.
    Muss ich dann das ganze laut meinen Berechnungen so machen, dass ich bei jedem 2564en Überlauf (1000ms / 0,39ms) um eins erhöhe?


    Bin ich da richtig mit meinen Berechnungen?


    Hoffe ich hab das ganze richtig verstanden...

  • Also wenn du einen Sekundentimer willst, dann würde ich vorschlagen du nutzt den Timer im CTC Mode. Wenn du nämlich noch einen anderen Timer nutzt, dann stimmt das bald nicht mehr.


    Wie der CTC Mode in BASCOM funktioniert, kann man in der Hilfe nachschlagen. ;)

    Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
    Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum. :D

  • Ok das Problem mit den PWM Ausgängen ist gelöst - lag wohl an der Software: Hatte zwar Bascom-AVR geladen, aber das Prog hies dann "Micro-IDE" - dachte erst "wohl umbenannt", nachdem mir das aber keine Ruhe lies zog ich mir ne aktuelle von der MCS und geht.


    So zum Timer - finde leider nix zum Thema CTC in der Bascom Hilfe, hätte doch gerne, dass das so genau wie möglich geht, da das Ganze doch das ganze Jahr am Netz hängt und funktionieren sollte. Bitte um Hilfe. Im Netz fand ich auf die schnelle auch nur ASM Codes, also nix für mich.

  • Ich hab das zwar grad nicht genau im Kopf, aber wenn Du die 4 Hardware-PWMs verwendest, sind beim Mega16 alle 3 Timer belegt. Deshalb bin ich beim SEDU auf Software-PWM gegangen. Allerdings weiß ich nicht, ob die Timer-Frage und PWM zu ein und demselben Programm gehören sollen.

  • Naja, aber

    hätte doch gerne, dass das so genau wie möglich geht, da das Ganze doch das ganze Jahr am Netz hängt und funktionieren sollte

    und

    Also ich hab nen Mega16, der mit internem Oszilator auf 8MHz laufen soll.

    verträgt sich dann auch nicht so ganz... ;)


    also auf jeden Fall nen Quarz hin, auch damit wirst Du innerhalb von einem Jahr schon Abweichungen haben...


    ansonsten geht da dann wirklich nur noch SW-PWM (was ja aber auch kein Problem ist), weil wenn Du nen Timer per CTC bis 156 zählen lässt, kannst Du den nicht mehr für HW-PWM nehmen...


    was soll das denn genau werden..? - ist da noch ein bisschen Platz...?


    man könnte z.B. extern nen Oszi mit Uhrenquarz aufbauen, Teiler dran, genau 1x in der Sekunde nen Puls an einen Interrupt-Eingang, und in der ISR dann die Sekunden hochzählen...


    evtl. hast Du ja noch so ne billige mechanische Quarzuhr rumliegen...? - da ist nix weiter als ein Schrittmotor drin, der eben von ner Schaltung mit Quarz 1x pro Sekunde nen Impuls bekommt - diese könnte man dann auch verwenden, ist wohl einfacher und sogar kleiner als ne selbst gebaute... und falls Du irgendsoein Teil (Werbegeschenk o.ä.) eh' noch rumliegen hast, auch noch billiger...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • also auf jeden Fall nen Quarz hin, auch damit wirst Du innerhalb von einem Jahr schon Abweichungen haben..


    Das schon mal das erste Problem - Platine is schon fertig, OHNE Quarz, will auch nich noch mal ne neue ätzen. Benny hat das doch mit seinem Mini-RGB-Fader auch hingekriegt beim AQ Programm - ohne CTC wie ich gesehen hab. Ich sag mal, wenns n halbes Jahr so annähernd genau ist passt das ja, dann ist sowieso Sommer-/Winterzeit Umstellung. Wie hat er das gemacht? Werd aus seinem Code nicht ganz schlau und blind kopieren will ich nicht...


    was soll das denn genau werden..? - ist da noch ein bisschen Platz...?


    Mein AQ RGBW Fader solls werden - Platz im Flash ist genug, auf der Platine allerdings nicht -.-


    Nachteile:
    -So ziehmlich alles andere


    Was ist "so ziemlich alles andere"? Bitte um nähere Infos.


    Will euch nicht unbedingt nerven damit, aber für weiter Hilfe wär ich euch wirklich dankbar.


    lg
    Tommy

  • Das schon mal das erste Problem - Platine is schon fertig, OHNE Quarz, will auch nich noch mal ne neue ätzen.

    Ja, und warum fragst Du dann nicht *vorher*, statt einfach drauf los zu basteln, und dann mit den Problemen daher zu kommen.... ?(


    Irgendwas wo's auf's timing unkommt it dem internen Oszi zu machen, ist praktisch immer ne schlechte Idee!

    Benny hat das doch mit seinem Mini-RGB-Fader auch hingekriegt beim AQ Programm - ohne CTC wie ich gesehen hab.

    Ja, da läuft das aber (m.W.) auch anders: da ist noch ne normale Schaltuhr davor, die schaltet das Teil in der Früh ein, dann spult es sein Tagesprogramm ab (dabei ist's nun völlig egal, ob der "Sonnenuntergang" 5 Sekunden früher oder später startet), und dann wird's kurz wieder abgeschaltet, also 1x pro Tag durch ne externe Uhr synchronisiert...


    nur so mit internem Oszi und ein halbes Jahr durch laufen, wird das nicht funktionieren... kann man nicht so pauschal sagen, aber paar Prozent Abweichung ist da auf jeden Fall drin, kannst Dir ja ausrechnen, nur 1% Abweichung macht schon 43 Stunden Abweichung im halben Jahr!


    was Du noch machen könntest, wenn dieTemperatur halbwegs stabil bleibt, den internen Oszi kalibrieren - da brauchst Du halt nen Frequenzzähler o.ä., um die 8,00000 MHz genau einzustellen... ;)


    (Oder eben auch durch ne externe Schaltuhr synchronisieren, hat den zusätzlichen Vorteil, dass das Ding in der Nacht komplett aus ist...)


    Nachteile der SW-PWM:


    • *etwas* aufwändiger (man muss halt in ner Timer-ISR ne Variable hochzählen, diese mit der Helligkeit vergleichen, je nachdem LED an oder aus - statt nur die Helligkeit in ein Register zu schreiben)


    • nur niedrigere PWM-Frequenz erreichbar - in Assembler für ein paar (meinetwegen 9) Kanäle sind aber auch 500 Hz drin, das reicht wohl dicke (bei mir immer 244 Hz, hätte noch nie Probleme damit gehabt..)


    • Prozessor wird stärker "belastet", da er ja regelmäßig die Timer-ISR ausführen muss - da kann man bisschen rumspielen, höhere PWM-Frequenz und mehr Prozessorlast, oder niedrigere PWM-Frequenz und mehr "Luft" für anderes... bei meinem 3-Kanal-DMX-Receiver gehen z.B. (eben mit 244 Hz PWM-Frequenz) ca. 10% der Rechenleistung für die PWM drauf, da langweilt sich das Teil aber trotzdem die meiste Zeit... je Kanal mehr dann 2 % drauf, bei dem 30-Kanal-Receiver sind's also insg. ca. 70% nur für die PWM, die 30% Rest reichen aber immer noch dicke für alles mögliche (DMX-Empfang, Standalone-Programme...)

    das war's dann auch schon mit den Nachteilen...


    EDIT: Werte oben gelten für 16 MHz - ist bei mir "Standard" - für 8 MHz dann eben die Hälfte, und ob's dann mit Bascom überhaupt noch vernünftig geht k.A.

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    2 Mal editiert, zuletzt von Pesi ()

  • Ja, und warum fragst Du dann nicht *vorher*, statt einfach drauf los zu basteln, und dann mit den Problemen daher zu kommen....


    Naja WEIL eben bei seinem Fader auch kein Quarz verbaut war - Asche auf mein haupt :(


    Ja, da läuft das aber (m.W.) auch anders:


    Werd ich wohl auch so machen dann... Eigentlich wollt ichs ja so machen, dass das Mondlicht immer schwach leuchtet - wird wohl nix draus...

  • Ja, hm, jetzt hatte ich noch kurz editiert, hast Du dann wohl übersehen...


    Du musst das Teil ja nicht die ganze Nacht ausschalten - reicht ja, wenn morgens kurz mal der Strom weg ist (10 min., oder was Du als kleinste Zeit an Deiner Schaltuhr einstellen kannst), damit das Teil jeden Tag neu startet... geht ja nur darum, dass es eben von ner "richtigen" Uhr synchronisiert wird. 24 Stunden läuft das schon ohne spürbare Abweichung durch.


    also kein Problem, das Mondlicht trotzdem zu machen ;)

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!