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.
$regfile = "m88def.dat"
$crystal = 8000000
Config Portd.6 = Output
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 1
Config Dmxslave = Com1 , Channels = 40 , Start = 38 , Store = 2
Dim A As Byte
Dim B As Integer
Dim C As Integer
Enable Interrupts
Enable Timer0
Do
A = Lookup(_dmx_received(2) , Dta)
B = _dmx_received(1)
C = 30
Ocr0a = B
Waitms C
Ocr0a = 0
Waitms A
Loop
End
Dta:
Data 29986 , 14986 , 9986 , 7486 , 5986 , 4986 , 4272 , 3736 , 3320 , 2986 , 2714 , 2486 , 2294 , 2130 , 1986 , 1862 , 1752 , 1654 , 1566 , 1486
Data 1416 , 1350 , 1290 , 1236 , 1186 , 1140 , 1098 , 1058 , 1020 , 986 , 954 , 924 , 896 , 868 , 844 , 820 , 798 , 776 , 756 , 736
Data 718 , 700 , 684 , 668 , 654 , 638 , 624 , 612 , 598 , 586 , 574 , 564 , 552 , 542 , 532 , 522 , 512 , 504 , 494 , 486 , 478 , 470 , 462
Data 456 , 448 , 442 , 434 , 428 , 422 , 416 , 410 , 404 , 398 , 392 , 386 , 382 , 376 , 372 , 366 , 362 , 356 , 352 , 348 , 344 , 340 , 336
Data 332 , 328 , 324 , 320 , 316 , 312 , 310 , 306 , 302 , 298 , 296 , 292 , 290 , 572 , 566 , 560 , 554 , 548 , 544 , 538 , 532 , 528 , 522
Data 518 , 512 , 508 , 502 , 498 , 494 , 490 , 484 , 480 , 476 , 472 , 468 , 464 , 460 , 456 , 452 , 448 , 444 , 440 , 438 , 434 , 430 , 426
Data 424 , 420 , 416 , 414 , 410 , 406 , 404 , 400 , 398 , 394 , 392 , 388 , 386 , 382 , 380 , 378 , 374 , 372 , 186 , 184 , 183 , 182 , 180
Data 179 , 178 , 176 , 175 , 174 , 173 , 172 , 171 , 170 , 169 , 168 , 167 , 166 , 165 , 164 , 163 , 162 , 161 , 160 , 159 , 158 , 157 , 156
Data 155 , 154 , 153 , 152 , 151 , 150 , 149 , 148 , 147 , 146 , 145 , 144 , 143 , 142 , 141 , 140 , 139 , 138 , 137 , 136 , 135 , 134 , 133
Data 132 , 131 , 130 , 129 , 128 , 127 , 126 , 125 , 124 , 123 , 122 , 121 , 120 , 119 , 118 , 117 , 116 , 115 , 114 , 113 , 111 , 110 , 109
Data 108 , 107 , 106 , 105 , 104 , 103 , 102 , 101 , 100 , 99 , 98 , 97 , 96 , 95 , 94 , 93 , 92 , 91 , 90 , 89 , 88 , 87 , 86
Data 85 , 84 , 83 , 82 , 81 , 80 , 79 , 78 , 77
Alles anzeigen
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.