• 24 odgovora
  • 8.236 pregleda
Problem sa C fajlom 17.09.2009. u 18:46 · pre 208 meseci #1
Pokusavam da realizujem projekat sa jednog Ruskog sajta. Dati su hex i c fajl za PIC16F628A. Kada ubacim hex fajl u Proteus i simuliram sve radi OK ( prikaz na LCD-u itd. ). Medjutim zeleo sam da nesto izmenim u programu ( pozdravna i odjavna poruka ), ali se tu javlja problem jer nece da se kompajlira ( cak ni onaj originalni c fajl ). MPLAB izbacuje gresku "Unknown flag -16F628A".
Da li neko zna u cemu je problem ?
Re: Problem sa C fajlom 18.09.2009. u 07:58 · pre 208 meseci #2
Ako je C fajl onda ti treba C kompajler, a ne MPLAB
Re: Problem sa C fajlom 18.09.2009. u 08:36 · pre 208 meseci #3
Koristim MPLAB sa instaliranim C kompajlerima. Prvo sam koristio neku stariju verziju kompajlera i on je izbacivao tu gresku.
Sada sam instalirao najnoviju verziju kompajlera : HI-TECH C PRO for the PIC10/12/16 MCU Family, i pri kompajliranju on izbacuje da neki simboli nisu definisani, sto opet nije tacno jer jesu definisani u programu.
Neka ideja ?
Re: Problem sa C fajlom 20.09.2009. u 21:25 · pre 208 meseci #5
U demo verziji max velicina hex fajla je 2KB, sto mi nije dovoljno. Kada se kompajlira ovaj program koji sam dao ima oko 11KB.
Da li mozda imas ovaj kompajler ( u ne demo verziji ) ? Ako imas mozes li mi bar reci da li hoce da se kompajlira ?
Re: Problem sa C fajlom 24.09.2009. u 09:43 · pre 207 meseci #7
Ne vredi. Probao sam MikroC ( verzija 8.1.0.0 ), ali on uopste ne moze da prepozna fajl.
Re: Problem sa C fajlom 25.09.2009. u 20:36 · pre 207 meseci #8
Na tom ruskom sajtu, ima li kakav forum ili email da postavis pitanje koji je kompajler u pitanju.
Potpis

Re: Problem sa C fajlom 26.09.2009. u 12:03 · pre 207 meseci #9
Juce sam kontaktirao autora, koji mi je rekao da koristi Hi-Tech PICC kompajler. Covek je bio toliko ljubazan, i odradio mi ono sto mi je trebalo. Medjutim, i dalje ostaje pitanje zasto ja ne mogu da kompajliram program ?
Re: Problem sa C fajlom 30.09.2009. u 21:02 · pre 207 meseci #11
Da se ubacim ,a da ne otvaram novu temu pa da pitam što nije ispravno u ovome kodu pa
neće TMR0 da se inicializuje ,tj neće da se pokrene na simulatoru.
U pitanju je PIC16F628 i MikroC .U asembleru kada se TMR0 ovako podesi -radi .
Pozdrav

//...................................................................................................

unsigned cnt ;


void interrupt()
{

// neki kod
PORTB = 0;
Delay_ms(100);
PORTB = 0xFF;


}

init()
{
TMR0=0;
T0IF_bit=0;
}
void main(void)
{

init();
CMCON = 0x07 ; //disableKomparator
TRISA = 0x00 ;
TRISB =0b00000010 ; //PortB,1 RX ulaz ,ostali_izlazi
OPTION_REG = 0b00000000 ;
GIE_bit=1;
PEIE_bit=1;
T0IE_bit=1;
TMR0 = 0;
cnt = 0;

while(1) {
PORTB = ~PORTB ;
Delay_ms(10);


}

}
//..................................................................................
Re: Problem sa C fajlom 02.10.2009. u 06:39 · pre 207 meseci #12
Ovako s neba pa u rebra da moras softverski svaki puta da u prekidnoj rutini ponistis T0IF_bit=0; , ne radim sa tim kompajlerom ali u vecini c kompajlera moras sam da to napravis. Uslov je da ti je inicijalizacija dobra.

Recimo ovako to treba da izgleda kod vecine c kompajlera(za ovaj tvoj ne znam):

void interrupt()
{

if(T0IF_bit)
{
T0IF_bit=0;
//tvoj kod

}
}


Takodje tu imas jedan jako veliki problem

void interrupt()
{

// neki kod
PORTB = 0;
Delay_ms(100); // ovo se ne smije raditi u prekidnoj rutini
PORTB = 0xFF;


}


ovaj delaj nema sta tu da trazi jer u prekidnoj rutini se obradjuju samo vrlo kratki procesi a takve funkcije mozes samo da pozivas iz main.
Re: Problem sa C fajlom 02.10.2009. u 20:47 · pre 207 meseci #13
Ovaj deo koda
Delay_ms(100);
u interapt rutini je zalutao kada sam navodio primer.Problem je što do interapta i ne dolazi pošto se TMR0 i ne pokrene i T0IF se ne setuje.
Re: Problem sa C fajlom 03.10.2009. u 18:12 · pre 207 meseci #16
Code:

unsigned int cnt;
void interrupt(){
  if (T0IF_bit){
    cnt++;
    PORTB = ~PORTB;
    TMR0 = 0;
    T0IF_bit = 0;
  }
}

void main() {
    OPTION_REG = 0;
    CMCON = 0x07;
    TMR0 = 0;
    T0IF_bit = 0;
    TRISA = 0;
    TRISB = 2;
    GIE_bit = 1;
    PEIE_bit = 1;
    T0IE_bit = 1;
    T0IF_bit = 0;
    cnt = 0;
    PORTB = 0;
    while(1){
      //
    }
}


ovo radi .. imas i hex zakacen i sliku simulacije na 8MHz. TMR0 prescaler je 1:2 - dakle 8000000/4/256=7812.5 puta u sekundi tj. 0.000128sec tj 0.128ms treba TMR0 da bude trigerovan ... ako hoces da usporis to, povecaj prescaler (npr OPTION_REG = 7; ce ti dati 1:256).

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Problem sa C fajlom 04.10.2009. u 19:42 · pre 207 meseci #17
Bogdane mnogo ti hvala na vremenu i trudu koji si uložio da mi pomogneš ali kod mene neće pa neće .Kada ovaj primer prebacim u Hi-Tech radi Ulazi u interapt ,odrađuje ,a ovde ....
Re: Problem sa C fajlom 05.10.2009. u 02:08 · pre 207 meseci #18
sta znaci nece pa nece ... kad uzmes ovaj moj primer i probas kod tebe - el radi ili ne?

drugo - kako znas dal radi ili ne? gledas ga u proteusu ili oshonsoft ili nekom drugom simulatoru ili na pravom uredjaju?

sta uopste pokusavas da izvedes? tebi se interrapt trigeruje nekoliko puta u jednoj milisekundi - to na pravom uredjaju bez osciloskopa ne da vidis, a i u simulatoru moras da okacis neki analyzer...

el koristis mikroC ili hitech?
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Problem sa C fajlom 05.10.2009. u 17:29 · pre 207 meseci #19
U pravu si hex fajl radi u Oshonsoftu.Neće da mi radi simulacija u MikroC.Konkretno hoću da sa asemblera probam C i ovaj primer mi je da vidim kako to radi interapt i tajmer. Zašto MikroC ? Imam Mikroelektronikinu knjigu koja obrađuje C za Pic (konkretno 16F877 ) i to je razlog.
Re: Problem sa C fajlom 05.10.2009. u 17:41 · pre 207 meseci #20
nemam nista protiv mikroC-a .. radi ok .. doduse nisam nikad probao njegovu simulaciju ... ovaj hex je napravljen u mikroC-u tako da copy paste u mikroC i kazes projektu da je 8MHz i da je 16F628A i mora da radi.

za 877 je drugacija inicijalizacija tako da ti ovaj primer nece raditi na 877

oshonsoft i proteus ti daju vise manje dobru simulaciju, proteus jos mozes da povezes sa mplab-om tako da ako ces da kucas asm - koristis direkt mplab ... mikroC nema asm (moras u c da ubacis asm keyword pa unutra da tuces asm) osim ako ga nisu dodali u mikroC pro (imam ga al ga nisam probao, ja uglavnom tucem C18 i C30 od microchipa).

ajde lepo taj projekat koji ti ne radi zipni pa zakaci da se ne bi igrali gluvih telefona
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme