Led Stroboskop Programm Probleme

  • Hallo,


    Ich hab mir heute ein LED Stroboskop zusammen gelötet was ich demnächst für eine Party verwenden möchte.


    Die Schaltung Funktioniert soweit.
    PWM und DMX machen was sie sollen.


    Mein ziel ist es in 3 Bereichen der DMX Werte folgendermaßen die Wartezeit Waitms umzurechnen.
    Dafür habe ich eine Tabelle angelegt.


    0-99 -> (60.000/DMX_Wert) /2 - 30
    100-150 -> (60.000/DMX_Wert) - 30
    151-255 -> (60.000/DMX_Wert) /2 - 30


    Wie ich darauf komme?
    Ich möchte im bereich von 100-150 über Das Stroboskop genau bei jedem Beat einmal aufblinken lassen , also 100-150BPM


    Da mir der Restliche bereich aber zu langsam war habe ich diesen nochmals durch 2 geteilt.


    Der Wert 30 der abgerechnet wird kommt durch die 30ms die die LED eingeschaltet sein soll


    Ich hoffe bis hier habe ich keinen Denkfehler gemacht.



    Jetzt habe ich leider das Problem das meine Werte in der Tabelle mit der Definierung " Dim A As Byte " nicht zurecht kommt, denn die Blinkfrequenz beim DMX wert 120 ist nicht jede halbe Sekunde ein Blinken was es ja eigentlich sein müsste. Dennoch kann ich durch die verschiednen Blinkfrequenzen die Bereiche der Tabelle erkennen.
    Andere Definierungen funktionieren garnicht.


    Bis jetzt nutze ich noch den Internen Quarz des Mega88 auf 8Mhz.


    Nun zu meinem 2. Problem , wie bekomme ich den Quarz zum laufen ? Da ich bestimmt schon 10 Atmels bei der Quarzeinstellung zerschossen habe, möchte ich dieses mal vorher genau nachfragen.
    Ich habe mir im Datasheet ab Seite 28 alles angeschaut, kann den Tabellen leider trotzdem nicht entnehmen welche einstellung für mich die richtige ist.
    http://www.atmel.com/Images/doc2545.pdf


    Ich habe diesen Quarz: http://www.reichelt.de/Quarze/…3fed2b01e26050#av_tabdata


    Woher soll ich also genau wissen welche Startup time usw. ich zu nehmen habe.


    Ich Benutze den native stk500 driver von bascom.
    Da habe ich in den Fusebit Einstellungen 6bit um den Quarz einzustellen, leider weiß ich nicht ob die erste Zahl davon z.b. CKSEL3 oder CKSEL0 ist ?


    Grüße Jakob


    PS: Ich Hoffe es liest jemand bisher und kann mir helfen.

  • Zu Deinem Prob mit Waitms:


    Waitms ist ziemlich unelegant und unflexibel.
    Die Versuche, Waitms mit 'ner Variable zu "laden" habe ich persönlich aufgegeben.


    Setze doch lieber einen Zähler auf einen definierten Wert und takte den per Timer-Interrupt auf Null runter.
    Dann kann Dein Programm zwischenzeitlich auch noch was anderes machen und steckt nicht im Waitms fest.



    Zum Quarz:
    Bemühe mal Tante Google mit diesem Suchbegriff (OHNE die Anführungszeichen):
    "AVR Quarz-Einstellungen Fuse-Bits"


    Das spuckt u.a. diese Treffer aus:
    http://www.mikrocontroller.net/articles/AVR_Fuses
    http://halvar.at/elektronik/kl…r_kurs/fusebits_standard/
    http://www.grzesina.de/avr/fuse/fuse.html

  • Da ich bestimmt schon 10 Atmels bei der Quarzeinstellung zerschossen habe, möchte ich dieses mal vorher genau nachfragen.

    Besorg Dir mal einen sog. "Quarzoszillator" (sagen wir mal mit 4MHz), gibt's beim großen C, beim großen R und in der Bucht für unter nem Euro.
    Den versorgst Du mit 5V und hältst seinen Ausgang mal an den XTAL1 von Deinen verfuseten AVRs. Damit lassen sie sich meistens wieder per Programmer ansprechen.
    (Aber bitte den AVR vorher aus der Schaltung entfernen, solche Experimente am Besten nur auf'm Steckbrett... ;) )


    Ach ja, hast Du zu Deinem Quarz auch die passenden Kondensatoren (32pF) - ohne die geht nix!
    Sieht auch hier.