Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa HI-TECH C compilerom

[es] :: Elektronika :: Mikrokontroleri :: problem sa HI-TECH C compilerom

Strane: 1 2

[ Pregleda: 4076 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon problem sa HI-TECH C compilerom21.02.2013. u 19:56 - pre 135 meseci
poštovani,
imam ozbiljan problem, u gore navedeno kompajleru, ne mogu da podesim delay za extreni oscilator na 20Mhz. Rešili smo problem za 4 MHz (našli librrery na netu) ali za 20 MHz nikako. Da li neko može da mi pomogne.... pokušavam već celi dan da rešim ovaj problem i nikako ne ide....
Bogdane....?
mst
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 20:30 - pre 135 meseci
?! samo posalji toj delay koja ti radi na 4MHz vrednost *5 i eto ti ga delay koji radi na 20MHz :)

kakav ti delay treba? ja hitech ne koristim posto dzaba verzija nije ni za %$@%$& a da ga placam necu kada ima druge, bolje kompajlere koji rade posao kako treba... ali delay funkcije se generalno dele na 2 dela

1. one koje su "vremenske" i one obicno zahtevaju neki define ili neki parametar u kompajleru da se pdoesi na frekvenciju mcu-a (delay_us(), delay_ms() ...)
2. one koje su u "tikovima" pa ti sam preracunavas koliko ti treba tikova za odredjeno vreme (delayTCX(), delay10TCX(), delay100kTCX() ... )

ne znam sta koristi hitech
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 20:35 - pre 135 meseci
Bogdane,
hvala ti na odgovoru, ne radi puta 5, probao sam... :D
koji kompajler da koristim ? toliko različitih kompajlera ima da sam se pogubio.... koristim mplab x a konkretno mi treba za 16f1937 kontroler....
mst
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 20:46 - pre 135 meseci
Hi-Tech DelayUs i DelayMS treba da rade tačno za vrednosti oscilatora od 4-16MHz. Za veće vrednosti generisano vreme kašnjenja se ne slaže sa željenim. Imaš dva rešenja:

- Da tačan vremenski interval generišeš preko nekog od tajmera.
- Da nađeš kolika je greška delay funkcija pa da napraviš neku matematiku štelovanjem. Neophodno je da uključiš full optimizaciju u ovom slučaju.

Prvi način je bolji pogotovo ako su ti potrebna duža vremena jer nema svrhe da mikrokontroler bleji i broji nop-ove ako za to vreme može da radi nešto pametnije.
gorankg
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 20:50 - pre 135 meseci
ako na 4MHz radi, onda kada ga podignes na 20MHz MORA da radi *5, jedino sto imas limit, ako mu je input bajt ne mozes da mu posaljes preko 255 vrednost jer ce da se rotira pa ako posaljes 5*100 on naravno nece da bude kako treba, ako mu je 2 bajta input ista stvar .. samo je limit 65k

za kompajler, za te 16tice ja sam onda kada sam ih koristio trosio PICC (CSC) koji sam platio uz neki DLP modul sa ft232 i pic16f877a i bio mi je odlican. hitech je odlican kad ga platis ali je meni bio preskup, sada kada ga je mchip dao free ta free verzija nije ni za %$#%# a ona za pare je jos skuplja .. tako da sta da koristis, ne znam, picc je bolji od free hitech-a ... sad picc za pare vs hitech za pare .. ne znam, meni je licno picc drazi posto ga bolje poznajem ali trebalo bi da hitech pravi lepsi kod (brzi, manji) ... tu je i mikroC koji je mozda jeftiniji od oba, pravi odlican kod, ima odlucnu podrsku - jedini problem, zbog cega je meni potpuno nezanimljiv, je to sto su mu sve biblioteke potpuno zatvorene a i to sto mu je zastita vezana za seriski broj diska ne pomaze (negde nacuh da su to promenili i da je sada neki dongle zastita, to mi se mnogo vise svidja posto to znaci da mozes da ga stavis na 10 kompova i samo selis dongle)

sve u svemu, za 16F - nisam ti ja prava osoba da pitas za najbolji kompajler, moj savet tu je - bezi od 8bitnih mcu-a osim ako ti nije neophodno da imas mnooogo malo nogica
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 21:57 - pre 135 meseci
Gorane,
hvala na odgovoru, rešili ste moj problem... kupiću oscilator na 16MHz :D
mst
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 22:00 - pre 135 meseci
Bogdane,
slažem se sa Vama, meni je ovaj 16F1937 ok zato što ima modul za touch, podršku za graf. disp., 36 I/0 pinova i košra svega 1,7 E , a da dostupan je i u TQFP kućištu... :D
mst
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 22:39 - pre 135 meseci
kod za one kojima je potreban delay za 4MHz.

ovaj kod zapamtite kao delay.h
-------------------------------------------
/*
* Delay functions for HI-TECH C on the PIC
*
* Functions available:
* DelayUs(x) Delay specified number of microseconds
* DelayMs(x) Delay specified number of milliseconds
*
* Note that there are range limits: x must not exceed 255 - for xtal
* frequencies > 12MHz the range for DelayUs is even smaller.
* To use DelayUs it is only necessary to include this file; to use
* DelayMs you must include delay.c in your project.
*
*/

/* Set the crystal frequency in the CPP predefined symbols list in
HPDPIC, or on the PICC commmand line, e.g.
picc -DXTAL_FREQ=4MHZ

or
picc -DXTAL_FREQ=100KHZ

Note that this is the crystal frequency, the CPU clock is
divided by 4.

* MAKE SURE this code is compiled with full optimization!!!

*/
#ifndef DelayUs //-- Stop Multipule entrys of this code!!!
#ifndef XTAL_FREQ
#define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */
#endif

#define MHZ *1000 /* number of kHz in a MHz */
#define KHZ *1 /* number of kHz in a kHz */

#if XTAL_FREQ >= 12MHZ
#define DelayUs(x) { unsigned char _dcnt; \
_dcnt = (x)*((XTAL_FREQ)/12MHZ); \
while(--_dcnt != 0) \
continue; }
#else

#define DelayUs(x) { unsigned char _dcnt; \
_dcnt = (x)/(12MHZ/(XTAL_FREQ))|1; \
while(--_dcnt != 0) \
continue; }
#endif

extern void DelayMs(unsigned char);
#endif

---------------------
a ovaj kao delay.c
------------------
/*
* Delay functions
* See delay.h for details
*
* Make sure this code is compiled with full optimization!!!
*/

#include "delay.h"

void
DelayMs(unsigned char cnt)
{
#if XTAL_FREQ <= 2MHZ
do {
DelayUs(996);
} while(--cnt);
#endif

#if XTAL_FREQ > 2MHZ
unsigned char i;
do {
i = 4;
do {
DelayUs(250);
} while(--i);
} while(--cnt);
#endif
}
--------------------------------
mst
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: problem sa HI-TECH C compilerom21.02.2013. u 23:08 - pre 135 meseci
Citat:
bogdan.kecman: %< %< %< a i to sto mu je zastita vezana za seriski broj diska ne pomaze (negde nacuh da su to promenili i da je sada neki dongle zastita, to mi se mnogo vise svidja posto to znaci da mozes da ga stavis na 10 kompova i samo selis dongle) %< %< %<

Sada možeš da biraš kako ćeš da licenciraš MikroE kompajlere. Donglom ili softverskom aktivacijom.
Sredili naši prijatelji jedan .dll koji to rešava u svim kompajlerima i drugim njihovim softverkim zavrzlamama.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: problem sa HI-TECH C compilerom22.02.2013. u 09:46 - pre 135 meseci
mst.petrovic,

Problem nemaš sa kompajlerom već sa funkcijama za kašnjenje koje su ti uz kompajler došle kao primeri! Dakle, ti ove fukcije koje si postovao ovde možeš prilagoditi da zadovolje tvoje potrebe sa oscilatorom koji moraš odabrati u skladu sa aplikacijom koju radiš. Ne biraš frekvenciju oscilatora tako što ti nešto radi ili ne već obrnuto. Ako radiš nešto što nije preterano zahtevno u pogledu brzine izvršavanja spusti vrednost oscilatora na neki minimum. PIC16F1937 ima i interni oscilator možda možeš i njega da iskoristiš! To jeste jedan od najjeftinijih 40-pinskih kontrolera i sam sa ga koristio u par navrata.
gorankg
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: problem sa HI-TECH C compilerom22.02.2013. u 10:53 - pre 135 meseci
@petrovic, ne znam za ostale na forumu ali meni, molim te, nemoj da persiras ... na forumu smo svi na ti, ako cemo da se pomazemo i da razmenjujemo iskustva moramo da iskuliramo formalizam

@zas, sve moz da se krekne, znam, no ja sam pobornik free sw-a + placanja komercijalnog ako to ima ikakvog smisla (naravno i ja koristim tu i tamo nesto fixovano kada je hobi u pitanju, kada ne postoji alternativa :D ) ... kada su mcu-i u pitanju free varijanta postoji tako da .. :D ... a sto se zastita tice, ja najvolem zastite koje su "per seat", dakle imam dongle, zabodem u jednu masinu, instaliram app na svim masinama, kazem im "dongle je tamo" i onda moze da radi samo jedna aplikacija u isto vreme, nebitno koja .. to mi je idealno .. imam par aplikacija koje su tako zasticene .. ove sto se vezuju na masinu, jednom instarane i slicno, te mi idu na dzigericu posto se to reinstalira, menja, prebacuje .. dakle smor, tako da sam npr taj isti picc koristio fixovan iako imam original, cd licenca ovo ono ..

@goran ++

inace

Code:

  #define DelayUs(x) { unsigned char _dcnt; \
    _dcnt = (x)*((XTAL_FREQ)/12MHZ); \
    while(--_dcnt != 0) \
    continue; }


oni kazu za ovo mora da se koristi "full optimization" da bi radilo .. sta to kaze

1. bez full optimization kompajler dodaje bloat koji ne sluzi nicemu (potvrdjeno vise puta)
2. full optimization ne radi kako treba ( _dcnt nije definisan kao volatile sto znaci da bi full optimization MORAO da obrise celu petlju posto ona ne radi nista korisno, svaki dobar kompajler ce tu petlju izbaciti kompletno napolje kao beskorisnu a da bi to radilo kako je zamisljeno _dcnt mora da se definise kao volatile)


 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: problem sa HI-TECH C compilerom22.02.2013. u 21:37 - pre 135 meseci

Više puta je pisano ali evo da praktično naznačimo gde je "problem".
Kada se predvede ovo DelayUs(uS_CNT); bez uključene optimizacije, dakle ovako:
Executing: "C:\HTSOFT\PIC18\bin\picc18.exe" -C -E"delay.cce" "delay.c" -O"delay.obj" -ASMLIST -Q -MPLAB -18F4520
Dobije se:

Code:

17:                            DelayUs(uS_CNT);    /* Adjust for error */
  0B16    0E77     MOVLW 0x77
  0B18    0100     MOVLB 0
  0B1A    6FEB     MOVWF 0xeb, BANKED
  0B1C    D003     BRA 0xb24
  0B1E    0E01     MOVLW 0x1
  0B20    0100     MOVLB 0
  0B22    6FEB     MOVWF 0xeb, BANKED
  0B24    D003     BRA 0xb2c
  0B26    F000     NOP
  0B28    F000     NOP
  0B2A    D000     BRA 0xb2c
  0B2C    0100     MOVLB 0
  0B2E    2FEB     DECFSZ 0xeb, F, BANKED
  0B30    D7FA     BRA 0xb26


Kada se sada predvede ista funkcija DelayUs(uS_CNT); sa uključenom optimizacijom, recimo:
Executing: "C:\HTSOFT\PIC18\bin\picc18.exe" -C -E"delay.cce" "delay.c" -O"delay.obj" -Zg1 -O -ASMLIST -Q -MPLAB -18F4520
Dobije se:


Code:

17:                            DelayUs(uS_CNT);    /* Adjust for error */
  0A20    0E77     MOVLW 0x77
  0A22    6ED9     MOVWF 0xfd9, ACCESS
  0A24    D002     BRA 0xa2a
  0A26    F000     NOP
  0A28    F000     NOP
  0A2A    2ED9     DECFSZ 0xfd9, F, ACCESS
  0A2C    D7FC     BRA 0xa26



Kada se funkcija DelayUs(uS_CNT); poziva više puta greška se gomila i tu nastaje razlika u proteklom vremenu.
Razlika u veličini koda pri uključenoj i isključenoj optimizaciji može biti značajna. Besplatne varijante i nemaju mogućnost optimizacije pa se zaista nepotrebno generiše veći kod ali je veliko pitanje u kojim je to slučajevima važno. Za ovaj delay je potpuno ne bitno. Ako ne odgovara vreme uvek se može doterati do željene vrednosti. XC8 recimo ima built in __delay_ms() koja daje tačan vremenski interval za kašnjenje. Nekome ko počinje treba da bude važnije to što je alat besplatan. Ne verujem da su nam svima stvari koje radimo u toj meri zavisne od brzine izvršavanja i veličine prevedenog koda. Na kraju ako neće uzmeš veći PIC :). Ja u zadnje vreme forsiram besplatni XC8 jer bih baš namerno da dođem u situaciju da mi bude neupotrebljiv al mi se ne da :). Doduše, radim samo sitne stvari ili ih bar učinim dovoljno sitnim. Onaj gore kod je inače preveden plaćenom verzijom picc18.
gorankg
 
Odgovor na temu

branko_g
Merna tehnika i elektronika

Član broj: 159227
Poruke: 756
*.dynamic.xdsl-line.inode.at.



+9 Profil

icon Re: problem sa HI-TECH C compilerom22.02.2013. u 22:03 - pre 135 meseci
U principu upotreba delay funkcije ukazuje na los programerski stil.
Obicno se takve konstrukcije koriste u "hello world" primerima zmiganja LED-ice i nigde vise.
Eventualno prilikom inicijalizacije nekog displeja, ili na primer za generisanje pomaka izmedju CS i SPI impulsa, u svakim slucaju za vreme manje od 1µs.

U glavnom programu te funkcije nisu nista izgubile.
 
Odgovor na temu

introitus
Srbija

Član broj: 9252
Poruke: 324
*.dynamic.isp.telekom.rs.



+7 Profil

icon Re: problem sa HI-TECH C compilerom22.02.2013. u 22:51 - pre 135 meseci
Citat:
bogdan.kecman:kakav ti delay treba? ja hitech ne koristim posto dzaba verzija nije ni za %$@%$& a da ga placam necu kada ima druge, bolje kompajlere koji rade posao kako treba... a

Imam par pitanja:
Koji je najbolji besplatan kompajler za PIC?
Koji su ti drugi na koje si mislio?
I naravno, koji je najbolji od komercijalnih?
Znam da ne postoji najbolji, barem preporucite neke pa da izvagam i konacno se preorjentisem sa ASMa na C :)


 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom23.02.2013. u 02:27 - pre 135 meseci
LJudi,
hvala svima na divnim objašnjenjima... :D imam još jedno pitanje ?
Koja je razlika u korišćenju internog i eksternog oscilatora. Moj kontroler, 16f1937 , podržava 32 MHz kao interni, da li bih imao neke probleme u ddaljem korišćenju ako koristim njega?
Nov sam što se tiče mikrokontrolera pa ne mogu da sagledam probleme baš objektivno...
Potrebno mi je korišćenje a/d konvertora, kapacitivnog senzora (ima već integrisana 16pina za sens-touch) i napravio bih odbrojavanje od 10 min. pa na dole....

p.s. šaljem vam neku novu biblioteku za delay (navodno je napravio neki čikica koji radi u mikrochip-u i namenjena je baš za hi-tech c compiler)





mst
Prikačeni fajlovi
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: problem sa HI-TECH C compilerom23.02.2013. u 09:02 - pre 135 meseci
Razlika između imternog i eksternog oscilatora je u stabilnosti/preciznosti. 16f1937 ima interni oscilator od 8 MHz koji PLL-om može da se umnoži 4 puta pa se tako dobije 32 MHz, a uz pomoć preskalera gomila nižih radnih frekvencija.
Mnogo puta sam napisao da treba pročitati, i to temeljno, datasheet mikrokontrolera kako bi se upoznao sa "protivnikom" sa kojime treba da se nosiš. To je "zlatno" pravilo ne samo kod mikrokontrolera već kod bilo kog čipa koji koristiš u svojim projektima.
Imaj na umu, da ako razvijaš neki sklop gde ti je jako bitna potrošnja, softver razvijaš na takav način da ti "završava posao" na najnižoj mogućoj radnoj frekvenciji.

BTW 'oće PIConje da rade i na više od 32 MHz, npr. eksterni kristal od 10 MHz x PLL = 40 MHz, al' mož' bidne nepoudano
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: problem sa HI-TECH C compilerom23.02.2013. u 10:10 - pre 135 meseci
Vremenski interval od 10min koji želiš da odradiš preko sistemskog oscilatora neće biti tačan. Imaćeš neku grešku koja između ostalog zavisi od temperature, radnog napona itd. Ako ti ta greška ne smeta koristi interni. Grešku imaš i ako koristiš eksterni ali treba da bude manja.
gorankg
 
Odgovor na temu

mst.petrovic
milos petrovic
student
nis

Član broj: 256875
Poruke: 47
*.dynamic.sbb.rs.



+1 Profil

icon Re: problem sa HI-TECH C compilerom23.02.2013. u 10:42 - pre 135 meseci
Ma ok je to što će da pogreši malo, da izlaže i sekundu pa nije problem, meni su tu više bitni minuti, ne treba da bude sad nešto posebno precizno, više me interesuje kako će da utiče na one kapacitivne senzore i na ad konverziju, predpostavljam da i tu može da se javi greška koja je dosta ozbiljnija....
mst
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: problem sa HI-TECH C compilerom23.02.2013. u 10:59 - pre 135 meseci
Za A/D knverziju koristi interni oscilagtor koji je namenjen A/D konvertoru (FRC). Na taj način nisi vezan za sistemski klok (odabiranje najmanje potrebnog broja ciklusa potrebnih za A/D konverziju). Za kapacitivne senzore ću morati da se dodatno "informišem", još uvek nemam potrebe za istima

Ako su ti potrebni određeni tajminzi, precizni koliko je precizan oscilator, poseti ovu stranicu: http://www.romanblack.com/one_sec.htm
Ima svaštanešto interesantno da se nauči
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: problem sa HI-TECH C compilerom25.02.2013. u 11:55 - pre 135 meseci
To ne ide tako ovde! Forum nije namenjen za tako nešto.
gorankg
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: problem sa HI-TECH C compilerom

Strane: 1 2

[ Pregleda: 4076 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.