Kan man ha pwm-signal från 3-pin kontakt till 2-pin fläkt?

Permalänk

Kan man ha pwm-signal från 3-pin kontakt till 2-pin fläkt?

Mitt första galleri blir ett litet projekt som består av lite lödkolv, lite kodande och massa skoj.

Jag ville alltså att ovanstående fråga skulle ha ja som svar, så jag byggde en egen, kompakt, pwm-generator baserad på en AVR ATTiny25 krets.

Kan man ha pwm-signal från 3-pin kontakt till 2-pin fläkt?

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Medlem

uuhh, har dåliga minnen av atmel och assembler... gött att du klurade ut det

Visa signatur

Ryzen 7600X - Geforce RTX 4080 - Custom Loop - Samsung 34" Ultra Wide
Intel i7 9700K - Radeon VII

Permalänk
Medlem

fasen silken liten mysig grej att pyssla med på helgerna! nu blev jag inspirerad! bra jobbat

Permalänk

Om man bortser från att du gjorde det för skojs skull, varför skulle man vilja krångla till det och inte bara använda ett ställbart motstånd?

Visa signatur

"Att betala för att icke-modulärt och klaga på det är korkat. Som att köpa en opel och klaga på att du inte fick en mercedes..."

Permalänk
Medlem

Sjuksexigt dreglar som fan kan du skicka schemat till mej/ladda upp den?? Finns det en enklare model? Kanske dags för en egen fläkt kontroller

Permalänk
Skrivet av Axelander23:

Om man bortser från att du gjorde det för skojs skull, varför skulle man vilja krångla till det och inte bara använda ett ställbart motstånd?

Ett ställbart motstånd tål inte samma effekt. Om man vill öppna upp för möjligheten att dra upp emot 300 Watt så är det ju ett måste att göra såhär. Men du har rätt, i det här fallet så hade det ju funkat med ett ställbart motstånd. Fast sen sägs det ju vara hett av någon anledning att styra sina fläktar med PWM, varför vet jag inte..

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Skrivet av Gulbanan:

Sjuksexigt dreglar som fan kan du skicka schemat till mej/ladda upp den?? Finns det en enklare model? Kanske dags för en egen fläkt kontroller

Visst, jag kan fixa kretsschemat. Inte jättekomplicerat, allt baseras ju på funktionerna i ATTiny kretsen som styrs av c:a 200 rader assemblerkod. Så köper man bara komponenterna så händer det inte så mycket, men om man stoppar in koden i mikrodatorkretsen så blir det finfint.

Enklare modeller går säkert att snickra ihop om man inte vill koda, men då får man basera det på någon annan krets, och sånt kan jag inte. Om man tvunget vill ha PWM-styrning dvs.

Min variant har två st kanaler ut också, skippar man det och nöjer sig med en så blir det såklart enklare.

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Medlem
Skrivet av bellasoda:

Visst, jag kan fixa kretsschemat. Inte jättekomplicerat, allt baseras ju på funktionerna i ATTiny kretsen som styrs av c:a 200 rader assemblerkod. Så köper man bara komponenterna så händer det inte så mycket, men om man stoppar in koden i mikrodatorkretsen så blir det finfint.

Enklare modeller går säkert att snickra ihop om man inte vill koda, men då får man basera det på någon annan krets, och sånt kan jag inte. Om man tvunget vill ha PWM-styrning dvs.

Min variant har två st kanaler ut också, skippar man det och nöjer sig med en så blir det såklart enklare.

tacktack jättesnällt får något börja med den enkla varianten och komplicera det ;D hur hög effekt sa du att den skulle klara? kanske driva många fläktar av samma märke sammtidigt ;D kan du länka lite sidan som du lärde dej ifrån? om du har lärt dej ifrån den

Permalänk
Skrivet av Gulbanan:

tacktack jättesnällt får något börja med den enkla varianten och komplicera det ;D hur hög effekt sa du att den skulle klara? kanske driva många fläktar av samma märke sammtidigt ;D kan du länka lite sidan som du lärde dej ifrån? om du har lärt dej ifrån den

Det här som jag knåpade ihop kan styra upp till 54 Watt med mosfeten IRF830, skulle man använda en IRF8010 istället kan man styra upp till 960 Watt. Då måste man ju ha extra kylflänsar och extra strömförsörjning, t ex via 6-pin PCI som annars går till grafikkortet om man har flera såna. Just nu gjorde jag så att jag kopplade in 2 st fläktar på varsin utgång men det borde funka att parallellkoppla in fler fläktar, men inget jag har testat.

Det som jag lärde mig om ATTiny25 kretsen baserar jag på databladet, prova googla 'attiny25 datasheet' till exempel (en pdf på 234 sidor). Assembler lärde jag mig via en kvällskurs i mikrodatorteknik på Chalmers. Annars finns det säkert många intressanta kurser i ellära, kretselektronik och liknande som du kan söka via någon högskola, finns säkert massor av distansutbildningar också.

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk

Om man inte vill koda i ASM finns ju alltid arduino

Visa signatur

Intel i7 2600K @ 4.8 GHz | Asus P8Z68-V Pro | Corsair Vengeance 1600mhz 24gb | 512gb SSD | MSI GeForce GTX 1080 Ti Gaming X

Permalänk
Medlem
Skrivet av bubblefrog:

Om man inte vill koda i ASM finns ju alltid arduino

Det går att koda i C till PIC, Arduino känns sjukt overkill för en sådan här grej. Jag gjorde en liknande variant med tempstyrning (LM35 sensor) och en PIC 12F683, jag skrev koden i C och det fungerar utmärkt. Då går hela paketet på 50 kr hos elfa.

Visa signatur

Det man inte vet, det lider man inte av.

Permalänk
Medlem
Skrivet av bellasoda:

Det här som jag knåpade ihop kan styra upp till 54 Watt med mosfeten IRF830, skulle man använda en IRF8010 istället kan man styra upp till 960 Watt. Då måste man ju ha extra kylflänsar och extra strömförsörjning, t ex via 6-pin PCI som annars går till grafikkortet om man har flera såna. Just nu gjorde jag så att jag kopplade in 2 st fläktar på varsin utgång men det borde funka att parallellkoppla in fler fläktar, men inget jag har testat.

Det som jag lärde mig om ATTiny25 kretsen baserar jag på databladet, prova googla 'attiny25 datasheet' till exempel (en pdf på 234 sidor). Assembler lärde jag mig via en kvällskurs i mikrodatorteknik på Chalmers. Annars finns det säkert många intressanta kurser i ellära, kretselektronik och liknande som du kan söka via någon högskola, finns säkert massor av distansutbildningar också.

det är bra ju 54w är ju rätt mycket, kan driva typ fyra fläktar utan att belasta den så mycket :D, mina drar 0.23 A så det kommer att funka fint, har hela 4,25 A på mej;D såg nyss också att du har laddat upp schemat, jättebra nu vet man vad man ska försöka göra nästa vecka. såg att du vill pwm styra några peltier:) kommer det att bli något? tec kylning eller så? skulle vara kul och se något nytt här i sweclockers, detta var också nytt jag har en zalman fläktstyrning-grej* har öppnat den en gång och såg inte vara jättekomplicerad, ska försöka fatta den och bygga ett eget ett galleri kanske kommer

ska försöka läsa den en fråga det med kvällkursar, är det efter skolan(lektionerna) eller ligger den under skoldagen? jag går i ettan gymnasiet och vet ingenting om hur det kommer att gå på högskolan. vill gå på några kurser under sommarlovet, tänker inte bringa hela min tid framför datorn detta året XD

Permalänk
Skrivet av Gulbanan:

det är bra ju 54w är ju rätt mycket, kan driva typ fyra fläktar utan att belasta den så mycket :D, mina drar 0.23 A så det kommer att funka fint, har hela 4,25 A på mej;D såg nyss också att du har laddat upp schemat, jättebra nu vet man vad man ska försöka göra nästa vecka. såg att du vill pwm styra några peltier:) kommer det att bli något? tec kylning eller så? skulle vara kul och se något nytt här i sweclockers, detta var också nytt jag har en zalman fläktstyrning-grej* har öppnat den en gång och såg inte vara jättekomplicerad, ska försöka fatta den och bygga ett eget ett galleri kanske kommer

ska försöka läsa den en fråga det med kvällkursar, är det efter skolan(lektionerna) eller ligger den under skoldagen? jag går i ettan gymnasiet och vet ingenting om hur det kommer att gå på högskolan. vill gå på några kurser under sommarlovet, tänker inte bringa hela min tid framför datorn detta året XD

Jo, jag hoppas få ihop ett bygge med peltier-element, ligger nog lite längre fram i tiden dock. 54 watt per utgång gäller alltså, de där IRF830-kretsarna har jag i drösar, köpte väldigt billigt, så jag kan i princip använda hur många jag vill, så max 4.5 A per fläkt, borde nog vara rätt lugnt! Med ett peltierelement på 14 A så gäller det nog att skaffa en kraftfullare MOSFET förstås.

Det är ju en sak att kolla på ett kretsschema, men sen är det ju det här med att programmera kretsarna, kräver oftast en del kringutrustning. Annars kan du ju prova att gå in på electrokit.com och bara söka på PWM, där har de en del roliga byggsatser med kretsscheman och allt. Då får man ju ett fungerande kit från start.

Den där kursen jag läste hade ingen obligatorisk undervisning, utan man fick hålla på bäst man ville och gå på föreläsningarna om man var sugen, som gick på kvällstid utöver den vanliga skoltiden. Jag tror iofs att man var tvungen att vara klar med gymnasiet och läst upp till Matte D, men utöver det så fick alla som sökte kursen vara med. Vad läser du för utbildning på gymnasiet? Läser du NV eller teknik borde det ju inte vara några problem.

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Inaktiv

Fem toats på detta helt klart!

Permalänk

Släng på några kretsar till, en display samt kommunkation via I²C. (Tidsstyrd fläktkurva, kanske?).

Kul bygge i övrigt! Assembler är inte så tokigt som man kan tro!

Visa signatur

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Permalänk
Medlem

Nu vet jag inte hur många pwm-kanaler man kan ha i ATtiny, men man borde väl eventuellt kunna göra software-PWM med den (toggla pinnarna själv). Då skulle man, om det går att göra operationerna tillräckligt snabbt, kunna styra hastigheter individuellt på 8 fläktar samtidigt (eller hur många fria pinnar du nu har).

Man kanske inte får helt perfekt periodiska utsignaler, men skulle kanske fungera.
Hade du haft någon pinne till kunde man haft ett användarinterface där man togglar fläkt med en knapp, och ökar/minskar med en knapp eller någon sekvens av knapptryck på bara en knapp.

edit: här är ett möjligt alternativ om man bara ska ha en PWM-kanal. Då behöver man ingen programmerare för AVR och får inställningsmöjlighet eftersom man kan styra med en potentiometer:
https://www.elfa.se/elfa3~se_sv/elfa/init.do?item=73-097-68

edit2: kanske ett dåligt exempel, den verkar ha lite för hög frekvens och frekvensen är fast. Men det finns säkert många andra alternativ.

Permalänk
Skrivet av SBeaver:

Nu vet jag inte hur många pwm-kanaler man kan ha i ATtiny, men man borde väl eventuellt kunna göra software-PWM med den (toggla pinnarna själv). Då skulle man, om det går att göra operationerna tillräckligt snabbt, kunna styra hastigheter individuellt på 8 fläktar samtidigt (eller hur många fria pinnar du nu har).

Man kanske inte får helt perfekt periodiska utsignaler, men skulle kanske fungera.
Hade du haft någon pinne till kunde man haft ett användarinterface där man togglar fläkt med en knapp, och ökar/minskar med en knapp eller någon sekvens av knapptryck på bara en knapp.

edit: här är ett möjligt alternativ om man bara ska ha en PWM-kanal. Då behöver man ingen programmerare för AVR och får inställningsmöjlighet eftersom man kan styra med en potentiometer:
https://www.elfa.se/elfa3~se_sv/elfa/init.do?item=73-097-68

edit2: kanske ett dåligt exempel, den verkar ha lite för hög frekvens och frekvensen är fast. Men det finns säkert många andra alternativ.

På ATTiny25 så finns det 2 pwm-kanaler, den är lite begränsad så, men det går ju att göra som du säger, dvs lägga in mjukvaru-pwm på fler pinnar. 2 pinnar går åt för jord och Vcc, sen så blir det 6 pinnar över. En pinne för knappen och totalt så får man ju då 5 pwm-kanaler efter lite meck. Då får man ju ha någon speciallösning med timing på knapptryckningarna med långa och korta tryckningar för att styra olika fläktar kanske. Eller tänker du kanske att man använder någon typ av logik utanför kretsen så kan man använda 1 pinne för pwm-signalen och 4 pinnar för att styra den till olika fläktar, 4 pinnar ger 2^4=16 st möjliga fläktar..?

Annars så är ju inte ATMega-kretsarna så himla dyra heller, då kan man ju ha 10 kanaler utan problem. Om man nu skulle vara tvungen att köra Atmel och AVR det vill säga. Jag känner att jag fastnat lite i det träsket, har man väl lärt sig en sak är det så drygt att lära om...

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Skrivet av SBeaver:

Nu vet jag inte hur många pwm-kanaler man kan ha i ATtiny, men man borde väl eventuellt kunna göra software-PWM med den (toggla pinnarna själv). Då skulle man, om det går att göra operationerna tillräckligt snabbt, kunna styra hastigheter individuellt på 8 fläktar samtidigt (eller hur många fria pinnar du nu har).

Jag öppnade nyss en RGB-LED-controller från ikea, och såg att den styrdes via en PIC, som inte använde dedikerade PWm-ben. Så jag labbade med att göra samma sak, dvs mjukvaru-pwm, och njae, vidare bra fungerade det inte. jag vet inte vad för frekvens man bör köra på en fläkt, men för att få dioder att fungera bra krävdes det att en PIC på 8MHz jobbade heltid med bara det.

Märkte även att IKEA's lösning för att lamporna blinkar ganska märkbart vid ljusövergångar och så, antagligen hänger inte processorn med att sköta pwmsignalerna bra då.

Visa signatur

Dator:
*Censurerad av jantelagen*

Permalänk
Medlem
Skrivet av n_sandstrom:

Jag öppnade nyss en RGB-LED-controller från ikea, och såg att den styrdes via en PIC, som inte använde dedikerade PWm-ben. Så jag labbade med att göra samma sak, dvs mjukvaru-pwm, och njae, vidare bra fungerade det inte. jag vet inte vad för frekvens man bör köra på en fläkt, men för att få dioder att fungera bra krävdes det att en PIC på 8MHz jobbade heltid med bara det.

Märkte även att IKEA's lösning för att lamporna blinkar ganska märkbart vid ljusövergångar och så, antagligen hänger inte processorn med att sköta pwmsignalerna bra då.

Hur ser det ut om allt du gör är toggla pinne, hoppar tillbaka en rad och sen göra samma sak igen? Om det blir 2-3 CPU instruktioner så borde det väl räcka.
Kanske är frekvensen du får ut så hög att din switch förvränger PWM pulsen så att det inte blir bra.
Eller kanske din LED inte klarar så hög frekvens?

Försök få till några kHz och kolla utsignalen från switchen i oscilloskop.

Permalänk
Skrivet av SBeaver:

Hur ser det ut om allt du gör är toggla pinne, hoppar tillbaka en rad och sen göra samma sak igen? Om det blir 2-3 CPU instruktioner så borde det väl räcka.
Kanske är frekvensen du får ut så hög att din switch förvränger PWM pulsen så att det inte blir bra.
Eller kanske din LED inte klarar så hög frekvens?

Försök få till några kHz och kolla utsignalen från switchen i oscilloskop.

Gör man på det viset kommer man ju enbart få ett fast sken, och ingen möjlighet att reglera duty cycle.

Visa signatur

Dator:
*Censurerad av jantelagen*

Permalänk
Medlem
Skrivet av n_sandstrom:

Gör man på det viset kommer man ju enbart få ett fast sken, och ingen möjlighet att reglera duty cycle.

Lägg togglarna efter varandea då, och så fyller du ut med NOP eller vad operationen heter i PIC med olika mycket på vardera sida om respektive toggle.
Då får du ju andra duty cycles än 50%

edit: första svaret på google: http://www.pages.drexel.edu/~kws23/tutorials/PWM/PWM.html

Permalänk
Skrivet av n_sandstrom:

Jag öppnade nyss en RGB-LED-controller från ikea, och såg att den styrdes via en PIC, som inte använde dedikerade PWm-ben. Så jag labbade med att göra samma sak, dvs mjukvaru-pwm, och njae, vidare bra fungerade det inte. jag vet inte vad för frekvens man bör köra på en fläkt, men för att få dioder att fungera bra krävdes det att en PIC på 8MHz jobbade heltid med bara det.

Märkte även att IKEA's lösning för att lamporna blinkar ganska märkbart vid ljusövergångar och så, antagligen hänger inte processorn med att sköta pwmsignalerna bra då.

Jag använde inte dedikerade PWM-ben på min krets, men eftersom jag använde mig av de två pwm-kanalernas respektive interruptrutin för att toggla de ben jag valt så fungerade det på samma sätt. Jag har sett exempel där någon kör t ex 8- eller 16-kanalers pwm, men då använder de en välpreciserad waitmicros-rutin som klarar av att vänta enskilda mikrosekunder (vilken precision som användes kommer jag inte ihåg).

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Skrivet av SBeaver:

Lägg togglarna efter varandea då, och så fyller du ut med NOP eller vad operationen heter i PIC med olika mycket på vardera sida om respektive toggle.
Då får du ju andra duty cycles än 50%

edit: första svaret på google: http://www.pages.drexel.edu/~kws23/tutorials/PWM/PWM.html

Många NOP's blir det... För en 20 kHz signal på en 20 MHz processor, så blir det 500 NOP's för vardera duty cycle. Fast smaken är ju som baken!

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Medlem
Skrivet av bellasoda:

Många NOP's blir det... För en 20 kHz signal på en 20 MHz processor, så blir det 500 NOP's för vardera duty cycle. Fast smaken är ju som baken!

Jaja. Men jag tror poängen kommer fram. Går det att köra med extern klocka kan man ju klocka den långsammare.

Permalänk
Skrivet av SBeaver:

Lägg togglarna efter varandea då, och så fyller du ut med NOP eller vad operationen heter i PIC med olika mycket på vardera sida om respektive toggle.
Då får du ju andra duty cycles än 50%

edit: första svaret på google: http://www.pages.drexel.edu/~kws23/tutorials/PWM/PWM.html

Ja, alltså, det är inte där problemet uppstår. problemet är när du ska köra övrig kod, för att tex ändra duty cykle. Då får du plötsligt en massa instruktioner som ska köras mellan dina perioder, vilket då kommer leda till en spontan väldigt lång förlängning av den släckta perioden.

Visa signatur

Dator:
*Censurerad av jantelagen*

Permalänk
Skrivet av bellasoda:

Jag använde inte dedikerade PWM-ben på min krets, men eftersom jag använde mig av de två pwm-kanalernas respektive interruptrutin för att toggla de ben jag valt så fungerade det på samma sätt. Jag har sett exempel där någon kör t ex 8- eller 16-kanalers pwm, men då använder de en välpreciserad waitmicros-rutin som klarar av att vänta enskilda mikrosekunder (vilken precision som användes kommer jag inte ihåg).

Det var ungefär samma metod jag testade med, och jag fick problem med att få interrupten att hinna triggas ofta nog för att få bra flyt.

När jag tänker efter så var det å andra sidan under den perioden då jag helt missförstod hur jag skulle ställa in processorns klockhastighet, så vetefan vad den snurrade på för hastighet egentligen.

Men att IKEA's färdiga produkt lider av flimmer, tyder på att det kanske inte är vidare lämpligt just med PIC'ar

Visa signatur

Dator:
*Censurerad av jantelagen*

Permalänk
Skrivet av SBeaver:

Jaja. Men jag tror poängen kommer fram. Går det att köra med extern klocka kan man ju klocka den långsammare.

I exemplet du länkade så var det ju inte 500 NOPs direkt förstås. Antagligen så gör man någon jämförelse och testar ifall man väntat tillräckligt länge, annars snurrar man runt och kör några NOP's till. Så inget fel med NOP! Det är vad jag gör hela dagarna på jobbet till exempel.

Skrivet av n_sandstrom:

Det var ungefär samma metod jag testade med, och jag fick problem med att få interrupten att hinna triggas ofta nog för att få bra flyt.

När jag tänker efter så var det å andra sidan under den perioden då jag helt missförstod hur jag skulle ställa in processorns klockhastighet, så vetefan vad den snurrade på för hastighet egentligen.

Men att IKEA's färdiga produkt lider av flimmer, tyder på att det kanske inte är vidare lämpligt just med PIC'ar

Om man har en timer som väntar t ex 50 millisekunder så kan man ju starta timern och sedan köra övrig kod. När timern skapar ett interrupt för 50 ms så ställer man in att timern startar från noll ögonblickligen medan man samtidigt kör övrig kod. Att låta timern gå tar inga extra klockcykler och din timercykel har alltid exakt samma längd. Vissa kretsar har dessutom flera oberoende timers, vilket underlättar ibland...

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Skrivet av bellasoda:

Om man har en timer som väntar t ex 50 millisekunder så kan man ju starta timern och sedan köra övrig kod. När timern skapar ett interrupt för 50 ms så ställer man in att timern startar från noll ögonblickligen medan man samtidigt kör övrig kod. Att låta timern gå tar inga extra klockcykler och din timercykel har alltid exakt samma längd. Vissa kretsar har dessutom flera oberoende timers, vilket underlättar ibland...

Hm, nu vet jag inte hur din kod fungerade riktigt. Hur var PWM-signalen relaterad till timer-perioden? Ändrade du timer-perioden för att styra dutycycle, eller hade du av/på i olika många timerperioder?

50ms (20Hz) är väldigt långsamt när det kommer till synbart ljus.

Visa signatur

Dator:
*Censurerad av jantelagen*

Permalänk
Skrivet av n_sandstrom:

Hm, nu vet jag inte hur din kod fungerade riktigt. Hur var PWM-signalen relaterad till timer-perioden? Ändrade du timer-perioden för att styra dutycycle, eller hade du av/på i olika många timerperioder?

50ms (20Hz) är väldigt långsamt när det kommer till synbart ljus.

I det här fallet lät jag timer0 räkna från 0 till 255, och så räknade jag inte varje klockcykel, utan kanske endast var 32:a (vilket alltså påverkar grundfrekvensen). När den kom upp till 255 så började den om på noll. Jag ställde in två st register: Output Compare Match A och Output Compare Match B, och värdet i de registrena tog jag från en analog insignal från potentiometrarna. Värdet varierade mellan 0 och 255. När timern nådde samma värde som värdet i registret Output Compare Match A/B så utfördes interrupt rutinen Timer0 Compare Match A/B, där jag då togglade det aktuella benet. När Timern räknat klart till 255 utfördes Timer0 overflow rutinen där jag åter togglade båda benen. Slutsatsen blir att duty cycle varierar mellan 0-255, där 0 ger maximal output.

Timerspåret startade jag i början och den räknar parallellt och i övriga koden så låter jag min enda LED blinka och samtidigt läser jag värdet på mina ADC-ingångar. Så det enda min mainfunktion gör är att blinka på en LED och mäta ADC-ingångarna, allt annat sköts i interrupts.

Lite rörig beskrivning kanske, egentligen enklare att bara posta koden, men den har jag inte här på jobbet.

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Skrivet av bellasoda:

I det här fallet lät jag timer0 räkna från 0 till 255, och så räknade jag inte varje klockcykel, utan kanske endast var 32:a (vilket alltså påverkar grundfrekvensen). När den kom upp till 255 så började den om på noll. Jag ställde in två st register: Output Compare Match A och Output Compare Match B, och värdet i de registrena tog jag från en analog insignal från potentiometrarna. Värdet varierade mellan 0 och 255. När timern nådde samma värde som värdet i registret Output Compare Match A/B så utfördes interrupt rutinen Timer0 Compare Match A/B, där jag då togglade det aktuella benet. När Timern räknat klart till 255 utfördes Timer0 overflow rutinen där jag åter togglade båda benen. Slutsatsen blir att duty cycle varierar mellan 0-255, där 0 ger maximal output.

Timerspåret startade jag i början och den räknar parallellt och i övriga koden så låter jag min enda LED blinka och samtidigt läser jag värdet på mina ADC-ingångar. Så det enda min mainfunktion gör är att blinka på en LED och mäta ADC-ingångarna, allt annat sköts i interrupts.

Lite rörig beskrivning kanske, egentligen enklare att bara posta koden, men den har jag inte här på jobbet.

Hm, så om jag förstår dig rätt, så får du två interrupts, under en timercykel? En när "Compare Match" matchar, och när timern blir full?

vad jag vet så kan jag men en PIC enbart få interrupt då timern blir full.

Visa signatur

Dator:
*Censurerad av jantelagen*