U vezi osvetljenja 7 segmentnog led displeja

  • 26 odgovora
  • 9.117 pregleda
Re: U vezi osvetljenja 7 segmentnog led displeja 25.10.2012. u 17:57 · pre 170 meseci #21
Citat:
Nedoumica mi je u tome što ako pozovem displej da prikaže rezultat i u tome mi po cifri treba 5ms smatram da mi je preveliko vreme jer dok to radi ne posmatra mi spoljne parametre (np. temperaturu, prekidač...) ili grešim. Interesuje me da li kad uključim interapt on u "sebi" broji a dok "broji" mogu u glavnom programu da mu zadam da nešto drugo radi a kad dođe do prekida (prekoračenje vremena) on prekida glavni program i uradi ono što sam mu zadao pa se vrati na glavni program. Šta je tačno prvo,drugo ili nijedno? Usputno pitanje je, kako da AD konverziju, posle isčitavanja napona, da dobijem decimalni zapis srazmeran pročitanom naponu (np. ulazni napon 1,54V a decimalni zapis bude 154). Posle toga znam da razložim 154 na pojedinačne cifre (1,5,4) i njih da prenesem na displej. Znam da širim temu ali šta ću kad se pitanja sama nameću a vi srećom imate (nemate?) strpljenja za mene. Unapred hvala.


Hmm, glavni program se izvrsava sve dok ne dodje do prekida(interupt). On moze biti spoljasnji (npr pritisak na taster) ili unutrasnju (signal da je recimo AD konverzija zavrsena ili da je tajmer odbrojao svoje). Kada dodje do prekida glavni program privremeno staje i krene da se izvrsava prekidna rutina, tj sta je u njoj definisano. Kada se prekidna rutina zavrsi glavni program nastavlja da se izvrsava tacno tamo gde je stao. Upravo je u tome prednost interapta jer ne "zaglupljujes" mcu sa for petljom. Brojanje prepustas tajmeru, a za to vreme ti mozes nesto korisno odraditi u glavnom programu.
Re: U vezi osvetljenja 7 segmentnog led displeja 25.10.2012. u 18:47 · pre 170 meseci #22
Citat:
strš:
Ovo je podprogram koji pozivam svaki put kad treba da ispišem nešto na displeju s'tim da moram da ga pozivam češće ako želim da displej svetli intezivnije. Znam da mi govorite da radim sa interaptom ali nisam se još oprobao sa tim jer mislim da mi je za sada komplikovano. Čitam, ali još uvek ne shvatam.


gledas na mcu "pogresno" :)

glavna prednost MCU-a u odnosu na "procesor" je sto pored procesora sam MCU ima jos cudo raznog hw-a koji radi nezavisno od samog procesora tako da ti mozes da zadas tom hardweru da nesto radi dok ti radis nesto drugo ... na primer slanje bajta preko seriskog porta moze dugo da traje, posebno ako je komunikacija na niskoj brziji 2400 ili 9600 boda .. zato ako trosis serisku komunikaciju uzmes mcu koji ima hardwerski uart ... ti tom hardweru kazes "posalji ovaj bajt" i ti picis dalje a on salje bajt koliko mu treba da ga posalje ... ista prica za tajmer, ti setujes tajmer da te "zovne" svakih 5ms ili svakih 1ms ili svakih ... on te "zove" tako sto napravi "interrupt" ..

interrupt ti je lako da skontas.. imas jednu funkciju koja je "interrupt handler", kada god se desi neki interrupt procesor stane, baci na stek svoje sadasnje stanje i krene da izvrsava tu funkciju. Kada zavrsi sta je u toj funkciji vrati staro stanje sa steka i nastavi tacno tamo gde je bio prekinut. Ti sada u toj interapt rutini / interrupt hendleru / interrapt funkicji na pocetku pitas "koji te je interapt pozvao" (sta se to desilo) i u odnosu na to uradis sta god zelis da uradis. Ti na pocetku svog programa (ili u sredini ili ..) kazes koja sve desavanja ce da prave interapt i to je to ..

To ti je prosto objasnjenje, sa "jacim" mcu-ima mozes da imas vise nivoa interapta sa razlicitim prioritetima etc etc ali to te za pocetak ne zanima, za pocetak te samo zanima ovaj jedan, pa ces dalje lako ... inace cest termin na koji ces nailaziti je "interrapt vektor" a to je samo fancy naziv za adresu interapt funkcije

pogledaj one primere koje sam ti postavio, jako su jednostavni, nemoj da pravis gresku da na mcu gledas kao na cpu sto pravi vecina ljudi koji kao programeri pocinju sa hardwerom pa onda da bi odradili neke vrlo jednostavne stvari koriste razne RTOS-e koji im bloatuju vec vrlo lose napisan kod
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: U vezi osvetljenja 7 segmentnog led displeja 25.10.2012. u 21:13 · pre 170 meseci #24
Zahvalan sam na tačnim i konkretnim odgovorima. Potvrdili ste moje "sumlje" za interapt tako da mi je sledeći korak u učenju MCu-a prekidi i njihova primena. Sajtove ću da pregledam i detaljno da pročitam tako da sa ovom temom, za sada, možemo da stanemo. Mnogo više sada znam nego na početku teme zahvaljujući Vama. Još jednom veliko HVALA i ako mi bude potrebna podrška ponovo ću pisati. Inače sa ovog foruma počeo sam da učim o mikrokontrolerima i već imam neko predznanje koje treba da se oblikuje i uvećava.
E sad, kao što sam napisao u predhodnom postu interesuje me još jedno pitanje a to je pretvaranje iščitane AD konverzije u decimalni broj koji je isti kao isčitana vrednost (1,45V da bude decimalno 145). Ako sam previše dosadan sa pitanjima ili treba da otvorim novu temu "recite" da "ućutim ili otvorim novu temu.
Zahvalan vaš učenik.
Re: U vezi osvetljenja 7 segmentnog led displeja 25.10.2012. u 23:26 · pre 170 meseci #27
Citat:
strš:
Potvrdili ste moje "sumlje" za interapt tako da mi je sledeći korak u učenju MCu-a prekidi i njihova primena.


neki ljudi gledaju da zaobilaze interapte koliko god mogu i da na sve moguce nacine odrade posao osim kroz interapte .. ne znam iz cega to ide ali no .. 80+% upotrebe mikrokontrolera je upravljanje interaktivnim procesima. Za "linearne procese" su mehanicki programatori (seti se starih ves masina) odlicni a "digitalizacija" istih je obicno isla uz jedan paralelni eprom i malo 74### digitalije .. Kada su interaktivni procesi u pitanju periferija ne trigeruje desavanja uvek istim redosledom i procesna kontrola zavisi od mnogo cega .. da bi pravilno odgovorio na zahteve interaktivnog procesa interapt je jedini pravilan nacin za rad ... naravno, i dalje postoje procesi gde su interapti visak :) ali realno 80% procesa ih zahteva tako da je pravilno razumevanje interapta ubedjljivo najbitniji "princip/koncept" koji treba usvojiti kada je embedded razvoj u pitanju. Interapti kriju dosta "skrivenih problema" iliti sto bi Dave rekao "trap for young players", mora se brinuti o stvarima kao sto je optimizacija koda koju pravi kompajler (volatile promenljive), duzina trajanja interapt rutine, preklapanje interapata, prioriteti etc etc ... no to sve dodje polako vremenom, ne treba se plasiti u startu i treba se sa tim uhvatiti u kostac sto pre
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme