PWM s PIC 12F675

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
DMF

PWM s PIC 12F675

#1 Příspěvek od DMF »

Ahoj,dá se udělat s tímto picem PWM třaba na 400 Hz ? Poradil by mi někdo jak napsat program (nemyslím konkrétně spíš schématicky)?
Díky
Návštěvník

#2 Příspěvek od Návštěvník »

Důležité je rozlišení - krok, který potřebuješ. Ale 400Hz není problém, dělal jsem něco takového pro 4kHz pomocí přerušení. Ono spíš záleží, jestli procesor dělá hlavně PWM, nebo především něco jiného a kolik kanálů potřebuješ. Jednoduchým řešením je ovšem dostupná 12F683, která má PWM.
Jednoduchý příklad:

Kód: Vybrat vše

;**********************************************************************
;    Files required: <P12F675.INC>                                                 
;
;**********************************************************************
    list      p=12F675          ; list directive to define processor
    #include <P12F675.INC>      ; processor specific variable definitions
    errorlevel -302
    __CONFIG   _CP_OFF &_CPD_OFF & _WDT_OFF & _MCLRE_OFF &_BODEN_OFF &_PWRTE_ON &_INTRC_OSC_NOCLKOUT
;--------- VARIABLE DEFINITIONS ---------------------------------------
#define RAM_Start 0x20
    CBLOCK RAM_Start
ucrHI                           ; universalni registr HI
    ENDC
;--------- CONSTANTS DEFINITIONS---------------------------------------
vykon           EQU     0x80    ; pozadovany vykon 50%
led_OUT         EQU     GPIO2   ; LED proti zemi
;----------------------------------------------------------------------
        ORG     0x000           ; Processor reset vector
reset
 
        goto LED_UP             ; Go to beginning of program

        ORG     0x004           ; interrupt vector location
;----------------------------------------------------------------------
;   Podprogram pro PWM LED
;----------------------------------------------------------------------
LED_UP
           movlw vykon
loop_PWM   movwf ucrHI           ; Ton
           bsf GPIO,led_OUT      ; LED ON
lole0      decfsz ucrHI,F
           goto lole0
           movwf ucrHI   
           comf ucrHI,F          ; Toff = T - Ton
           bcf GPIO,led_OUT      ; LED OFF
lole1      decfsz ucrHI,F
           goto lole1
           goto loop_PWM
       
        END                     ; directive 'end of program'
DMF

#3 Příspěvek od DMF »

Díky.
Jednodušší skutečně bude použít ten 12F683
WhiTe

#4 Příspěvek od WhiTe »

jak by se to resilo kdybych potreboval vic kanalu?
diky
Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 00:00
Bydliště: Bratislava

#5 Příspěvek od ViPali »

Spravíš dva (štyri) sa samostatné cykly pre zapnutie, vypnutie dvoch kanálov.
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“