PIC16F690 Full-Bridge PWM

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

Jag har suttit bra länge nu och försökt få en PIC att styra en H-brygga, men jag lyckas inte få igång PWM.

Har kollat väldigt mycket i databladet och jag tycker jag följt det bra och men får det ändå inte till att fungera.
Har även googlat väldigt mycket, och vad jag hittat är antingen kod i C, eller enbart för "single".

Har ingen kod att visa då jag testat oändligt många saker, men inget har fungerat, och nu är allt raderat :lol:

Så vad jag söker är Assembly-kod för att köra Full-bridge PWM som jag kan studera för att förstå hur man ska göra, tycker det är lättare med praktiska exempel än så som det är beskrivet i databladet.

Någon som har kod eller någon bra länk på lager? :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

> Så vad jag söker är Assembly-kod för att köra Full-bridge PWM

Alltså "fyr-fas" för direkt styrning av en 4-ingångars H-brygga ?
Så vitt jag vet (eller i alla fall förstår) så är det enbart PIC'arna med
"motor-control" som har det. Vad är det igentligen du vill att din 16F690
ska göra ? Kan du beskriva vad du vill att PWM utgångarna ska göra ?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: PIC16F690 Full-Bridge PWM

Inlägg av bearing »

Hittade den här:
http://www.ermicro.com/blog/?p=706
Koden är i C, men borde vara enkel att skriva i assembler. H-bryggan är av simpel sort, uppbyggd med bipolära transistorer som drivs med 5V. Ifall en du ämnar styra en H-brygga med MOSFET-transistorer, behöver transistorerna styras med dödtid, vilket den här koden inte ger. Däremot finns MOSFET-drivkretsar för halvbrygga med inbyggd dödtid, som gör att den här koden kan användas.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: PIC16F690 Full-Bridge PWM

Inlägg av victor_passe »

Det finns en del i databladet där det står punkt för punkt hur du ska få igång full-bridge PWM.
Jag skrev kod för exakt det i förrgår, om du mot förmodan inte hittar den sektionen själv kan jag skicka lite kod(koden ligger på annan plats, annars skulle jag skriva koden med en gång.)

Edit: sektion 11.3.7 är det du ska leta efter.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

OK. Backar lite där, 16F690 har ju full bridge-mode med 4 utgångar, "11.4.2 FULL-BRIDGE MODE".
Ja men då så, vad är problemet nu igen ? Det verkar ju som att allt finns i databladet...
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

Som jag skrev i mitt första inlägg har jag kollat i databladet, just i den sektionen som handlar om detta och jag har skrivit kod efter vad som står där, men antagligen är det något jag missuppfattar, där av denna tråd.

bearing: Varit inne på den sidan tidigare, men hänger inte med i koden som är i C :(

victor_passe: Din kod skulle uppskattas enormt :)

Som sagt, jag är inte ute efter att någon ska göra jobbet åt mig och skriva min kod åt mig, dock vill jag ha kod att studera och se hur man gör för att få igång detta då jag (tydligen..) missuppfattar något i databladet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

> ...dock vill jag ha kod att studera...

Nej, du har missförstått det hela, det är *vi* som vill ha *din* kod. :-)

> ...och jag har skrivit kod efter vad som står där,

Visa den då.

> men hänger inte med i koden som är i C

Vad är det som är svårt att förstå med t.ex :

Kod: Markera allt

CCP1CON=0b01001100;
Det är i princip detsamma som

Kod: Markera allt

  banksel    CCP1CON
  movlw      b'01001100'
  movwf      CCP1CON
Och resten av koden var ju väldigt lättläst, det är i princip bara
lite if-then-else satser med direkta uppdateringar av register.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

Sodjan:
Från första inlägget:
Klas-Kenny skrev:Har ingen kod att visa då jag testat oändligt många saker, men inget har fungerat, och nu är allt raderat
Jag kollade lite extra på den koden i hopp om att förstå den, dock hittade jag

/* Init PWM for Single Output */

Alltså, den där koden använder tydligen inte full bridge-mode utan single, och då jag inte vet exakt vad som skiljer i användandet av single och full bridge kan jag inte använda den där.
Alltså, jag vet ju vad som skiljer i vad PIC'en ger ut i single och full bridge, men just hur man får den att ge ut rätt saker vet jag ej hur man gör i full bridge, det är där problemet är.

Edit: Scrollade ner längre nu, där va visst kod för full bridge, ska kolla på den koden nu :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

> och nu är allt raderat

Ja, det är ju knappast *vårat* problem... :-)

> Scrollade ner längre nu, där va visst kod för full bridge,

Exakt. :-)
Jag tyckte att det var ganska tydligt hur de satte upp det hela.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

Nog är det inte ert problem, men det förändrar inte faktumet att jag vill ha kod att studera :)

Nåväl, efter ett mål mat skall den koden studeras!
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

Nu fungerar det klockrent, tackar för hjälpen! :)

Man skulle ju inte göra alls som jag trodde :lol:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

Vad var problemet och vad hade du missförstått ?
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC16F690 Full-Bridge PWM

Inlägg av Klas-Kenny »

I databladet står det
6. Enable PWM output after a new PWM cycle has
started:
• Wait until Timer2 overflows (TMR2IF bit of
the PIR1 register is set).
• Enable the CCP1 pin output driver by clearing
the associated TRIS bit.
Detta tog jag som att man i "MainLoop" ska kolla om TMR2IF är satt och sedan sätta CCP1 som utgång, och köra om detta hela tiden. Vilket uppenbarligen va käpprätt åt h*****e :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F690 Full-Bridge PWM

Inlägg av sodjan »

Det där är punkt 6 under "11.3.7 SETUP FOR PWM OPERATION".

Notera *SETUP*. Det står inget om att man ska göra det
mer än *en* gång.

Sen så låter just den där punkten som något för att minska
störningar på PWM pinnen/pinnarna i samband med setup av
modulen, jag tror inte att det är nödvändigt för funktionen att
vänta på TMR2IF så där om en liten "glitch" är OK på utgången.

Å andra sidan, att sätta en pinne till utgång som redan är utgång
kan knappast ha gjort att det inte fungerade alls. Om det inte var
så att Timer2 inte var startad så att TMR2IF aldrig sattes alls...

Aja, det är ju lite svårt att veta nu, och det spelar inte så stor
roll längre kanske... :-)
Skriv svar