Proteus, mikrokontroleri

Hobi i ostala elektronika

Urednik: alexa_pg

Pravila foruma
Praktikujemo da na kraju opišemo kako smo rešili problem. Zatim zatvorimo temu >UPUTSTVO<
Avatar
mesecar
Neaktivan
Postovi: 481
Pridružen: 26 Sep 2006, 23:32
Location: Beograd
Lokacija: Rakovica

Proteus, mikrokontroleri

Post napisao mesecar » 11 svi 2007, 13:35

Pati li se neko sa Proteusom?
Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?

Avatar
rubin_miki
Preminuo
Postovi: 3382
Pridružen: 13 Avg 2006, 00:22
Location: Prilep Makedonija
Specialty: tv-multimedia
Kontakt:

Post napisao rubin_miki » 11 svi 2007, 13:50

ako radis sa yahoogroups, mozes ovde..
mikroelektronika@yahoogroups.com
dobri momci, dobro poznavanje..
ce da izadjem na televizor,a????
http://www.macedonium.org/makedonija.swf

Avatar
mesecar
Neaktivan
Postovi: 481
Pridružen: 26 Sep 2006, 23:32
Location: Beograd
Lokacija: Rakovica

Post napisao mesecar » 11 svi 2007, 14:01

Prisutan sam tamo, svakodnevno.
Trenutno cekam odgovor i savet za jedan problem, ali sam mislio da mozda i neko odavde zna odgovor.

Avatar
16F84
_
_
Postovi: 7
Pridružen: 11 Mar 2007, 12:49
Lokacija: Slovenia

Re: Proteus, mikrokontroleri

Post napisao 16F84 » 12 svi 2007, 20:03

mesecar je napisao: Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?
Pic i assembler ...pitaj što te interesuje...

Avatar
rubin_miki
Preminuo
Postovi: 3382
Pridružen: 13 Avg 2006, 00:22
Location: Prilep Makedonija
Specialty: tv-multimedia
Kontakt:

Post napisao rubin_miki » 12 svi 2007, 20:05

ooo, Slovenac, dobrodosao..
Mesecar, pod kojim imenom si na grupu??
ce da izadjem na televizor,a????
http://www.macedonium.org/makedonija.swf

Avatar
mesecar
Neaktivan
Postovi: 481
Pridružen: 26 Sep 2006, 23:32
Location: Beograd
Lokacija: Rakovica

Post napisao mesecar » 13 svi 2007, 02:13

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.

Avatar
16F84
_
_
Postovi: 7
Pridružen: 11 Mar 2007, 12:49
Lokacija: Slovenia

Post napisao 16F84 » 13 svi 2007, 09:42

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.

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

Avatar
mesecar
Neaktivan
Postovi: 481
Pridružen: 26 Sep 2006, 23:32
Location: Beograd
Lokacija: Rakovica

Post napisao mesecar » 18 svi 2007, 20:53

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.

joska
_
_
Postovi: 2
Pridružen: 20 Jun 2007, 09:23
Lokacija: Temerin

Post napisao joska » 20 Jun 2007, 14:46

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!

Odgovori

Natrag na “Elektronika”