Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Čet Jul 22, 2010 11:57 am Naslov sporočila: PIC 16F628: HW PWM funkcija |
|
|
Konfigurirat HW PWM funkcijo mi je nekako uspelo oz. sem si pomagal s spodnjim delom kode v assemblerju:
Koda: |
TRISB.3 = 0 ' RB.3=PWM output
PR2 = 25 ' Set PWM for approximately 38KHz
CCPR1L = 13 ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100 ' Mode select = PWM
T2CON = %00000100 ' Timer2 ON + 1:1 prescale
|
Sedaj me zanima, kako naj PWM periodo ponovim recimo 5x.
Primer: perioda pri 38 kHZ je 26,3 us. Če to želim ponovit 5x bi to pomenilo 131 us.
Mi lahko kdo pomaga, da napiše del kode, ki ponovi PWM periodo po zgornjem primeru?
Nazadnje urejal/a Legada Čet Jul 22, 2010 4:31 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jul 22, 2010 12:07 pm Naslov sporočila: |
|
|
Ko nastaviš PWM le ta dela v nedogled. Če želiš zamo 5 period, ga moraš po 5 periodah izključiti. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Čet Jul 22, 2010 12:10 pm Naslov sporočila: |
|
|
Ok... Kako pa naj po točno 5 periodah izklopim HW PWM... Kakšen primer kode? |
|
Nazaj na vrh |
|
|
Peter123 Član
Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1366 Aktiv.: 7.35 Kraj: Lj.
|
Objavljeno: Čet Jul 22, 2010 12:15 pm Naslov sporočila: |
|
|
Ko pošlješ ukaz za PWM in ta začne delat nastaviš in štartaš interupt števec.
Ko se ta števec "odšteje" oziroma pravilno se njegova vrednost obrne se izvede interupt zanka, ki PWM ugasne) |
|
Nazaj na vrh |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jul 22, 2010 12:17 pm Naslov sporočila: |
|
|
Kje si ti sploh dobil ta procesor. Še mikročip ga nima na seznamu.
Bi pogledal v DS če lahko dobiš kakšen interupt ampak ne morem. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
|
Nazaj na vrh |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jul 22, 2010 12:38 pm Naslov sporočila: |
|
|
Ne vem. Pomoje boš moral čakati in ročno izklopiti. Morda se postavi zastavica TRM2 timerja, nisem pa prepričan... preveri. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Čet Jul 22, 2010 4:31 pm Naslov sporočila: |
|
|
A ve mogoče, če v assemblerju prime ukaz "HPWM 1, 150, 400" |
|
Nazaj na vrh |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jul 22, 2010 6:14 pm Naslov sporočila: |
|
|
Tega ukaza PIC ne pozna. Na DSju ki si ga pripel imaš spisek vseh ukazov. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 23, 2010 10:37 am Naslov sporočila: |
|
|
Je mogoče to pravi način, da pridem do štetja interuptov posameznih period HW PWM?
Koda: |
PWM_Period_Match
BTFSS PIR1, TMR2IF
GOTO PWM_Period_Match
BCF PIR1, TMR2IF
|
|
|
Nazaj na vrh |
|
|
bungee Član
Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.64 Kraj: Ljubljana
|
Objavljeno: Pet Jul 23, 2010 8:36 pm Naslov sporočila: |
|
|
Ne vem zakaj hočeš s PWM modulom realizirat 5 pulzov pri 38kHz. To se da naredit z enostavnim stavkom, ki se ponovi 5x.
Evo pseudo koda:
Koda: |
Ponovitve=5
Zanka: Postavi_pin_na_1
Počakaj_13us
Postavi_pin_na_0
Počakaj_13us (Prilagodi zaradi naslednjih operacij)
ponovitve=ponovitve-1
če_so ponovitve>0 skoči na Zanka
Nadaljevanje kode
|
Tole je delovalo na UZ oddajnikih, da pa dobiš čimboljšo izhodno frekvenco pa je treba pametno izbrat tudi kristal. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 30, 2010 9:14 am Naslov sporočila: |
|
|
"bungee", HW PWM želim uporabiti, ker je baje program v PIC-u že zabasan in moram pošiljati IR sporočilo z 10 byte-i, kar bi PIC program zelo upočasnilo...
zato sem v posvetu z ostalimi prišel do tega, da bi izkoristil lastnost PIC 16F628, to je HW PWM. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|