Pitanja i problemi sa 16F628A i WinPic800

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
vita
Posts: 10
Joined: 10-07-2010, 21:37
Location: Nis, Srbija
Contact:

Pitanja i problemi sa 16F628A i WinPic800

Post by vita »

Pozdrav,

Imam neka pitanja u vezi sa WinPIC800 softverom. Nikad do sada nisam pokušao da programiram pravi PIC MCU samo sam radio u ISIS-u (Proteus) Simulacija. Napisao sam program i sve radi kad se pusti u simulaciji odnosno u Proteusu.
Imam AllPIC programator i WinPic800 softwer. Učitam HEX fajl, i ja uglavnom ne diram podesavanja u Settings tab samo kliknem PROGRAM All i upise se program lepo u PIC verifikuje se sve je OK.

Ja posle ubacim mikrokontroler u podnozije i pokrenem ga on blinka led diode nekoliko puta (kao sto i treba jer je tako napisano u programu i ugasi ih) pokrene pwm na 5kHz i podesi duty na 16. Ja sam napravio da kad kliknem na pwm+ dugme da se poveca varijabla t za 16 i da podesi PWM duty na t i kad je neka druga vrednost da se ukljuci druga led dioda... Ali meni to ne radi. Sve se lepo ukljuci kad kliknem na taster za + ili - ništa se ne dešava kao da ne rade tasteri, probao sam instrumentom da vidim da li dovodi +5V na PIC i dovodi ali PIC uopste ne reaguje.

Evo šema:
Image
Proteus:
Image

HEX datoteku kompajlovanu sam dodao u attachment kao i proteus projekat.

Izvorni kod MikroC:

Code: Select all

unsigned short t;
void main() {
TRISA = 0xFF;
TRISB = 0x00;
PORTA = 0x00;
PORTB = 0x00;

PORTB = 0xFF;
Delay_ms(1000);
PORTB = 0x00;
Delay_ms(1000);
PORTB = 0xFF;
Delay_ms(1000);
PORTB = 0x00;

PWM1_Init(5000);                    // Initialize PWM1 module at 5KHz
PWM1_Start();

t = 16;
PWM1_Set_Duty(t);

 while(1)
 {
   if(RA0_bit)
   {
    Delay_ms(40);
    t = t + 8;
    PWM1_Set_Duty(t);
   }
   if(RA1_bit)
   {
    Delay_ms(40);
    t = t - 8;
    PWM1_Set_Duty(t);
   }
   Delay_ms(5);
   
   if(t > 254)
        t = 0;
   if(t < 1)
        t = 255;

   if( (t > 16) && (t < 32) )
   {
        PORTB = 0x00;
        RB4_bit = 1;
   }
   else if( (t > 32) && (t < 64) )
   {
        PORTB = 0x00;
        RB5_bit = 1;
   }
   else if( (t > 64) && (t < 128) )
   {
        PORTB = 0x00;
        RB6_bit = 1;
   }
   else if( (t > 128) && (t < 255) )
   {
        PORTB = 0x00;
        RB7_bit = 1;
   }
   
 }
}
Kažite mi gde sam pogrešio ukoliko znate?

Još jedno pitanje, da li može neko da mi objasni šta znače sve one opcije u Settings u WinPIC800:
-Osc-
LP, XT, HS, ExtClk, INTRC I/O, INTRC CLKOUT, RC IO, RC CLKOUT
I ovo što može da se čekira: WDTE, PWRTE, BOREN, LVP, MCLRE, CPD.

Hvala unapred!
Attachments
pwm-test.zip
(19.67 KiB) Downloaded 199 times
User avatar
gurko
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 241
Joined: 18-03-2011, 19:28
Location: Srednja BiH

Re: Pitanja i problemi sa 16F628A i WinPic800

Post by gurko »

Pa ako ti radi u Proteusu kako ti kazes, onda prvo sto bih provjerio jeste taster bouncing. Znaci da ti uC primi visestruku komandu kada jednom pritisnes taster. To se moze rijesiti na vise nacina, evo jedan od nacina:
http://www.ikalogic.com/debouncing.php
Drugo, od tih parametara obrati paznju da ti je oscilator na XT tj. vanjski oscilator podrzan kristalom. Msm da ti ostali parametri nisu toliko bitni u ovom trenutku, ali sigurno o njima mozes procitati u datasheetu za ovaj uC.
I nikada ne bih vezao ovaj optokapler direktno izmedju kolektora i baze 2N3055. Kolektor optokaplera tj. pin 5 bih digao na +12V a izmedju pina 4 i baze 2N3055 bih ubacio otpor od npr 10ak Koma.
Cosa
Napredujem
Napredujem
Posts: 177
Joined: 09-08-2009, 10:55
Location: Hrvatska

Re: Pitanja i problemi sa 16F628A i WinPic800

Post by Cosa »

Koliko vidim u inicjalizaciji kontrolera nisu isključeni komparatori.
Trebao bi ubaciti CMCON = 0x07; pa probati.

Imaš istu (lošu) naviku kao i ja - malo komentiraš kod :D
vukboban
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 212
Joined: 05-12-2008, 17:49
Location: Pancevo

Re: Pitanja i problemi sa 16F628A i WinPic800

Post by vukboban »

Ono prvo.osc,tu definises koji oscilator ce PIC da koristi:LP je low power kristal,XT je kristal,HS je high speed kristal,EXTCLK je neki spoljni izvor kloka(recimo kad ga dovodis sa nekog drugog IC),INTRC I/O je njegov interni oscilator a pinovi gde se inace prikljucuje oscilator se koriste kao I/O pinovi,INTRC CLKOUT je isto to,samo na jednom pinu imas izlaz kloka,RC je resistor/capacitor izvor kloka,takodje u 2 verzije,kao i kod INTRC.

WDTE je da ukljucis ili ne watchdog,PWRTE je powerup timer,BOREN je brownout reset,LVP je low voltage programming,MCLRE je reset enable/disable,CPD je zastita koda ili nekih njegovih delova od citanja.

Mada sve ovo pise u bilo kom datasheetu...
vita
Posts: 10
Joined: 10-07-2010, 21:37
Location: Nis, Srbija
Contact:

Re: Pitanja i problemi sa 16F628A i WinPic800

Post by vita »

Hvala vukbobanu, Cosi i gurku. Dodao sam debouncing na tastere iskljucio komparatore i programirao kolo preko WinPIC800 u setting sa XT i MCLRE.

Sada sve radi kako treba hvala vam još jednom!
Post Reply