Proteus, mikrokontroleri
Urednik: alexa_pg
Pravila foruma
Praktikujemo da na kraju opišemo kako smo rešili problem. Zatim zatvorimo temu >UPUTSTVO<
Praktikujemo da na kraju opišemo kako smo rešili problem. Zatim zatvorimo temu >UPUTSTVO<
Proteus, mikrokontroleri
Pati li se neko sa Proteusom?
Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?
Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?
- rubin_miki
- Preminuo
- Postovi: 3382
- Pridružen: 13 Avg 2006, 00:22
- Location: Prilep Makedonija
- Specialty: tv-multimedia
- Kontakt:
ako radis sa yahoogroups, mozes ovde..
mikroelektronika@yahoogroups.com
dobri momci, dobro poznavanje..
mikroelektronika@yahoogroups.com
dobri momci, dobro poznavanje..
ce da izadjem na televizor,a????
http://www.macedonium.org/makedonija.swf
http://www.macedonium.org/makedonija.swf
Re: Proteus, mikrokontroleri
Pic i assembler ...pitaj što te interesuje...mesecar je napisao: Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?
- rubin_miki
- Preminuo
- Postovi: 3382
- Pridružen: 13 Avg 2006, 00:22
- Location: Prilep Makedonija
- Specialty: tv-multimedia
- Kontakt:
ooo, Slovenac, dobrodosao..
Mesecar, pod kojim imenom si na grupu??
Mesecar, pod kojim imenom si na grupu??
ce da izadjem na televizor,a????
http://www.macedonium.org/makedonija.swf
http://www.macedonium.org/makedonija.swf
Pa, da krenem.
Kontroler je PIC16F877.
Pisao sam neki program u Proton Pic bejziku, i probao simulaciju sa Proteusom V7.1sp2. Ta kombinacija je radila, dok nisam ubacio interapte sa porta B u igru.
Probao sam softverski interapt, naredbu ON INTERRUPT.
Kad mi se desi promena na RB0, program mi skoci na rutinu za obradu prekida regularno, uradi taj deo koda, vidim da je dosao do naredbe :
INTCON.1=0
ali u registrima kontrolera se vidi da se taj bit ne ponisti, i sledeci put simulacija nece da ode u interapt rutinu.
Normalno, pre interapt rutine imam naredbe DISABLE a posle ENABLE
Ovde ili ja nesto pogresim, ili je bag u Proteusu, nije ni bitno puno. Mene bi interesovalo nesto drugo.
Softverski interapt je losija stvar od hardverskog, a ja bih rado koristio hardverski, ali ne znam sta sve treba da pamtim od registara na pocetku interapt rutine. Posto kod hardverskog interapta moze da se desi da se bejzik naredba prekine u pola izvrsavanja,voleo bih da mi neko pomogne oko pisanja asm koda koji pamti sve sta je potrebno da bi po zavrsetku interapt rutine bejzik program nastavio da se odvija normalno.
Ja cak ne znam da li je to moguce?
Znaci interesuje me asm kod koji cu kasnije koristiti kao makro kad imam potrebu da upotrebim hardverski interapt unutar bejzik programa.
Ja mnogo vise koristim Bascom, i atmelovu familiju 8051, i tamo nemam takvih problema.
Sada sam izabrao ovaj kontroler zbog 8 AD konvertora, ali ako ovo ne resim na zadovoljavajuci nacin, vraticu se Atmelu i jednom PIC12F675 kao ADC-u. Jedini razlog sto to ne uradim je sto mi treba 5 ADC kanala.
Kontroler je PIC16F877.
Pisao sam neki program u Proton Pic bejziku, i probao simulaciju sa Proteusom V7.1sp2. Ta kombinacija je radila, dok nisam ubacio interapte sa porta B u igru.
Probao sam softverski interapt, naredbu ON INTERRUPT.
Kad mi se desi promena na RB0, program mi skoci na rutinu za obradu prekida regularno, uradi taj deo koda, vidim da je dosao do naredbe :
INTCON.1=0
ali u registrima kontrolera se vidi da se taj bit ne ponisti, i sledeci put simulacija nece da ode u interapt rutinu.
Normalno, pre interapt rutine imam naredbe DISABLE a posle ENABLE
Ovde ili ja nesto pogresim, ili je bag u Proteusu, nije ni bitno puno. Mene bi interesovalo nesto drugo.
Softverski interapt je losija stvar od hardverskog, a ja bih rado koristio hardverski, ali ne znam sta sve treba da pamtim od registara na pocetku interapt rutine. Posto kod hardverskog interapta moze da se desi da se bejzik naredba prekine u pola izvrsavanja,voleo bih da mi neko pomogne oko pisanja asm koda koji pamti sve sta je potrebno da bi po zavrsetku interapt rutine bejzik program nastavio da se odvija normalno.
Ja cak ne znam da li je to moguce?
Znaci interesuje me asm kod koji cu kasnije koristiti kao makro kad imam potrebu da upotrebim hardverski interapt unutar bejzik programa.
Ja mnogo vise koristim Bascom, i atmelovu familiju 8051, i tamo nemam takvih problema.
Sada sam izabrao ovaj kontroler zbog 8 AD konvertora, ali ako ovo ne resim na zadovoljavajuci nacin, vraticu se Atmelu i jednom PIC12F675 kao ADC-u. Jedini razlog sto to ne uradim je sto mi treba 5 ADC kanala.
Kad se desi neki interupt PC se pokreče na lokaciju 0x04. Program če se izvodit od ove lokaije dalje. Primer kako bi to bilo u assembleru:
Na lokaciji 0x04 imamo instukcijo GOTO koja preusmerava program na kodo koja treba da se izvede kot prekida. Najprije memoriziramo W i STATUS register, koji če se verovatno u nasoj rutini promenuti. Tako da ga mozemo po zavrsetku vratiti u stanje kakvo je bilo prije izvrsaja rutine prekida. Ako je ukopčano više iterupta, preveravamo koji se je desio. Na završetku kode softerrsko je potrebno brisati flag prekida. Vratimo W i STATUS. Posle instrukcije RETFIE program se vrati nazad od dakle gde se je prekid izvrsio.
Na lokaciji 0x04 imamo instukcijo GOTO koja preusmerava program na kodo koja treba da se izvede kot prekida. Najprije memoriziramo W i STATUS register, koji če se verovatno u nasoj rutini promenuti. Tako da ga mozemo po zavrsetku vratiti u stanje kakvo je bilo prije izvrsaja rutine prekida. Ako je ukopčano više iterupta, preveravamo koji se je desio. Na završetku kode softerrsko je potrebno brisati flag prekida. Vratimo W i STATUS. Posle instrukcije RETFIE program se vrati nazad od dakle gde se je prekid izvrsio.
Kod: Označi sve
cblock 0x20 ;SNR (RAM)
WTMP,STMP
endc
org 0x0 ;reset vektor
goto GLAVNI
org 0x04 ;prekid vektor
goto PREKID
PREKID
movwf WTMP ;memoriziramo W
swapf STATUS,W
movwf STMP ;memoriziramo STATUS
clrf STATUS
btfsc INTCON,RBIE ;testiramo koji prekid se je desio (RB0)
goto RB_IRQ ;skok na kodo koja treba da se izvede ob prekid-u RB0
END_IRQ
swapf STMP,W
movwf STATUS ;vratimo status
swapf WTMP,f
swapf WTMP,w ;vratimo W
retfie ;end prekid
RB_IRQ
;
;koda koja se izvede kod prekida RB0
bcf INTCON,RBIE ;softwersko se brise flag prekida
goto END_IRQ
GLAVNI ;glavna koda
;koda prije ukopcanja prekida
;
movlw b'10010000'
movwf INTCON ;ukljucen RB0INT interupt (bit4)
;koda van interupta
;
;
end
Posle silnih pokusaja sam definitivno odustao od simulacije interapta u Proteusu.
Ova verzija ima bag sa interaptima, jer cim dovedem neki signal na ulaz RB0, vise ne mogu softverski da ponistim INTCON.1, vec taj bit ostane zakucan na kecu.
Odradio sam simulaciju sa IF... THEN naredbama, pa kad budem uradio plocicu probacu sve to u realnom okruzenju sa interaptima.
Sad radim deo oko AT89s52, to mi je drugi MCU na plocici, pa posle toga krecem u planiranje stampe.
Hvala jos jednom.
Ova verzija ima bag sa interaptima, jer cim dovedem neki signal na ulaz RB0, vise ne mogu softverski da ponistim INTCON.1, vec taj bit ostane zakucan na kecu.
Odradio sam simulaciju sa IF... THEN naredbama, pa kad budem uradio plocicu probacu sve to u realnom okruzenju sa interaptima.
Sad radim deo oko AT89s52, to mi je drugi MCU na plocici, pa posle toga krecem u planiranje stampe.
Hvala jos jednom.
http://www.oshonsoft.com/
Odlicni simulatori.Ja koristim picsimulator,i pic18simulator.Licenca za "nase ljude"kako mi je to autor tih programa objasnio u mailu je 500 dinara.Platio sam za oba,i veoma sam zadovoljan.
Inace ja programiram iskljucivo u assembler-u.
Ovaj kod sto je postavio 16F84 je ispravan,i treba da ti resi probleme.
Pozdrav!
Odlicni simulatori.Ja koristim picsimulator,i pic18simulator.Licenca za "nase ljude"kako mi je to autor tih programa objasnio u mailu je 500 dinara.Platio sam za oba,i veoma sam zadovoljan.
Inace ja programiram iskljucivo u assembler-u.
Ovaj kod sto je postavio 16F84 je ispravan,i treba da ti resi probleme.
Pozdrav!