[ AxeXea @ 27.12.2012. 14:59 ] @
Kako upotrebiti odnosno inplementirati komandu "Clock_kHz();" u kod (MikroC)?
Mikrokontroler bi na nekom pinu trebalo da daje impulse reda kHz.
U MikroC uputstvu i na njihovom sajtu je veoma oskudno objasnjeno.
Kad pisu HELP,trebalo bi da misle na to da je HELP potreban pocetnicima,a da inzinjerima nije ni potreban.
[ shpiki @ 27.12.2012. 15:39 ] @
HELP postoji, samo ga treba znati koristiti.
To sto tebi treba je PWM reda kHz, pa tako nesto i potrazi u HELP-u...
Drugi bitan HELP je Google.
[ AxeXea @ 27.12.2012. 15:53 ] @
Obozavam kad mi neko kaze da idem da potrazim resenje na guglu...Pa zar ti ne padne na pamet da sam vec pogledao na guglu i nisam nasao resenje.
ZNAM da postiji HELP (procitaj ponovo sta sam napisao),ali nemam ideju kako da ga "koristim" jer se taj HELP svodi bukvalno na nekoliko reci!!!
Ako TI uspevas da se snadjes sa takvim HELPovima...,svaka cast.Ja kao sto sam napisao nisam inzenjer za programiranje i meni takav help ne pomaze!
[ AxeXea @ 27.12.2012. 15:55 ] @
...jos jedna stvar!Ne treba mi PWM.
Treba mi na pinu...upaljen,ugasen.
[ shpiki @ 27.12.2012. 16:07 ] @
Ovo je jedan PWM signal

Meni to lici na "upaljen" - "ugasen".
Znaci ipak ne znas sta da trazis, a bitno da si ispljuvao HELP.
Ne znam sta si trazio na Google-u, ali mislim da ce ti ovo pomoci (ili ovo kao konkretan projekat).

PS. Ni ja nisam inzenjer.
[ AxeXea @ 27.12.2012. 18:02 ] @
Ok.,hvala sto pokusavas da pomognes.
Fazon PWM signala je koliko ja znam odnos impulsa i pauze,kao sto rekoh meni to trenutno nije potrebno.
Konkretno me interesuje koriscenje naredbe "Clock_kHz();"
U mikroc helpu zaista je veoma lose objasnjeno,toliko uopsteno da mogu ovde da copy/paste i nece zauzeti nekoliko redova :(
U linkovima za konkretne projekte koje si ostavio nisam nigde nista nasao o naredbi "Clock_kHz();",takodjer guglajuci jedino sto sam
nasao je na sajtu mikroelektronike,a tamo je copy/paste sa helpa iz mikroc-a.
Svejedno,hvala na pokusaju...:)
[ vukboban @ 27.12.2012. 19:00 ] @
"Function returns device clock in kHz, rounded to the nearest integer."
Sto bi se na srpskom reklo "funkcija pokazuje na koliko kiloherca radi PIC,zaokruzeno na najblizi int"

Znaci nikakvi impulsi na nekom pinu,nego samo broj koji pokazije na koliko kHz radi PIC...
[ AxeXea @ 27.12.2012. 19:30 ] @
Da,tako izgleda.
A ja se ponadao da na jednostavan nacin dobijem generator razlicitih frekvencija (do oko 100kHz) sa jednim PICom i jos par delcica.
Uradio sam programcic koji koristi asemblerske naredbe (NOP)da uspori petlju ali na taj nacin ne mogu da dobijem bas sve frekvencije.
Hvala.
[ shpiki @ 27.12.2012. 20:37 ] @
Ova nasa konverzacija se jednom recenicom moze formulisati kao "ja drumom a ti sumom!" :)
Citat:
AxeXea:
...jos jedna stvar!Ne treba mi PWM.
Treba mi na pinu...upaljen,ugasen.

I ovde i u prvom postu (cini mi se) si rekao da ti treba odredjena frekvencija na PINu mikrokontrolera - a to je PWM... ono sto si ti mislio uklj/isklj je takodje PWM sa faktorom ispune 50(%) - znaci isti odnos impuls/pauza...
Citat:
AxeXea:
A ja se ponadao da na jednostavan nacin dobijem generator razlicitih frekvencija (do oko 100kHz) sa jednim PICom i jos par delcica.

Mozes to da uradis, a to je ovo o cemu ja pricam. Ti si se samo zaglibio sa jednom (nepotrebnom) funkcijom u MikroC...
Jos jedan savet (koji ce ti dosta ljudi ovde ponoviti): ako se nisi gadno zaglibio sa MikroC-om, predji na neki drugi kompajler/debugger, jer je ovaj zatvoren do zla boga, nemas pristup niti jednoj biblioteci koju koristis (osim sto je pozoves sa #include).

[Ovu poruku je menjao shpiki dana 27.12.2012. u 21:51 GMT+1]
[ Genie_1984 @ 27.12.2012. 20:53 ] @
@shpiki : E tu bih se složio sa tobom. Mislim, mikroC je dobar za početak. Da se upoznaš sa mikrokontrolerima,vidiš kako šta i gde i za njega ima solidan dev board, ima sve kao gotovo ali ubrzo shvatiš da je većina biblioteka dobra samo za njihove primere i da svakoj nešto fali i onda pomisliš da je bolje da sve što ti treba ispišeš sam. A kad to pokušaš vidiš da ne ide jer ili kompajler nešto ne može da odradi ili je toliko komplikovano da brzo odustaneš...i onda promeniš kompajler :)
[ goran_68 @ 27.12.2012. 21:05 ] @
Sa jednim AVR od Atmela mozes da napravis solidan generator impulsa, bas kao sto si zamislio. Ako si radio samo PIC eto prilike da prosiris vidike. Moze i PIC sa PWM.
[ AxeXea @ 27.12.2012. 21:08 ] @
Citat:
shpiki:
Ova nasa konverzacija se jednom recenicom moze formulisati kao "ja drumom a ti sumom!" :)
Citat:
AxeXea:
...jos jedna stvar!Ne treba mi PWM.
Treba mi na pinu...upaljen,ugasen.

I ovde i u prvom postu (cini mi se) si rekao da ti treba odredjena frekvencija na PINu mikrokontrolera - a to je PWM... ono sto si ti mislio uklj/isklj je takodje PWM sa faktorom ispune 50(%) - znaci isti odnos impuls/pauza...
Citat:
AxeXea:
A ja se ponadao da na jednostavan nacin dobijem generator razlicitih frekvencija (do oko 100kHz) sa jednim PICom i jos par delcica.

Mozes to da uradis, a to je ovo o cemu ja pricam. Ti si se samo zaglibio sa jednom (nepotrebnom) funkcijom u MikroC...
Jos jedan savet (koji ce ti dosta ljudi ovde ponoviti): ako se nisi gadno zaglibio sa MikroC-om, predji na neki drugi kompajler/debugger, jer je ovaj zatvoren do zla boga, nemas pristup niti jednoj biblioteci koju koristis (osim sto je pozoves sa #include).

[Ovu poruku je menjao shpiki dana 27.12.2012. u 21:51 GMT+1]



Pa stvar je da PWM koristi jednu konstantnu frekvenciju,a ja bih hteo da na pinu imam po potrebi promenjljivu frekvenciju,zato sam rekao da mi nije potreban PWM.
Verovatno sam podosta zaglibio sa MikroC-om,ali pametan savet uvek treba poslusati!Sta preporucujes...posto planiram da se svakako dalje usavrsavam i ucim po pitanju mikrokontrolera...zapravo,odusevljen sam sa njima :)

Hvala.
[ ZAS011 @ 27.12.2012. 21:18 ] @
Citat:
Pa stvar je da PWM koristi jednu konstantnu frekvenciju,a ja bih hteo da na pinu imam po potrebi promenjljivu frekvenciju


Još jedna od nebuloza svih mikro kompajlera.

Dobio si savet da menjaš kompajler. Ima Microchip svoj C kompajler i to za džabe.

Nego primetio sam, da, za sada, samo površno čitaš dokumentaciju/help/datasheet.
[ AxeXea @ 27.12.2012. 21:36 ] @
Trudim se...,trudim se...Svakog dana u svakom pogledu sve vise napredujem :)
[ shpiki @ 27.12.2012. 21:36 ] @
Citat:
AxeXea
Pa stvar je da PWM koristi jednu konstantnu frekvenciju,a ja bih hteo da na pinu imam po potrebi promenjljivu frekvenciju

PWM ima i promenljiv odnos impuls/pauza (faktor ispune, negde oznacen sa D, negde sa a) i promenljivu frekvenciju. Znaci, oba parametra su podesiva.

Sto se kompajlera tice, ja ne koristim PIC vec AVR (naravno, nisam izbacio PIC potpuno iz upotrebe, ali recimo da mi je primaran AVR), ali mislim da je C30 besplatan (ispravice me neko vec ako sam pogresio)... znaci, Microchip ti vec daje IDE+komplajer da mozes da radis...
Drugi (koji nije besplatan, ali nista manje popularan) jeste CCS C.
Na tebi je sta ces da koristis, ali predji sa MirkoC-a i videces tek sta tu mikrokontroleri!
[ AxeXea @ 27.12.2012. 21:44 ] @
Cek malo,na MikroE sajtu imaju MikroC,MikroBasic i MikroPascal...To nije nista od onog sta meni treba?
[ shpiki @ 27.12.2012. 21:52 ] @
#offtopic
Opasno smo otisli u off, ali da odgovorim

Nista
Em sto nista nije besplatno (nije bas nista, imas cini mi se 2k slobodno, preko se naplacuje), em sto je sve na isti fazon uradjeno
Ako si nasao neki "izlecen" mikroC na netu - to je druga stvar. Isto tako mozes da nadjes i CCS C koji je jedno 100x puta bolji od mikroC (ali ja ti to nisam rekao).
Da se ti ne bi mnogo lomatao, odes na MikroChip, skines MPLAB IDE + kompajler za seriju kontrolera koju programiras (10F, 12F, 16F, 18F, 24F, 30F, 32F, ...) i imas sve to ti treba - IDE (koji i nije neki, al' ae), kompajler, debugger, simulator.
Ne znam koji programator koristis, ali preporuka je (takodje) da nabavis/napravis/kupis PICKit2 (ili 3) i uzivas...

Ako si odustao od Clock_kHz(), pronadji ovde na forumu, bilo je mali milion poruka na ovu temu (ide+kompajler+itd).

@EDIT
Isto tako, ako se nisi zakucao sa C - imas ovde na forumu coveka pod imanom rsinisa koji se trudi da napise (mozda i prvi) tutorijal na srpskom za PicBasic + je napravio i mini razvojni sistem sa jednim PIC kontrolerom i pokrenuo je ucenje od 0 - znaci teorija, pa primeri i programiranje za sve ono sto ces sresti kasnije (ili bar 99% toga) - UART, ADC, LCD, 7seg, i jos more periferija... Uporedo sa tim, pokrece se i C tutorijal za isti taj HW koji je rsinisa napravio, ali njega pise drugi kolega sa foruma (zaboravio sam koji, molim da se ne ljutri ).
[ AxeXea @ 28.12.2012. 12:01 ] @
Ok. odustao sam od "Clock_kHz()" :)
MPLAB sam koristio kad sam prvi put uzeo mikrokontroler u ruke,ali su me "pametniji" posavetovali da predjem na MikroC.Od tada sam se povremeno igrao sa mikrokontrolerima kad sam imao vremena(sto na zalost i nije bilo previse).
Zainteresovao si me za taj CCS,videcu da potrazim po netu koliko danas.
Koristim PICkit2 programator...Imam i neki stariji,ali mi je ovaj dobar jer ide na USB i ne zahteva eksterno napajanje.
Hvala i mnogo pozdrava.
[ ha_23 @ 29.12.2012. 14:17 ] @
Na funkcija Clock_Khz(); nije mu namena da generira clock na PINu.
Funkcija sluzi da procita trenutna frekfencija u Khz na koja radi PIC.

Clock_kHz
Prototype unsigned Clock_kHz(void);

Returns Device clock in kHz, rounded to the nearest integer.

Description Function returns device clock in kHz, rounded to the nearest integer.

This is an “inline” routine; code is generated in the place of the call, so the call doesn’t count against the nested call limit.

Requires Nothing.

Example clk = Clock_kHz();

Za generirane frekfencija na odredeni pin se koristi PWM Library.
Evo primer od HELP za MikroC
Code:
unsigned short current_duty, old_duty, current_duty1, old_duty1;

void InitMain() {
  ANSEL  = 0;                         // Configure AN pins as digital
  ANSELH = 0;
  C1ON_bit = 0;                       // Disable comparators
  C2ON_bit = 0;
  
  PORTA = 255;
  TRISA = 255;                        // configure PORTA pins as input
  PORTB = 0;                          // set PORTB to 0
  TRISB = 0;                          // designate PORTB pins as output
  PORTC = 0;                          // set PORTC to 0
  TRISC = 0;                          // designate PORTC pins as output
  PWM1_Init(5000);                    // Initialize PWM1 module at 5KHz
  PWM2_Init(5000);                    // Initialize PWM2 module at 5KHz
}

void main() {
  InitMain();
  current_duty  = 16;                 // initial value for current_duty
  current_duty1 = 16;                 // initial value for current_duty1

  PWM1_Start();                       // start PWM1
  PWM2_Start();                       // start PWM2
  PWM1_Set_Duty(current_duty);        // Set current duty for PWM1
  PWM2_Set_Duty(current_duty1);       // Set current duty for PWM2

  while (1) {                         // endless loop
    if (RA0_bit) {                    // button on RA0 pressed
      Delay_ms(40);
      current_duty++;                 // increment current_duty
      PWM1_Set_Duty(current_duty);
     }

    if (RA1_bit) {                    // button on RA1 pressed
      Delay_ms(40);
      current_duty--;                 // decrement current_duty
      PWM1_Set_Duty(current_duty);
     }

    if (RA2_bit) {                    // button on RA2 pressed
      Delay_ms(40);
      current_duty1++;                // increment current_duty1
      PWM2_Set_Duty(current_duty1);
     }

    if (RA3_bit) {                    // button on RA3 pressed
      Delay_ms(40);
      current_duty1--;                // decrement current_duty1
      PWM2_Set_Duty(current_duty1);
     }

    Delay_ms(5);                      // slow down change pace a little
  }
}

[ ZAS011 @ 29.12.2012. 14:55 ] @
@ha_23:
BeZ direktnog pisanja po registrima uC, ako koristiš mikroE kompajlere, nemaš PWM promenljiv po frekvenciji.
PWMx_Inif() možeš da upotrebiš samo jednom u programu, ne i više puta, sa različitim baznim frekvencijama za PWM.
[ ha_23 @ 29.12.2012. 16:25 ] @
@ZAS011:
Da tako e,
Code:
Calculation of the PWM frequency value is carried out by the compiler, as it would produce a relatively large code if performed on the library level. 
Therefore, compiler needs to know the value of the parameter in the compile time. That is why this parameter needs to be a constant, and not a variable.