Är detta rätt tänkt angående CCP module, PWM läge.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av sodjan »

Fungerar det om du kommer riktigt nära ?
I så fall är den kanske bara att "kräma på" lite mer genom dioden...
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

Jag gick till jobbet och då tänker jag som bäst.

Jag tror jag har ställt in PWM modulen fel.

Alltså Värdet i PR2 är 25, uträknat efter formeln i datablade, vilket ska motsvara 38,4 kHz.
Men CCPR1L har jag laddat med 12, alltså ca hälften av 25, men det tror jag nu är helt uppåt väggarna fel. Alltså jag läste juh att man kunder räkna ut max upplösning på Duty perioden men jag tänkte att det inte spelade någon roll eftersom jag bara ville ha hälften av pulsPerioden. Men om max upplösningen skulle bli 8Bitar (vilket det inte blir men i alla fall) så skulle juh hälften av pulsperioden motsvara ca 127! Inte 12 eller nåt annat löjligt.

Kommer förmodligen att testas kl 04:00 imorgonbitti, då jag slutar jobbet. :)

Sodjan: Näe, det funkar inte när jag är nära heller.


Ps Fråga, varför trycker den inte ihop min kod till ett fönster med scroll? Ds
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av vfr »

Du är säkert inne på rätt spår! Kör man en 8-biters PWM så ska mycket riktigt halva dutyn för symmetrisk fyrkantvåg ligga på ett PWM-värde som är 128. Det spelar ingen roll vad frekvensen är.

Så det är säkert orsaken till ditt problem.

Ps Fråga, varför trycker den inte ihop min kod till ett fönster med scroll?

Det kanske är för att det är för lite kod? Att vinsten blir för liten. Bara en gissning...
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

Jag räknade ut upplösningen lite snabbt i samband med att jag räknade ut Perioden och är ganska säker till att jag fick den till 6,nånting. Hur gör jag när jag får ett decimaltal som svar.

Blir tex 6,5Bitars upplösning precis mellan 6bitar upplösning och 7bitars upplösning?

MVH Peter F
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av sodjan »

Det är väl bara ett teoretiskt värde. I praktiken blir det hela bitar.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

> Det är väl bara ett teoretiskt värde. I praktiken blir det hela bitar.

Mmmm men blir det uppåt eller neråt? Alltså 6 eller 7 bitar? Det borde ändå bli lite skillnad när man ska försöka pricka in 50% av Pulsperoden.

På 6bitar är 100% = 63 i decimaltal
På 7bitar är 100% = 127 i decimaltal

6bitar, 50% blir (ca) 31 i decimaltal. Använder jag det och det skulle vara en 7 bitars upplösning blir det bara 24% av perioden och det är ju jätte stor skillnad.

Någon som vet hur detta fungerar?

MVH Peter F
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av bearing »

PopUnoNkoK skrev:Jag tror jag har ställt in PWM modulen fel.

Alltså Värdet i PR2 är 25, uträknat efter formeln i datablade, vilket ska motsvara 38,4 kHz.
Men CCPR1L har jag laddat med 12, alltså ca hälften av 25, men det tror jag nu är helt uppåt väggarna fel.
Perioden är (25+1), så för att få 50% duty ska det vara 13 i CCPR1L. Värdet 26 förutsätter att perioden för TMR2 är 1 us.

12 är inte långt ifrån 13 och är nog inte orsaken till att det inte funkar. Jag har för övrigt läst att det räcker med mindre än 50% duty, typ 25% ska funka lika bra.

Upplösningen spelar ingen roll för det här. Det räcker ju med 1 bits upplösning för att få 50% duty. Något annat är fel.



Jag simulerade din kod. Du verkar ha fått dom ojämna på/av-tiderna ganska rätt, men PWM-frekvensen är inte 38kHz. Prescalern för TMR2 är antagligen fel.

Tillägg:
Har du använt View -> Simulator Logic Analyzer ?
Med den kan du se vad som händer på RB3.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av bearing »

Hittade buggen.

Skriv:

banksel PR2

innan perioden sparas i PR2.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

Bearing: Tusen tack för att du tittar på koden.

Jag är inte vid min dator och kan kolla detta men jag är ganska säker på att BankSel inte är problemet för när jag kört simulatorn är jag alldeles övertygad om att PR2 laddats med 25.

Jag håller med om att upplösningen i sig inte spelar någon roll men om värdet som ska CCPR1L utgår från Upplösningen så spelar det juh roll. Alltså för att pricka in 50%.

Jag ska kolla igenom så att jag står i rätt bank när jag kommer hem men det är jag ganska säker på att jag gör. (För det har jag haft problem med innan :oops: )


"Simulator Logic Analyzer" har jag ingen alls koll på, den ska utforskas.

Fråga angående detta, finns det någon typ av Osiloscop i MPLAB SIM som man visuellt kan få se vad som händer? Det skulle kunna hjälpa mig.

MVH Peter F
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av sodjan »

> finns det någon typ av Osiloscop i MPLAB SIM som man visuellt kan få se vad som händer?

Den kallas "Simulator Logic Analyzer"...
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

Haha, strålande.
Tackar och bockar.

MVH Peter F
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av PopUnoNkoK »

Lite rapportering från i natt.

Inatt fick jag det att fungera... Jiiiipiiiii... :D

Kollade BankSel som Bearing sa och nog fasen var det fel, jag ska aldrig ifrågasätta Bearing igen. :)
Jag ändrade även Duty Cycle till 63, alltså ca hälften av 7bitars upplösning.

Då fick jag det att fungera, tyckte dock att den var lite okänslig, jag fick vara nära med kameran och den tog kort lite oregelbundet.

Jag la mig dock och sov mycket nöjd.

På morgonen kollade jag i koden igen och testade "Simulator Logic Analyzer" upptäckte att det var full duty cycle så jag ändrade till 13 (Som Bearing sa, har jag förresten sagt att jag aldrig ska ifrågasätta Bearing igen :) ).
När jag då testade med kameran så började den takort när jag satt med den i handen och stälde in den. Detta innebär att kameran var snett "bakom" IR dioden, dioden som har en spridningsvinkel på 10grader. Kameran smattrade så snabbt den bara kunde, inte alls oregelbundet. Skööönt.

Däremot så förstår jag mig inte på Simulator Logic Analyzer, jag kunde som sagt se att dutycyclen var fel men jag lyckas TEX inte få se min fina oregelbundna puls sekvens. Inte hela sekvensen, det känns som om jag får se en liten bit men inte mer. Jag vet dock inte hur ett osiloscop fungerar så jag kan ha något mycket grundläggande fel i hur jag tycker att den borde fungera.

Tuuusen tack för alla svar. Nu ska jag bara försöka fixa så att jag kan ta kort med olika intervaller.

MVH Peter F
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av sodjan »

Trevligt... :-)

Jag har inte provat den där analysern, men kan man inte ställa in tidskalan på något sätt ?
Det är väl i princip samma problem som med vanliga osilloskop när man ska kolla på
korta förlopp som återkommer med längre intervall...
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Är detta rätt tänkt angående CCP module, PWM läge.

Inlägg av bearing »

Kul att det funka. =)

Angående logikanalysatorn verkar det som att den är begränsad till 65536 cykler, vilket ju är längre än den här sekvensen. Jag har själv flera gånger önskat se längre förlopp. För kortare förlopp är den mer användbar. Det går dock att skapa "triggers" som man t.ex. kan sätta på succesivt senare ställen i sekvensen för att på så sätt förstå den totala sekvensen.
Skriv svar