C ... vremensko ogranicenje
Moderators: pedja089, stojke369, [eDo], trax
C ... vremensko ogranicenje
molim vas,program u c-u za neki pic bilo koji samo da vidim naredbe za vremenska ogranicenja,npr da dioda svijetli 10 sekundi,te da se nakon toga ugasi
Re: C ... vremensko ogranicenje
Evo, PIC16F628A @ 8MHz-a (za neki drugi pic moras samo prilagoditi mcu_init funkciju), pisano za HI-TECH PICC kompajler.
Program ti mjenja stanje na RB0 pinu svakih 10s.
Program ti mjenja stanje na RB0 pinu svakih 10s.
- Attachments
-
- code.zip
- (1.42 KiB) Downloaded 291 times
Re: C ... vremensko ogranicenje
Ej puno ti hvala idem isprobati,dobivao sam informacije da je moguce samo nekoliko milisekundi,za vece ogranicenje kao da trebam koristiti prekide,hvala ...
Re: C ... vremensko ogranicenje
sad sam bio pogledao cod,ipak je pomocu funkcija,mislio sam da postoji jednostavniji nacin ... samo zelim da kad pritisnem tipku LED svijetli 5 sekundi,te se ugasi nakon,a tipka ostane pritisnuta ...
Re: C ... vremensko ogranicenje
JA POKUSAVAM na ovaj neki nacin ,ali nikako ne mogu vise od sekunde da svijetli,mozes li ovo korigirati,ako ima smisla ... fakat mi je nejasno to,sjecam se u osnovnoj skoli u Qbasicu kad sam programirao rob.ruku samo sam napisao sleep 5 nest tipa toga i sve super,a u ovome c-u ovo vremensko ogranicenje mi se ne svidja,ali zelim to shvatiti ...
#include<htc.h>
#define _XTAL_FREQ 20000000
void DelayS()
{
while(1){
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
}
}
void main(void)
{
TRISA=0xff;
TRISB=0x00;
PORTB=0;
while(1) {
if(RA0==0){ RB0 = 1;
DelayS(10);
}
}
}
jesam li uopce na dobrom putu ...
#include<htc.h>
#define _XTAL_FREQ 20000000
void DelayS()
{
while(1){
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
}
}
void main(void)
{
TRISA=0xff;
TRISB=0x00;
PORTB=0;
while(1) {
if(RA0==0){ RB0 = 1;
DelayS(10);
}
}
}
jesam li uopce na dobrom putu ...
Re: C ... vremensko ogranicenje
Bez ljutnje ali nemoj uciti iz tih debilnih primjera, pozivanje delay funkcija ima smisla do recimo max 1ms da bi pojednostavio program, ustvari delay funkcije ne treba uopste koristiti. Svi mikrokontroleri imaju po nekoliko tajmera koji cekaju da se setuju i ukljuce i da rade taj sporedni posao a samom CPU ostavi nesto korisnije da radi.
Recimo taj tvoj primjer od gore radi to da ne radi nista, osim sto je CPU mikrokontrolera u petlji u kojoj ne radi nista korisno tih 10 sekundi.
Pogledaj neki primjer za setovanje tajmera da ukljucuje interupt(prekid). Znaci svaki puta kad tajmer "nazovimo" izbroji on ce ukljuciti prekid, ti samo treba da brojis te prekide, recimo imas na svakih 5ms prekid(interupt) , treba da izbrojis za 10s je 10000ms / 5ms = 2000 , kada izbrojis do 2000 prekida, resetuj brojac i ukljuci ili iskljuci sta ti je potrebno. A 99% vremena ti ostaje CPU slobodan da nesto radi osim da vrti beskorisnu petlju.
Kako radis sa tipkom moras rijestiti i debounce (istitravanja kontakata) , ako mislis raditi i nesto drugo osim cekati 10s.
Nemam vremena, tvoj primjer radi tako da samo jednom ukljuciti izlazni pin i gotovo, poslije nema smisla vise ni da pritiskas tipku kad ostaje RB0 na jedinici.
Radis u C-u ,imas gotove primjere u kompajleru.
Recimo taj tvoj primjer od gore radi to da ne radi nista, osim sto je CPU mikrokontrolera u petlji u kojoj ne radi nista korisno tih 10 sekundi.
Pogledaj neki primjer za setovanje tajmera da ukljucuje interupt(prekid). Znaci svaki puta kad tajmer "nazovimo" izbroji on ce ukljuciti prekid, ti samo treba da brojis te prekide, recimo imas na svakih 5ms prekid(interupt) , treba da izbrojis za 10s je 10000ms / 5ms = 2000 , kada izbrojis do 2000 prekida, resetuj brojac i ukljuci ili iskljuci sta ti je potrebno. A 99% vremena ti ostaje CPU slobodan da nesto radi osim da vrti beskorisnu petlju.
Kako radis sa tipkom moras rijestiti i debounce (istitravanja kontakata) , ako mislis raditi i nesto drugo osim cekati 10s.
Nemam vremena, tvoj primjer radi tako da samo jednom ukljuciti izlazni pin i gotovo, poslije nema smisla vise ni da pritiskas tipku kad ostaje RB0 na jedinici.
Radis u C-u ,imas gotove primjere u kompajleru.
Re: C ... vremensko ogranicenje
Hvala na objasnjenju,dobro,ja sam stavio ovdje diodu,ali ubiti mi treba za programiranje robotske ruke,tj moze i bez da pritisnem tipku,npr.Kad ukljućim napajanje da elektromotor radi 5 sekundi ...
,te stane,onda ukljucim drugi elektromotor koji radi npr.10 sekundi ... to me zanima,sad sam shvatio da se to ne radi s delay-om ... pokusavam shvatiti kako da izlaz bude aktivan sekundi koliko ja da odredim,nigdje ne mogu nac neki lijep primjer toga ...
,te stane,onda ukljucim drugi elektromotor koji radi npr.10 sekundi ... to me zanima,sad sam shvatio da se to ne radi s delay-om ... pokusavam shvatiti kako da izlaz bude aktivan sekundi koliko ja da odredim,nigdje ne mogu nac neki lijep primjer toga ...
Re: C ... vremensko ogranicenje
Da bi nešto znao, naučio, moraš to iskreno i željeti. Tu, na ovom forumu, imaš sasvim dobro predvanje o programiranju u C-u ( Tartufi ) za računala specijalne namijene. Nije važno što je za Atmega MCUe jer principielno su kontroleri koje ti navodiš i ATmega/AVR slična klasa.0leee wrote:pokusavam shvatiti kako da izlaz bude aktivan sekundi koliko ja da odredim,nigdje ne mogu nac neki lijep primjer toga ...
Izvini, jedna mi je stvar neobična u tvojim postovima, ti nam pričaš kako ti treba pomoć oko stvari koji su osnova rada s računalima spec. namjene; kao prekidne rutine, prekidni vektor, setiranje timera itd... Sve bi to bilo uredu za početnika al ti govoriš kako programiraš ruku robota.
A da pođeš redom i najprije pažljivo pročitaš pisanje @InThestillOftheNight o toj temi. Pođeš od lampica pa kad njih svladaš, onda tri lampice i tako koju godinu. Automatika... hm.
Iz pitanja koje postavljaš se vidi da ti ni "paljenje lampica" neide (izvini) a robote bi programirao. U tehničku dokumentaciju MCU-a vjerojatno nisi ni zavirio, kao i mnogi, a kamoli je proučio itd.
Neće i nemože compiler da za tebe odradi ono što je tvoj posao.
Ponovit ću ti, programiranje MCU-a nema gotovo nikakve veze s programiranjem PC-a IBM x86 klase. Kako je već rečeno, to su dva jako različita svijeta. Ovdje se neke stvari o HW-ru samog kontrolera kao i njegovoj internoj arhitekturi moraju naučit.
I na kraju, nebih bio sam prema sebi korektan, kad ti nebih skrenuo pažnju na assembler. Dobri programeri ga moraju poznavati pogotovo na računalima spec. namjene.
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
- Nikola Tesla
Re: C ... vremensko ogranicenje
Napravio sam robotsku ruku u 8.razredu koja je sasvim lijepo radila,napravio sam je u qbasicu,i nije bilo nikakvih problema ... izmedju robotske ruke s 4motora i 4 ledice nema nikakve razlike,a to sto me zanimaju neke stvari i zelim shvatiti C,mislim da je u redu ... ...bio bi mi od vece pomoci kad bi mi napisao da izlaz radi 5 sekundi,lijep pozdrav =)
Re: C ... vremensko ogranicenje
daj vise informacija, koji tocno pic, gdje isprobavas: simulator ili realno, vidim da si umetnuo htc.h header, jel ti compiler sigurno ht picc?
Re: C ... vremensko ogranicenje
Ovako,u MPLABU onaj HI-TECH c compiler,debbuger mi je proteus u kojemu simuliram rad sklopa,pic je 16f84A,oscilator je 20 Ghz ...
Re: C ... vremensko ogranicenje
Evo, valjda sam dobro shvatio; Kad pritisnes tipku upali se dioda i ona svijetli 5 s bez obzira dal je tipka pritisnuta i duze. Da bi dioda opet zasvijetlila trebas otpustiti tipku (ukoliko vec nisi) i opet ju pritisnuti.
S druge strane ako ti zelis pritisnuti tipku i da ona ostane pritisnuta trebas koristiti prekidac umjesto. Opcionalno tvoja robotska ruka moze ispustiti ciglu ili neki komad zeljeza na tipku.
S druge strane ako ti zelis pritisnuti tipku i da ona ostane pritisnuta trebas koristiti prekidac umjesto. Opcionalno tvoja robotska ruka moze ispustiti ciglu ili neki komad zeljeza na tipku.
- Attachments
-
- code.zip
- (33.94 KiB) Downloaded 284 times
Re: C ... vremensko ogranicenje
uf,kad pritisnem tipku LED se upali,i vise se nikako ne gasi,ne radi mi nazalost,ili je kod kriv ili neznam vise =)
Re: C ... vremensko ogranicenje
napravi screenshoot sheme pa ga postaj, takodjer pronadji htc.h i pic.h datoteke pa ih postaj. Zelim vidjet kak je definiran config macro. Nemres samo tak maknuti tu liniju, mozda je wdt ukljucen pa ti resetira pic, mozda nije definiran hs tip oscilatora pa uopce ne vrti. Nisam nikada koristio taj proteus sim. tak da neznam kolka mu treba realnost.
Re: C ... vremensko ogranicenje
Sto se tice Proteusa(labcenter electronic) ... imas schematic ISIS,te PCB ARES koji sam slaze komponente,mozes ga povezat s MPLABOM,program je vrh,zaista neznam jel postoji bolji ...
Re: C ... vremensko ogranicenje
simulira u real time i sve je savrseno vidljivo,ovo na slici je moja plocica za simulaciju ,zanemari onaj lijevi dio s cudno postavljenim diodama
Re: C ... vremensko ogranicenje
otvori chip_select.h i pronadji rijec _16f84a te vidi koja se datoteka ukljucuje za taj proc. Postaj ju, trebala bi biti nesto kao pic1684.h!
c1 i c2 probaj staviti 20pF.
Malo su mi cudni spojevi cvorova, samo tak, predjes linijom preko, neko zadebljanje kao tocka nista?
c1 i c2 probaj staviti 20pF.
Malo su mi cudni spojevi cvorova, samo tak, predjes linijom preko, neko zadebljanje kao tocka nista?
Re: C ... vremensko ogranicenje
Ma,ne spojevi su u redu kad se spaja lijepo se osjeti je li spoj ili nije,i prilikom zooma je sve dobro spojeno.
e stvarno se nadam da ce mi to proraditi sto pokusavam
...
u qbasicu upises SLEEP 5 i izlaz radi neko vrijeme,sad nezz jesu li to sec,ali radi ,zar nema nesto tako jednostavno u c-u,oni delay prekratko traju,a ova komb-ne radi =)
e stvarno se nadam da ce mi to proraditi sto pokusavam
...
u qbasicu upises SLEEP 5 i izlaz radi neko vrijeme,sad nezz jesu li to sec,ali radi ,zar nema nesto tako jednostavno u c-u,oni delay prekratko traju,a ova komb-ne radi =)
Re: C ... vremensko ogranicenje
********** je li dobra datoteka ?