Hardware-wakeup die 4.

  • Jetzt ist der Controller auf die Verwendung mit einem Quarz configuriert. Ich hab dabei die Starteinstellungen etwas langsam eingestellt, das spielt aber für diese Aufgabe hier keine Rolle.
    Die Software braucht nur in wenigen Bereichen angepasst zu werden weil sich einige Register verändert haben.
    Ich habe aber die Quarzfrequenz geändert auf 3,6864MHz weil damit das Timing besser funktioniert. Daher müssen in der Software auch einige Konstanten und Register angepasst werden. Ich werde aber die Software für 4MHz zusätzlich anbieten falls sich jemand mit 4MHz-Quarzen eingedeckt hat ;D
    Die angehängte assemblierte Firmware ist die Standardsoftware aus dem Paket (also mit automatischer Einschaltung nach Stromausfall und Einsatzmöglichkeit der Status-LED als z.B. Aufnahme-Status-LED) und ist angepasst auf den 3,6864MHz Quarz.
    Wäre schön wenn jemand das mal testen könnte.
    Die anderen Varianten und die Assembler-Files kommen später.
    Gruß
    steini

  • Hallo!


    Ich hab eine Wakup Schaltung die an deine stark angelehnt ist gebaut (AT2313 @ 4Mhz, zwei Leds, bisschen andere Pinbelegung). Die Schaltung ist am WakeUpOverLan-Stecker angeschlossen und haut soweit hin.


    Ich kann im minicom die Befehle (RON, ROF, WKM...) übertragen und die Schaltung verhält sich auch dementsprechend.... NUR, sobald ich etwas mit echo ".." > /dev/ttyS0 übertragen will, gehts nicht mehr. Also ein reines Software-Problem.


    Die ausgabe von setserial bzw. stty sieht vor und nach minicom komplett ident aus:

    Code
    1. linvdr:~# stty -F /dev/ttyS0
    2. speed 9600 baud;
    3. min = 1; time = 5;
    4. ignbrk -brkint -icrnl -imaxbel
    5. -opost -onlcr
    6. -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
    7. linvdr:~# setserial /dev/ttyS0
    8. /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4


    ich hab auch schon versucht, die Buchstaben einzeln zu senden - ändert auch nix:

    Code
    1. linvdr:~# echo -e "\n" > /dev/ttyS0
    2. linvdr:~# echo "R" > /dev/ttyS0
    3. linvdr:~# echo "O" > /dev/ttyS0
    4. linvdr:~# echo "N" > /dev/ttyS0
    5. linvdr:~# echo -e "\n" > /dev/ttyS0


    Könnte es ein altgewohntes "CRLF" vs "nur CR" bzw "nur LF" Problem sein? (Kann ich mir aber nicht vorstellen)


    Hat irgendjemand Ideen, bzw Vorschläge, was ich noch ausprobieren könnte?!


    lg Daniel



    VDR: Compaq Deskpro@300Mhz/128MbRam - LinVDR/Mahlzeit.iso - Atmel AVR WakeUp - PVR350 only
    PC: Intel HT@3Ghz/2GbRam - Kubuntu 6.10


     

  • Okay, selbst gelöst... es war wirklich ein CRLF/CR Problem... kann mir nicht vorstellen, wie des auf anderen Systemen mit echo -e "RON\n" hinhaun kann.,... ich benutze den asm source von wakeup2313_V1.1.zip


    Aber Problem hab ich jetzt schon wieder eines... Der VDR übergibt mir komisch Zeiten, für den next-Timer...


    Der Zeitpunkt ist immer konstant 589 Minuten in der Zukunft (bzw. zeigt der zweite Parameter ($delta) 36000[sek] - durch die -10 kommt man dann auf 590 und durch rundung auf 589).


    Ich vermute, dass das entweder etwas bedeutet, das ich nicht verstehe - oder dass irgendwas in der berechung seitens VDR nicht ganz passt...


    der Zugehörige src (aus vdr-1.4.3, vdr.c, zeile 1155ff) schaut so aus:


    Das hier versteh ich net ganz ... und des könnte auf die konst 3600 führen:

    Code
    1. if (timer && Delta < Setup.MinEventTimeout * 60 && ForceShutdown) {
    2. Delta = Setup.MinEventTimeout * 60;
    3. Next = Now + Delta;
    4. timer = NULL;
    5. dsyslog("reboot at %s", *TimeToString(Next));
    6. }


    kennt sich da wer besser aus?
    lg Daniel



    VDR: Compaq Deskpro@300Mhz/128MbRam - LinVDR/Mahlzeit.iso - Atmel AVR WakeUp - PVR350 only
    PC: Intel HT@3Ghz/2GbRam - Kubuntu 6.10


     

  • Hallo Daniel,
    das Problem mit dem "echo" sollte eigentlich gar keins sein. Wenn du an dem COM-Port sonst nix dran hast sollte das mit "echo" ohne "-e" oder sonst was funktionieren. Ich mußte das ja nur machen weil an dem von mir verwendetem Port gleichzeitig das LCD vom Multitainer läuft und daher immer darauf geschrieben wird sobald der VDR läuft.
    Aber das hast du ja schon gemeistert :)
    Das Problem mit den Timerzeiten die von vdr weitergegeben werden muß ich mal versuchen nachzuvollziehen. Ich hab hier die 1.4.1-3 drauf (hab momentan nicht viel Zeit) und kann nur bestätigen dass die Timerzeiten nicht immer stimmen. Bei der 1.4.1-3 ist das aber lediglich bei sehr kurzen Abständen zum Timer (so ca. bis 45 Min.) der Fall, so daß das kein wirkliches Problem darstellt. Man sollte ja sowieso den "Mindest-Event-Timeout" auf 45-60 Min. einstellen. Bei länger in der Zukunft liegenden Timern tritt das Problem nach meiner Erfahrung nicht auf.....muß das mal mit der 1.4.3 prüfen...wenn ich Zeit hab.
    Mal ne Frage: Was gibt denn vdr zurück wenn du "svdrsend.pl NEXT REL" eingibst? Wenn dann die Zeit stimmen sollte ist vielleicht was in deinem shutdown-Skript nicht ok.
    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Ich weiß - aber ich hab die Kommandstrings gleich von dir ( ? ) übernommen - also WKM, CTL, etc
    echo -e "\n\rWKM33\n\r" funktioniert jetzt einwandfrei.


    Zitat

    Mal ne Frage: Was gibt denn vdr zurück wenn du "svdrsend.pl NEXT REL" eingibst? Wenn dann die Zeit stimmen sollte ist vielleicht was in deinem shutdown-Skript nicht ok.


    Das war ja das komische - das gibt den korrekten wert zurück. Aber das shutdownskript nimmt diese variante nur, wenn es per commandozeile aufgerufen wurde. Ich hatte versucht es umzubaun, dass es auch auf SVDR zugreift, wenn es per vdr gestartet wurde. Aber da der dann schon in der shutdown routine ist, antwortet dieser nicht mehr auf die Anfrage.


    Die Quick&Dirty lösung: Ich hab einen Cronjob laufen, der jede minute eben per SVDR nachfragt, wann der nächste timer ist und den Atmel dementsprechend füttert.


    Also: man könnte sagen, es läuft.


    thx für deine Antwort - falls ich nochmal was genaueres rausfinde, werd ichs posten.


    lg Daniel



    VDR: Compaq Deskpro@300Mhz/128MbRam - LinVDR/Mahlzeit.iso - Atmel AVR WakeUp - PVR350 only
    PC: Intel HT@3Ghz/2GbRam - Kubuntu 6.10


     

  • Hallo Daniel,

    Zitat

    Ich hatte versucht es umzubaun, dass es auch auf SVDR zugreift, wenn es per vdr gestartet wurde

    wie du schon richtig bemerkt hast geht das nicht weil da schon svdrsend.pl verwendet wird.
    Nimm doch mal zum testen den shutdown-Befehl aus deinem shutdown-Skript raus und lasse dann $2 und $1 in eine Datei reinschreiben. Dann könnten wir sehen was passiert wenn vdr dein shutdown-Skript aufruft und welche Werte übergeben werden ohne dass der Rechner ausschaltet.
    Das mit dem cron-job willst du ja sicher nicht so lassen.
    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Hallo


    Zitat

    Nimm doch mal zum testen den shutdown-Befehl aus deinem shutdown-Skript raus und lasse dann $2 und $1 in eine Datei reinschreiben. Dann könnten wir sehen was passiert wenn vdr dein shutdown-Skript aufruft und welche Werte übergeben werden ohne dass der Rechner ausschaltet.


    Genauso hab ich eh debugged... Der vdr übergibt mir als ersten Parameter ein Unixtimestamp das 3600 sekunden in der Zukunft liegt und als nächster Parameter eben "3600". Das passiert auch bei Timer die ~2h in der Zukunft liegen. Was bei weit entfernten Timer passiert, weiß ich noch nicht.


    Zitat

    Das mit dem cron-job willst du ja sicher nicht so lassen.


    Derweilen ja - ich hab leider net mehr viel Zeit, Uni fängt scho wieder an :(


    Hab das ganze jetzt mal in echtbetrieb - mit Autotimer, bin schon gespannt wie das so läuft - und dass ich max. eine Minute warten muss, bis ich ausschalten kann, damit hab ich keine Probleme...


    Wenn ich mal den VDR kompiliert bekomme, dann werd ich mir genauer ansehen, in welchen if's (siehe Beitrag oben) er die Übergabezeit verändert und warum.


    Was noch eher ein Verbesserungs-Punkt wäre, was ich vielleicht mal angehen werde: den Timer vom Atmel im Count and Clear modus zu betreiben - da schaffst systemseitig mal 100% Genauigkeit. Der jetzige zyklus ist nicht genau 1min... aber so stark wird sich das nicht auf so kurze Zeitintervalle auswirken.


    lg



    VDR: Compaq Deskpro@300Mhz/128MbRam - LinVDR/Mahlzeit.iso - Atmel AVR WakeUp - PVR350 only
    PC: Intel HT@3Ghz/2GbRam - Kubuntu 6.10


     

  • Hi,
    ist alles richtig. Abweichung ist jetzt max. 5 Sek. pro Tag (gemessen).
    Hab das ja auch zunächst lediglich als Test verwendet. Da die Genauigkeit aber reicht hab ich's so gelassen.....never touch a running system ;)
    Ich seh aber schon......muß mir am WE mal die neueste vdr-Version ziehen und das Problem mit den übergebenen Timern testen. Falls du was am Code findest gib Bescheid. Kann ich dann auch testen.
    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Hi Daniel,
    hab mal die 1.4.3 compiliert und getestet. Ich kann dieses Problem hier nicht feststellen. Das läuft völlig normal und die Timer werden korrekt übergeben.....allerdings nur bei Timern die wie oben schon mal erwähnt länger als 45 Min. in der Zukunft liegen. Diesbezüglich also kein Unterschied zur 1.4.1-3.
    Schau dir nochmal dein shutdown-Skript an. Vielleicht findet sich ja da noch ein Fehler. Oder hast du eine gepatchte VDR-Version?
    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5