PIC 16F PWM

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
gagi011bg
Penjem se :)
Penjem se :)
Posts: 89
Joined: 18-03-2012, 02:04

PIC 16F PWM

Post by gagi011bg »

Pozdrav svima :D

Modifikaovao sam jedan program u picbasic pro, koji sam našao na netu, da dva pina pica-a 16F628a PORTA.0 I PORTA.1 da naizmečno dimuju pwm-om se mimoilaze u isto vreme.

U principu sve rade ok, ali jedino što ne znam da li je moguće sa ovim programom napravi da:

Kada je PORTA.0 100% HIGH (upaljen), da PORTA.1 bude 0% LOW, (ugašen) logička 0.

Za sad radi kada PORTA.0 maksimalno 99% gore i drugi pin PORTA.1 je maksimalno 1% dole, kao na slici, ne idu 100% gore i 0% dole :?



Hvala svima unapred :D
Attachments
PWM 1.jpg
PWM 1.jpg (40.54 KiB) Viewed 2685 times
PWM 2.jpg
PWM 2.jpg (42.69 KiB) Viewed 2686 times
gagi011bg
Penjem se :)
Penjem se :)
Posts: 89
Joined: 18-03-2012, 02:04

Re: PIC 16F PWM

Post by gagi011bg »

Izvinjavam se zaboravih da postavim kod :D , ovo je kod u picbasic pro:

Code: Select all

define osc 4
PORTA=0:portb=0
TRISB=%00111111   
TRISA=%00000000   
'-----------------------------------------------------------------
ON INTERRUPT GoTo PROGRAM   
OPTION_REG=%00001000   
INTCON=%10100000  

CMCON=7    
'----------------------------------------------------------------------------
 R  var byte
 G  var byte
 
 RH VAR BYTE
 GH  VAR BYTE
 
 RL  VAR BYTE
 GL  VAR BYTE
 
 D VAR BYTE
 I   VAR BYTE
 s var byte
'-----------------------------------------------------------------------------
CLEAR  
PAUSE 200
TMR0=243
R=1
G=1

RH=r:RL=100-rH
gh=g:gl=100-gH

PORTA=%00001111
'-----------------------------------------------------------------------------
START:
       
         for s=0 to 255
         G=G-1:IF G=0 THEN G=1
         R=R+1:IF R=100 THEN R=99
         GOSUB DELAY
         next s
         
         for s=0 to 255
         R=R-1:IF R=0 THEN R=1
         G=G+1:IF G=100 THEN G=99
         GOSUB DELAY
         next s
         
GOTO START         
;**********************************************************

DELAY:
      FOR I=0 TO 255:NEXT
      
      RETURN
DISABLE



;**********************************************************
PROGRAM: 

      IF PORTA.0=1 THEN
         RH=RH-1
         IF RH=0 then 
           PORTA.0=1-PORTA.0
           RH=R
         endif
         ELSE 
         RL=RL-1
         IF RL=0 THEN
         PORTA.0=1-PORTA.0  
           RL=100-Rh
         ENDIF
       ENDIF
       
       IF PORTA.1=1 THEN
         GH=GH-1    
         IF GH=0 then 
           PORTA.1=1-PORTA.1
           GH=G
         ENDIF
         ELSE
         GL=GL-1
         IF GL=0 THEN
           PORTA.1=1-PORTA.1
           GL=100-Gh
         ENDIF         
       ENDIF
        
         
      
      TMR0=243
      INTCON.2=0        
      RESUME 
      ENABLE
      
END

Post Reply