3 eller 6 PWM utgångar på en Avr ATMega32 och DMX512 in...
-
- Inlägg: 61
- Blev medlem: 19 november 2007, 21:43:08
- Ort: Skövde
3 eller 6 PWM utgångar på en Avr ATMega32 och DMX512 in...
Sitter här med papprena på ATMega32an och det står att den har 4 PWM utgångar... Skulle behöva 3 eller 6st 8Bit PWM...
Någon som har ett bra litet exempel på hur man får igång dem och hur man använder dem...
Är som sagt MYCKET ringrostig på microprosesorer så snälla skriv inte att jag skall läsa i papprena eller söka på nätet..
Det är till 1 eller 2 RGB utgångar för lysdioder....
Just det... Även om någon har kommit på ett bra sätt att ta emot DMX512 signaler... Hittat lite men de verkade inte 100% näjda med sina lösningar...
Någon som har ett bra litet exempel på hur man får igång dem och hur man använder dem...
Är som sagt MYCKET ringrostig på microprosesorer så snälla skriv inte att jag skall läsa i papprena eller söka på nätet..
Det är till 1 eller 2 RGB utgångar för lysdioder....
Just det... Även om någon har kommit på ett bra sätt att ta emot DMX512 signaler... Hittat lite men de verkade inte 100% näjda med sina lösningar...
-
- Inlägg: 61
- Blev medlem: 19 november 2007, 21:43:08
- Ort: Skövde
-
- Inlägg: 61
- Blev medlem: 19 november 2007, 21:43:08
- Ort: Skövde
-
- Inlägg: 61
- Blev medlem: 19 november 2007, 21:43:08
- Ort: Skövde
Micke_s: Tackar... Bra info där..... Löser nog den biten... Har inte hunnit läsa allt än men hoppas det tar upp de 88us höga signalen....
$tiff: Är det 6 utgångar du pratar om då?? Ja lysdioder är det.. Är ju inte hundra om det blir exakt... Bara det inte flimrar... Skulle helst vilja komma upp i högre frekvens pga filmkameror... 400Hz är målet men inget måste..
Är en liten fundering som jag inte vet om det fungerar:
om man har en 8bit timer som räknar tex 400*256 gånger i sekunden och sedan ligger main loopen och kollar tex 9 byte om de är högre än timern så drar de en utgång... Skulle det fungera?? Med en DMX ingång igång eller blir det för mycket arbete för en 16MHz Avr ATMega32?? Förstår någon tankesättet och kan svara på om det fungerar??
$tiff: Är det 6 utgångar du pratar om då?? Ja lysdioder är det.. Är ju inte hundra om det blir exakt... Bara det inte flimrar... Skulle helst vilja komma upp i högre frekvens pga filmkameror... 400Hz är målet men inget måste..
Är en liten fundering som jag inte vet om det fungerar:
om man har en 8bit timer som räknar tex 400*256 gånger i sekunden och sedan ligger main loopen och kollar tex 9 byte om de är högre än timern så drar de en utgång... Skulle det fungera?? Med en DMX ingång igång eller blir det för mycket arbete för en 16MHz Avr ATMega32?? Förstår någon tankesättet och kan svara på om det fungerar??
Gör ett interrupt varje gång en byte kommer in från UARTen. I denna har du en variabel som räknar antalet byte som kommer in. När denna är lika med enhetens address tar du emot så många byte som behövs i applikationen. Sen väntar du på att nästa runda börjar och nollställer variablen. Att en ny runda har startat upptäcker du genom att du får en byte som saknar stoppbit vilket de flesta UARTar har en flagga för.
För att styra många lysdioder med en uC så är PWM inte den effektivaste metoden som finns. Det krävs att du räknar upp PWM räknaren och jämför alla utgångars värde med ett kontstant intervall. Både uppdateringsfrekvensen och antalet nivåer är sen funktioner av hur korta dessa intervall är vilket gör att processorn inte hinner med så mycket mer till slut.
Kolla istället på något som kallas för diskret eller binär PWM där moduleringen sker direkt av de bitar som utgör intensiteten för dioden. Tiden som varje bit läggs ut på utgången viktas sen beroende på dess signifikans. Den minst signifikanta biten läggs ut på utgången så kort tid som möjligt. Sen läggs nästa bit ut under dubbelt så lång tid och nästa bit under fyra gånger så lång tid osv. Detta gör att processorn bara får mycket att göra precis i början för att sen avta. De flesta UARTar har ofta ett litet FIFO så moduleringen kan troligtvis ha högsta prioritet och sen kan inkommande byte tas omhand när tiden mellan uppdateringar av utgångarna ökar.
För att styra många lysdioder med en uC så är PWM inte den effektivaste metoden som finns. Det krävs att du räknar upp PWM räknaren och jämför alla utgångars värde med ett kontstant intervall. Både uppdateringsfrekvensen och antalet nivåer är sen funktioner av hur korta dessa intervall är vilket gör att processorn inte hinner med så mycket mer till slut.
Kolla istället på något som kallas för diskret eller binär PWM där moduleringen sker direkt av de bitar som utgör intensiteten för dioden. Tiden som varje bit läggs ut på utgången viktas sen beroende på dess signifikans. Den minst signifikanta biten läggs ut på utgången så kort tid som möjligt. Sen läggs nästa bit ut under dubbelt så lång tid och nästa bit under fyra gånger så lång tid osv. Detta gör att processorn bara får mycket att göra precis i början för att sen avta. De flesta UARTar har ofta ett litet FIFO så moduleringen kan troligtvis ha högsta prioritet och sen kan inkommande byte tas omhand när tiden mellan uppdateringar av utgångarna ökar.
-
- Inlägg: 61
- Blev medlem: 19 november 2007, 21:43:08
- Ort: Skövde
Maze: Tack för ideerna... Att UARTen saknar stopbit verkar bra... Hur lång tid behöver den för att den skall sakna det då? För det är la aldrig så att den får nästa byte direkt efter??
Måste nog säga att jag inte har 100 koll på hur PWM fungerar i praktiken med AVR... Det står ju att den skall ha 4 PWM utgångar... Skriver man inte in Frekvensen och sedan hur många % det skall vara hög eller låg signal?? Eller måste den göra en massa uträkningar själv hela tiden?
Ang Räknare... Går det att få en 8bit räknare som räknar 400*256ggr/s... Går det att få ett avbrott varje gång den räknar för att jämföra 6 eller 9 tal med räknaren för att lägga ut svaret på en pinne?? Med tanke på hastigheten så gör det nog inget om den tappar lite ibland... Det är ju ändå 400ggr/s som den tänder och släcker.. Det fattar la inte ögat.....
Måste nog säga att jag inte har 100 koll på hur PWM fungerar i praktiken med AVR... Det står ju att den skall ha 4 PWM utgångar... Skriver man inte in Frekvensen och sedan hur många % det skall vara hög eller låg signal?? Eller måste den göra en massa uträkningar själv hela tiden?
Ang Räknare... Går det att få en 8bit räknare som räknar 400*256ggr/s... Går det att få ett avbrott varje gång den räknar för att jämföra 6 eller 9 tal med räknaren för att lägga ut svaret på en pinne?? Med tanke på hastigheten så gör det nog inget om den tappar lite ibland... Det är ju ändå 400ggr/s som den tänder och släcker.. Det fattar la inte ögat.....