Pendeluhr

  • @Kai

    O ja, es ist so, mein equipment ist veraltet und von der billigen sorte. Werde mich daran machen.

    Diese khazama's (chf4.--) werden von keinem studio unterstützt. Es ist eine separates programm nötig, mit dem man das hex-file abholt.

    Diese billigstrecke ist kein geitz, war eine zeit lang nötig. Jetzt geht's besser. Danke für die weiteren vorschläge.


    @Pius

    Keine ursache für eine entschuldigung, du gabst was du im moment konntest.hut.jpg

    nische

  • Gute Obig nische


    super, Du hast es geschafft und natürlich fühle ich mich ein wenig schuldig, weil ich die Fuses nicht ausprobieren konnte. Aber ich kann dich auch ein bisschen trösten, es läuft auch bei mir manchmal so. Da beginnt man etwas, das in der Vorstellung einfach umzusetzen scheint und dann stolpert man oft über ein Detailproblem. In solchen Fällen ist Ausdauer angesagt und manchmal hat man sie, manchmal nicht, was dann zu einem Schubladenprojekt wird.


    Also, meine Gratulation, du hast Ausdauer bewiesen.


    herzliche Grüsse

    Pius

  • Hmm das ist schade, dass Du so eine Mühe hattest. Eigentlich wird man in AVR -Studio darauf hingewiesen, dass der ISP-Programmierer Takt kleiner als 1/4 der eingestellten Taktfrequenz des Controllers sein soll. Da hattest du einen "blutigen" Weg.... ;).


    avr-studio-deviceprogramming.png


    Ich frage mich auch warum das externe Programm genutzt wurde. Man kann die Fuses doch direkt in AVR Studio setzen?! Oder ist das ein "spezieller" Programmer, den man in AVR Studio nicht nutzen kann? Ist vielleicht ne dumme Frage, aber ich habe so ein 20€ Teil, dass man als stk500 einbinden kann, dann läuft alles aus AVR Studio oder Platform IO raus.


    Ganz hilfreich ist auch so ein Online Fuse Calculator Fuses ATtiny85 32kHz. Dort werden auch gleich die avrdude Befehlsparameter angegeben.

    Für die ISP Geschwindigkeit müsste der Parameter -B 128 passen.


    Das mit der "runden Ablage" kannte ich noch nicht... aber zum Glück wurde sie noch nicht geleert ... Nun hast Du es ja doch hinbekommen :thumbup:.


    Gruß Kai

  • Guten Abend DIE beidenund danke für die hilfe :-)

    Uff, es war ein maraton.

    Pius und Kais letzte vorschläge führte ich nun aus. Nach dem setzen der fuses ging gar nichts mehr.

    Nach erfolglosem suchen landete der tiny85 im runden ordner.


    Natürlich nagt so etwas X/

    Dann etwa eine woche später stiess ich auf einen tipp (weiss nicht mehr wo).

    Nach dem setzen der fuses für einen 32768hz quarz ist der tiny85 nur noch mit 10kHz ansprechbar. Der arme wurde aus dem abfall geholt und mit ISP-CLK 8kHz zum leben erweckt.

    Es blieb euer c-file zu kompilieren und dann mit ISP-CLK 8kHz auf den chip zu laden.

    20200729_173432(1)_resized(1).jpg

    Funktionirt! Die led am pin 5 zeigt im sekundentakt einen sehr kurzen puls, dessen länge ich noch nicht gemessen habe.


    Zwischendurch gab es ein update der "Khazama AVR Programmer.exe"

    http://www.khazama.com/project/programmer/

    Ist das abgeholte RAR entpackt und das MSI installiert, findet man im programmordner unter anderem 3 firmware-files. Meine beiden programmer tragen den atmega8-chip und so wähle ich das hex-file für den atmega 8.


    Beim firmware-upgrade meiner beiden khazama-programmer ging ich exakt nach diesen anweisungen vor:

    https://www.instructables.com/…P-Clone-Fixing-Error-Set/

    Die firmware der khazama-programmer sind nun auch up to date.


    Na ja ... hat sich die mühe gelohnt? Das beispiel zeigt wie im mc-bereich ungeschulte den erfolg duch ein labyrint suchen müssen. Ohne inet wäre man auf verlohrenem terain.

    Heit ä schöni zyt

    nische

  • Danke für deinen Hinweis Kai

    Zitat

    Was mich an Pius Fuseeinstellungen etwas wundert der Extended Value von 0x01 ... Ich kennen den eigentlich nur als 0xFF.

    den Vorschlag habe ich vom Studio übernommen aber ob das richtig ist muss ich offen lassen. Wie gesagt, solange ich es nicht ausprobieren konnte bin ich immer unsicher.

  • Bei meinen Attiny Projekten habe ich die Fuses gesetzt wie im Screenshot zu sehen:


    Attiny85-Fuses.png


    Für das Clock Projekt würde ich es wie folgt ändern:


    Attiny85-Fuses-ext32k.png


    Also nur die LOW.SUT_CKSEL Fuse....


    Was mich an Pius Fuseeinstellungen etwas wundert der Extended Value von 0x01 ... Ich kenne den eigentlich nur als 0xFF.


    Wie das jetzt in dem anderen Programm eingestellt werden muss, weiß ich nicht. Ich benutze übicherweise AVR-Studio mit der hier gezeigten Oberfläche um die Bits zu setzen.

    Ich hätte es gerne in "echt" ausprobiert, hab aber leider keinen 32K Quarz. Allerdings kann man da, glaube ich, nicht viel falsch machen, weil es nur eine 32K Einstellung für einen 32K externen Quarz gibt.


    Die Brown-Out Detection habe ich üblicherweise aus, weil es bei batteriebetriebenen Projekten noch einmal etwas Strom spart... so wird es gesagt ;)


    Gruß Kai

  • Hallo Nische


    einfache Dinge führen immer zu Schwierigkeiten, Beim Umstellen auf den Tiny85 erhielt ich eine Warnung zum Interrupt Vector, den der Präprozessor nicht auflösen konnte. Auch ein neues Projekt, gleich von Anfang an mit dem Tiny85 löste die gleiche Warnung aus. Wie so oft -> Datenblatt lesen

    Und es zeigte sich, dass es Sinn macht, bei den Regsitern (hier Timer) immer alle Namen in der Liste aufzuführen um damit Konflikte mit Bit Namen und dem Regsiter vorzubeugen.

    Wie gesagt, ich konnte das Programm nur im Simulator testen.
    Nun zu den Fuses:


    pasted-from-clipboard.png

    Ich habe diese wie im Bild gezeigt aufgesetzt, kann aber mangels CPU nicht ausprobieren ob dies wirklich korrekt ist.

    Leider erkennt man bei deiner Abbildung nicht, wo das LSB der Fuse sein soll, aber ich würde mal davon ausgehen, dass es rechts beginnt.

    Ich würde es dann so setzen:


    pasted-from-clipboard.png


    Vielleicht schaut @Kai auch noch kurz darauf.

    viel Glück

    Pius

  • Ja, nische

    ich habe keinen Tiny85. Der Tiny85 benutzt andere Namen für das TCCR.

    Das Problem mit den Flags versuche ich mal, indem ich Atmel Studio auf den den Tiny85 umstelle. Dauert etwas, ich melde mich aber hier zurück.

    Gruss

    Pius


    PS: Mit dem Fuse Register herumzuprobieren wäre eine ganz schlechte Idee, da schnell mal die Wr/Rd Fuse erwischt wird.

  • @Pius

    Dein code vom 17. juli wurde beim compilieren mit dem attiny 85 mit einer fehlermeldung quittiert.

    Nachdem tiny85-datenblatt passte ich die rote zeile im code an.

    Code
    1. /* ATtiny26 Zeile 49 bis 55 */
    2. /* prescaler 1024 */
    3. TCCR0 = (0<<PSR0)| (1 << CS02)| (0 << CS01)| (1 << CS00);
    4. /* set timer interrupt mask register overflow interrupt enable */
    5. TIMSK = (0<<OCIE1A)| (0<<OCIE1B)| (0<<TOIE1)| (1<<TOIE0);
    6. /* set preload value */
    7. TCNT0 = T0_PRELOADVALUE;
    8. /* done */
    Code
    1. /* ATtiny85 Zeile 49 bis 55 */
    2. /* prescaler 1024 */
    3. TCCR0B = (0<<PSR0)| (1 << CS02)| (0 << CS01)| (1 << CS00);
    4. /* set timer interrupt mask register overflow interrupt enable */
    5. TIMSK = (0<<OCIE1A)| (0<<OCIE1B)| (0<<TOIE1)| (1<<TOIE0);
    6. /* set preload value */
    7. TCNT0 = T0_PRELOADVALUE;
    8. /* done */

    Jetzt habe ich aber probleme mit den fuses. Du zeigst dieses bild der einstellungen:

    https://community.hobbyelektro…attachment/476-flags-png/


    Im KazamaProgramer den ich verwende sieht die sache so aus:


    kazama1.jpgkazama2.jpgkazama3.jpg


    Da steh ich am "horeb"<X

    Ich möchte nicht meine zeit mit rumprobieren veschwenden. Kannst du mir einen hinweis geben wie ich die fuse-werte eintagen kann?


    Heb e schöns wucheend!

    nische

  • Du siehst, eine ANtwort hat nun etwas gedauert, Kai

    Mit etwa 25-30pF liegst du in etwa richtig, nur, dieser Wert ist dann bei höheren Quarz Werten vermutlich passend.

    Ich habe heute noch ein paar Versuche gemacht und staune, wie genau der Uhrenquarz ist. Meine Messungen mit C's am Quarz gegen Masse zeigen ein uneinheitliches Bild. Zwar steigt die f leicht mit hörerer Kapazität und die Streuung der f wird etwas besser. Die Gefahr aber, dass man den Oszillator abwürgt besteht ab Kapazitäten von 35pF stark an.

    Deshalb mein Rat, keine Trimmer Kapazität hinzufügen und bestenfalls noch CKOPT an oder abschalten und die Stellung benutzen, die die kleinste Zeitabweichung verursacht. In Anbetracht von Temparatur und Betriebsspannung Schwankungen würde ich mich lieber auf der sicheren Seite (dass der Osz sicher schwingt) bewegen.


    Meine Zählung ohne Trimm-C ergab einen durschnittlichen Wert von 1.0000041 Hz, was dann im Tag einer Abweichung von etwa 0.35 Sekunden entsprechen würde (habe ich richtig gerechnet?). Eine etwas schnellere Uhr entspricht der Uhrmacherregel, da in diesem Fall der Besitzer nie zu spät kommt, zumindest nicht wegen seiner Uhr.


    Gruss

    Pius

  • Das ging jetzt aber fix. Toll :thumbup:.


    Dann wäre jetzt ja noch herauszufinden, ob es sinnvoll ist CKOPT zu setzen oder nicht. Was für einen Trimmkondensator würdest Du denn empfehlen? Einen bis 25pF ? Ich habe da gar keine Erfahrung.


    Gruß Kai

  • Hallo nische


    So, ich benutzte doch den ATtiny26 (Probleme mit dem Programmieren des Chips). Ich habe anschliessend mit dem Code von Kai begonnen (er liegt immer richtig, DANKE KAI) und so angepasst, dass es für den Chip passte (timer0 habe ich benutzt). Es dauerte dann bis ich die Flags verstanden hatte, damit tatsächlich der Quarz die Frequenz bestimmte. Einen genaueren Abgleich des Quarzes könnte man mit einem Trimmer C am Quarz erreichen. Wenn ich das Flag CKOPT ändere, dann verändert sich auch die Frequenz ganz leicht. Dieses Flag schaltet intern 2 C's gegen Masse um sich die externen 22pF sparen zu können.


    Da das Programm kaum etwas zu tun hat ist dementsprechend auch das Programm sehr einfach geblieben.


    Flags.png

    Und so habe ich die Flags des Tiny gesetzt.


    Die Stromaufname beträgt bei 5V Versorgung 0.71 mA und bei 3V dann nur noch 0.36 mA, da wird Deine Spule wesentlich "teurer" sein.

    ClkCpu.jpg

    minimaler Musteraufbau


    und um die Sekunde zu prüfen benutzte ich den Frequenzzähler:


    Clk_Anzeige2.jpgClock_Check.jpg


    ClkTiny26.pngminimales Schema!

    nun müsste man nur noch den Code auf den Tiny85 anpassen.

    Gruss

    Pius

  • Ganz kurz zu deiner Frage:


    Bei Integer-Typen wird noch zwischen verschiedenen „Untertypen“

    unterschieden. Um solche Konstanten angeben zu können, gibt es Zusätze bei Angabe einer Integer-Konstante

    u oder U für Integer-Konstanten ohne Vorzeichen (unsigned)
    l oder L für lange Integer-Konstanten (long)
    ll oder LL für sehr lange Integer-Konstanten (long long)


    Beispiele:

    10L
    10LL
    10u
    10ul
    10Ul
    10ull
    /* Wert: long int 10 */
    /* Wert: long long int 10 */
    /* Wert: unsigned int 10 */
    /* Wert: unsigned long int 10 */
    /* Wert: unsigned long int 10 */
    /* Wert: unsigned long long int 10 */

    Quelle: Prof. Dr. Rudolf Berrendor, Fachhoschule Bonn-Rhein-Sieg



    Zum 1 Sec Takt: die Simulation mit dem 4313 läuft mal. Ich werde es dann gegen Abend mit dem ext. Quarz noch in HW ausprobieren.
    Der 4313 ist eine schlechte Wahl. Ich muss mir dan mal Tiny85 bestellen. Leider wird der Tiny11 vom AtmelStudio nicht in C unterstützt (nur asm) und das will ich mir im Augenblick noch nicht antun. Aber etwas Gutes hat es, man lernt jedesmal wieder etwas dazu.


    Gruss

    Pius

  • KaiR

    ja mache ich, stellte aber mit Schrecken fest, dass der ATtiny13 (den ich für den Würfel benutze) keinen ext. Quarz unterstützt und den ATtiny85 habe ich leider auch nicht in der Schublade. Was ich habe ist ein ATtiny11, ATtiny26 und ATtiny4313, die alle einen ext. Quarz unterstützen. Ich versuche es mit dem

    ATtiny11, geht es doch in erster Linie um den ext. Quarz, wobei die SW sehr simpel ausfallen wird.
    Gruss
    Pius

  • Guten Abend beide, generös wie ich da beliefert werde.:)

    Nicht zu schnell bitte, ich möchte de artikel "die genaue sekunde" zuerst durcharbeiten und erfahrungen sammeln.

    Den code von Kai lade ich gleich hiernach in's AVR-Studio - mal sehen.

    Und Pius, uhrenquarze hab ich zur verfügung

    Also vielen dank für die unterstützung. Ich melde mich dann wieder.

    nische

  • Hallo Kai


    probierst du es aus ode soll ich?
    Wenn nische die f sehr genau benötigt, dann ist es unabdingbar, den Quarz zu "ziehen". Ein Trimm C (ich glaube in Serieschaltung, hängt vom Quartz ab), damit man die Frequenz leicht verschieben kann. Ich habe das bei einem Tiny noch nie probiert, müsste aber funktionieren.

    Gruss

    Pius