Stranica: 1/1.

Proteus, mikrokontroleri

Napisan post: 11 svi 2007, 13:35
napisao mesecar
Pati li se neko sa Proteusom?
Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?

Napisan post: 11 svi 2007, 13:50
napisao rubin_miki
ako radis sa yahoogroups, mozes ovde..
mikroelektronika@yahoogroups.com
dobri momci, dobro poznavanje..

Napisan post: 11 svi 2007, 14:01
napisao mesecar
Prisutan sam tamo, svakodnevno.
Trenutno cekam odgovor i savet za jedan problem, ali sam mislio da mozda i neko odavde zna odgovor.

Re: Proteus, mikrokontroleri

Napisan post: 12 svi 2007, 20:03
napisao 16F84
mesecar je napisao: Da li neko ima iskustva u programiranju kontrolera, programski jezici bejzik, asembler?
Pic i assembler ...pitaj što te interesuje...

Napisan post: 12 svi 2007, 20:05
napisao rubin_miki
ooo, Slovenac, dobrodosao..
Mesecar, pod kojim imenom si na grupu??

Napisan post: 13 svi 2007, 02:13
napisao mesecar
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.

Napisan post: 13 svi 2007, 09:42
napisao 16F84
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

Napisan post: 18 svi 2007, 20:53
napisao mesecar
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.

Napisan post: 20 Jun 2007, 14:46
napisao joska
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!