PWM - nybörjarfråga
PWM - nybörjarfråga
Har en liten fråga angående PWM. Tänkte jag skulle testa få en RGB-led att visa diverse olika blandningar av färger, och sedermera även mjukt skifta mellan olika färger. Har förstått att jag skall använda PWM till detta..
Kollade i databladet för 18F4550 som jag tänkte använda då jag har en drös av dessa. Men om jag förstår det rätt så finns det enbart CCP1 och CCP2, RGB-leden har ju tre dioder... Hade hoppats på att det skulle finnas möjlighet att styra alla tre strömmarna.
Så min fråga är delvis om jag måste fortsätta läsa databladet mer noga. Går det PWM:a valfria I/O-pinnar? (Min rgb-led har gemensam anod så det blir ingångar som styr strömmarna, borde inte spela någon roll.)
Undrar även om det finns någon bra sida där man kan lära sig lite mer om att koda picar/hur de fungerar rent allmänt, förutom datablad.
Kanske skall tillägga att jag kodar i microC.
Kollade i databladet för 18F4550 som jag tänkte använda då jag har en drös av dessa. Men om jag förstår det rätt så finns det enbart CCP1 och CCP2, RGB-leden har ju tre dioder... Hade hoppats på att det skulle finnas möjlighet att styra alla tre strömmarna.
Så min fråga är delvis om jag måste fortsätta läsa databladet mer noga. Går det PWM:a valfria I/O-pinnar? (Min rgb-led har gemensam anod så det blir ingångar som styr strömmarna, borde inte spela någon roll.)
Undrar även om det finns någon bra sida där man kan lära sig lite mer om att koda picar/hur de fungerar rent allmänt, förutom datablad.
Kanske skall tillägga att jag kodar i microC.
MikroC.... bra!
PWM'a valfri pinnar: inte med hårdvaru-PWM'en.
MEN: mjukvaru-PWM: jepp, plätt-lätt!
Då ögat inte är bra på att uppfatta blink med mer än ca: 60Hz kan du göra en timer-interrupt som du sedan kan göra PWM ifrån.
Om vi säger att du vill kunna justera i 0,5% steg behöver du alltså att timern ska ge interrupt med minst 60 * 200 = 12KHz (83,33µs).
I timer-ISR'n:
if(--Time_Counter >= 200) Time_Counter = 200; // Counts 199-0
LED_Red = Red_Value > Timer_Counter;
LED_Green = Blue_Value > Timer_Counter;
LED_Blue = Blue_Value > Timer_Counter;
Sedan ställer du de olika värden på Red_Value, Green_Value och Blue_Value i main-loopen på lämpligt sätt och då har du 3 PWM med individuell styrning.
PWM'a valfri pinnar: inte med hårdvaru-PWM'en.
MEN: mjukvaru-PWM: jepp, plätt-lätt!
Då ögat inte är bra på att uppfatta blink med mer än ca: 60Hz kan du göra en timer-interrupt som du sedan kan göra PWM ifrån.
Om vi säger att du vill kunna justera i 0,5% steg behöver du alltså att timern ska ge interrupt med minst 60 * 200 = 12KHz (83,33µs).
I timer-ISR'n:
if(--Time_Counter >= 200) Time_Counter = 200; // Counts 199-0
LED_Red = Red_Value > Timer_Counter;
LED_Green = Blue_Value > Timer_Counter;
LED_Blue = Blue_Value > Timer_Counter;
Sedan ställer du de olika värden på Red_Value, Green_Value och Blue_Value i main-loopen på lämpligt sätt och då har du 3 PWM med individuell styrning.
- bengt-re
- EF Sponsor
- Inlägg: 4829
- Blev medlem: 4 april 2005, 16:18:59
- Skype: bengt-re
- Ort: Söder om söder
- Kontakt:
Skall inte uP göra något annat vettigt, så går det att göra helt programstyrt också, lite ovackert, men fullt lösligt.
60Hz räcker i princip som PWM-frekvens, MEN vissa påstår sig kunna uppfatta blink som störande upp till ungefär 75Hz - vette fan om det stämmer - jag ser då ingenting... Möjligen (spekulation) så kan man på något sätt se inferensen mellan 60 och 50Hz vilket är 10 Hz och detta går bra att se...
Nåväl, 60Hz duger i 97% av fallen. 100Hz duger i 99,9%...
60Hz räcker i princip som PWM-frekvens, MEN vissa påstår sig kunna uppfatta blink som störande upp till ungefär 75Hz - vette fan om det stämmer - jag ser då ingenting... Möjligen (spekulation) så kan man på något sätt se inferensen mellan 60 och 50Hz vilket är 10 Hz och detta går bra att se...
Nåväl, 60Hz duger i 97% av fallen. 100Hz duger i 99,9%...
Mina 2 grabbar kanske inte "ser" 50-60 Hz, men får problem ändå.
Epilepsi.
En standard 50 Hz TV fungerar inte alls, våran 100 Hz Trinitron 28" Sony
är dock inget problem.
Grabben har jätte problem med bankomater p.g.a att pappskallarna
som konstruerade skärmarna kör för låg frekvens. Med solglasögen,
lite avstånd och genom att titta lite från sidan går det dock hyggligt...
Epilepsi.
En standard 50 Hz TV fungerar inte alls, våran 100 Hz Trinitron 28" Sony
är dock inget problem.
Grabben har jätte problem med bankomater p.g.a att pappskallarna
som konstruerade skärmarna kör för låg frekvens. Med solglasögen,
lite avstånd och genom att titta lite från sidan går det dock hyggligt...
Bankomater kan man rikta hur mycket kritik åt som helst.
Det enda de klarar någerlunda bra är väl att vara vandalsäkra?
Möjligtvis är systemen även säkra, det blir väldigt sällan fel. Däremot är inte bankomaten i helhet säker, med tanke på skimming.
Jag kallar det inte användarvänlighet när man måste vänta en påtaglig tid för varje knapptryck man gör, jag menar, hur svårt kan det vara att programmera ett GUI med en numpad!?
Hrmm, appropå PWM. Om det är lysdioder det gäller så duger 8 bit (256 steg) alldeles utmärkt som upplösning. 100 Hz är en bra frekvens att sikta på när man gör semi-hårdvaru-PWM, d.v.s. sådan styrd av ett timeravbrott, som Icecap förklarar.
Det enda de klarar någerlunda bra är väl att vara vandalsäkra?
Möjligtvis är systemen även säkra, det blir väldigt sällan fel. Däremot är inte bankomaten i helhet säker, med tanke på skimming.
Jag kallar det inte användarvänlighet när man måste vänta en påtaglig tid för varje knapptryck man gör, jag menar, hur svårt kan det vara att programmera ett GUI med en numpad!?
Hrmm, appropå PWM. Om det är lysdioder det gäller så duger 8 bit (256 steg) alldeles utmärkt som upplösning. 100 Hz är en bra frekvens att sikta på när man gör semi-hårdvaru-PWM, d.v.s. sådan styrd av ett timeravbrott, som Icecap förklarar.
Har haft Epilepsi dock har den vuxit bort när jag blev äldre, var på
Co i Östersund och de blev mycket tacksamma när jag på pekade risken för att någon skulle kunna få ett Epilepsi anfall på grund av en taklampa.
Uttags automaterna borde även kunna ta emot pengar tycker jag precis som när man tankar bensin men istället sätts beloppet in på konto, men det är bara att drömma om
Co i Östersund och de blev mycket tacksamma när jag på pekade risken för att någon skulle kunna få ett Epilepsi anfall på grund av en taklampa.
Uttags automaterna borde även kunna ta emot pengar tycker jag precis som när man tankar bensin men istället sätts beloppet in på konto, men det är bara att drömma om
OT:
Finns även en i Ystad. Det är en aningen större automat som är precis innanför bankdörrarna. Man kan gå in till den även efter att banken stängt ända fram till 21.00, om man har sitt bankomatkort med sig som man måste dra i en kortläsare utanför som då öppnar dörren. I automaten kan man sedan mata in sedlar och sätta in det på valbart konto. Man kan också ta ut pengar i vilka valörer som helst, även mynt. Har väl varit lite frestad någon gång att ta ut en 100-lapp i 50-öringar..
Finns även en i Ystad. Det är en aningen större automat som är precis innanför bankdörrarna. Man kan gå in till den även efter att banken stängt ända fram till 21.00, om man har sitt bankomatkort med sig som man måste dra i en kortläsare utanför som då öppnar dörren. I automaten kan man sedan mata in sedlar och sätta in det på valbart konto. Man kan också ta ut pengar i vilka valörer som helst, även mynt. Har väl varit lite frestad någon gång att ta ut en 100-lapp i 50-öringar..
Har för mig att bankomaterna skickar varje knapptryckning med TCP/IP vilket skulle kunna förklara fördröjningen. Normalt använder TCP/IP en liten buffert och skickar inte meddelandet förrän bufferten är full/eller en viss tid (delar av sekund) har gått ut (Nagle algorithm).
Det kan naturligvis vara något helt annat som orsakar fördröjningen men jag har självt jobbat med knapptryckningar via TCP/IP och innan jag lyckades stänga av den jämrans bufferten hade jag exakt samma sega knapphantering som bankomaterna.
Appropå flimmer, en datorskärm (Fat screen) i 60hz är för mig outhärdligt. Det är som att stirra på ett stroboskåp, ögonen tåras direkt. 75 går däremot bra.
Det kan naturligvis vara något helt annat som orsakar fördröjningen men jag har självt jobbat med knapptryckningar via TCP/IP och innan jag lyckades stänga av den jämrans bufferten hade jag exakt samma sega knapphantering som bankomaterna.
Appropå flimmer, en datorskärm (Fat screen) i 60hz är för mig outhärdligt. Det är som att stirra på ett stroboskåp, ögonen tåras direkt. 75 går däremot bra.
Någon fördröjning mellan knapptryckningarna är det ialf inte hos dom bankomater som vi har här. Använder visserligen bara "Minuten" automaterna.
Angående säkerhet. Var en gång en automat som hade fått en blå skärm med det ökända "ogiltig åtgärd" när jag skulle ta ut pengar.
Var dock några år sedan men jag skulle nog åkt tillbaka och tagit ett foto på det för det såg rätt komiskt ut.
Tänkte direkt Win95 när jag såg det..
Angående säkerhet. Var en gång en automat som hade fått en blå skärm med det ökända "ogiltig åtgärd" när jag skulle ta ut pengar.
