 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Laney Član

Pridružen-a: Čet 09 Sep 2010 22:11 Prispevkov: 26 Aktiv.: 0.14 Kraj: Nova Gorica
|
Objavljeno: Čet Mar 17, 2011 7:19 pm Naslov sporočila: |
|
|
Kako se v asemblerju vpiše poljubno cifro v PC pri atmega 16 ?
|
|
Nazaj na vrh |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.42
|
Objavljeno: Čet Mar 17, 2011 8:19 pm Naslov sporočila: |
|
|
Hu težka.
Vpiseš v register Z in potem z enim od ukazov za skok preneseš v PC in tudi skočiš.
Upam, da bo @silvo kaj povedal.
Lp
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.91 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Mar 17, 2011 11:35 pm Naslov sporočila: |
|
|
blay44 je napisal/a: |
Hu težka.
Vpiseš v register Z in potem z enim od ukazov za skok preneseš v PC in tudi skočiš.
Upam, da bo @silvo kaj povedal.
Lp |
He, he je kdo pomislil kaj naredijo instrukcije rjmp, jmp, rcall, call
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.42
|
Objavljeno: Sob Mar 19, 2011 2:56 pm Naslov sporočila: |
|
|
Sem @Silvo.
Domnevam pa, da bi rad naredil nekaj takega kot je v basicu stavek goto-labela in on bi to predelal v goto "spremenljivka". Skok glede na rezultat spremenjivke, kot recimo stavek case v basicu.
Pa bi moral asmju povedat kam naj doskočni program prevede. Če bi hotel minimalno zanesljivost programa, da se mu ne bi vsake toliko časa sesul še filtrirati vrednosti spremenjivke...
Lažji način je uporaba CPSE v kombinaciji z skokom.
@Silvo očeta sem nagovoril(pa tudi sam je bil zato), da zrihta tvoj @ebay-china programator za gale. V kombinaciji z avrjem bo stvar žažigala. Upam, da se bo tema o galih nadaljevala, da si izmenjamo izkušnje ali še bolje, da se kaj naučim.
Sem ga probal usmeriti v Fpgaje, pa se ni dal.
LP
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.91 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Mar 19, 2011 4:10 pm Naslov sporočila: |
|
|
Programski števec (PC) diktira tok programa. Starta z 0 (reset vektor) ob normalnem toku programa se ob vsakem clock-u poveča za ena. (razen takrat, ko se izvede prekinitev. Pri pic-u se takrat postavi na lokacijo 0x4 ter program nadaljuje od tam naprej. Trenutna vrednost pa se shrane v sklad ter se vrne, ko naleti na instrukcijo retfie. Pri avr-ju se ob prekinitvi postavi na lokacijo, ki je ustrezna za dotično prekinitev. Trenutna vrednost PC se tudi shrane v sklad. Ko naleti na instrukcijo reti se ta vrednost pobere iz sklada. (za vse to skrbi sam hardware) Za programsko spremembo toka probrama skrbi instrukcija jmp kateri sledi vrednost. Vrednost običajno označimo z neko labelo v programu. Prevajalnik potem labelo zamenja z ustrezno vrednostjo programskega števca.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Laney Član

Pridružen-a: Čet 09 Sep 2010 22:11 Prispevkov: 26 Aktiv.: 0.14 Kraj: Nova Gorica
|
Objavljeno: Sob Mar 19, 2011 5:05 pm Naslov sporočila: |
|
|
Hm...da podam še primer...Napisana mam 2 programa za menjanje barv z RGB led. Pač 3je PWM kanali ...increment red..decrement blue..itd.
Oba sta pač napisana tako da se vrtista v zanki..torej se nikoli ne končasata...vedanr sta ločena...
Koda: |
1prog:
koda
rjmp 1prog
2prog:
koda
rjmp 2prog |
kar bi jaz rad naredil je to...z eno tipko bi rad skakal iz enega prog v drugega..1-->2-->1-->2...vendar ko skoči iz prvega v drugega bi rad, da si shrani lokacijo, da ko bo prišel nazaj na prvi program se bo odvijal od tam naprej...ne pa da začne z nova...
To bi rad napisal...pa če tudi bi mel 5 programov da bi se usi nadaljevali kjer so končali..
jaz sem nekaj gruntal z zunanjo prekinitvijo...ampak zgleda da se bol neroden
V kodi je prekinitveni program ki naj bi odločal v kateri program gre in nato naloži PC tega programa...zaenkrat ne deluje
Koda: |
menjava_programa:
pop r24 ; ko se izvede prekinitev PC gre v SP iz katerema moremo pobrat vrednost.
pop r30 ; pobere visji in njzji del PC od prejsnega programa
pop r31
inc r25
cpi r25,1
breq program1prek
cpi r25,2 ; izbere naslednji prog.
breq program2prek
program1prek:
sts $62,r30
sts $63,r31 ;najprej shrani vrednost PC od prejšenjga programa v SRAM
lds r30,$60
lds r31,$61 ; pobere PC za svoj program
push r31
push r30 ;naloži v sklad
push r24
rjmp cez
program1prek:
sts $60,r30
sts $61,r31
lds r30,$62
lds r31,$63
push r31
push r30
push r24
clr r25
cez:
reti |
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.91 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Mar 19, 2011 8:59 pm Naslov sporočila: |
|
|
Nisem se poglabljal v program a tole si si narobe zamislil. Takole z skladom ne bo šlo. Sklad si predstavljaj kot kup z listi papirja na katerega si si zapisal podatke. Če si liste z podatki zlagal po vrsti. Prvi položen ima recimo vrednost 3 drugi 5 tretji 10. Prvega ko dvigneš ima vrednost 10 sledeči 5 če vmes enega z vrednostjo 12 položiš bo naslednji dvgnjen imel vrednost 12.
Celotnega programa se bi morda moral lotiti pisat drugače. Uporabil bi recimo prekinitev enega timerja. Ob prekinitvi bi bral tipke. Glede na stanje tipk bi postavljal bit(e) nekega "kontrolnega" registra. Glede na postavljen bit tega registra bi v nadaljevanju prekinitvene rutine spreminjal vrednost PWM-ja.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Laney Član

Pridružen-a: Čet 09 Sep 2010 22:11 Prispevkov: 26 Aktiv.: 0.14 Kraj: Nova Gorica
|
Objavljeno: Sre Apr 13, 2011 6:08 pm Naslov sporočila: |
|
|
Koda: |
ldi r16,255
out OCR1AL,r16
ldi r16,50
out OCR1AH,r16
|
V register OCR1AL se cifra lepo prenese.Ko pa pride simulator do out OCR1AH,r16 se cifra pojavi v registru OCR1AH ko pa gre na naslednji ukaz pa kar izgine..je imel kdo podobne probleme ?
|
|
Nazaj na vrh |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.42
|
|
Nazaj na vrh |
|
 |
majkel Član

Pridružen-a: Sre 22 Avg 2007 15:45 Prispevkov: 84 Aktiv.: 0.39 Kraj: Maribor
|
Objavljeno: Pon Nov 21, 2011 10:27 pm Naslov sporočila: |
|
|
Imam vprašanje glede tega ali se je že kdo igral z podobnim primerom kot je na spodnji sliki. Izhod tega vezja bi peljal na uC vendar nikakor ne najdem pravih vrednosti elementov da bi imel na izhodu ali "0" ali "1". Na strani kjer je 220V ac bo eno stikalo, kadar bo sklenjeno bi želel potem imeti na izhodni strani logično stanje.
Sem pomeril zadevo pa imam najnižjo napetost na izhodu cca. 2,5 V ali pa 5V.
Kakšen predlog?
Opis: |
|
Velikost datoteke: |
39.66 KB |
Pogledana: |
2 krat |

|
|
|
Nazaj na vrh |
|
 |
RUros Član


Pridružen-a: Čet 09 Mar 2006 22:26 Prispevkov: 1031 Aktiv.: 4.39
|
Objavljeno: Pon Nov 21, 2011 11:01 pm Naslov sporočila: |
|
|
Ali je R1 pravilno preračunan, glede na parameter diode optocouplerja ? Mogoče se tranzistor ne odpre dovolj, za poln preklop.
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3362 Aktiv.: 14.19 Kraj: Dragomer
|
Objavljeno: Tor Nov 22, 2011 11:03 am Naslov sporočila: |
|
|
To naj bi bil, verjetno, senzor prisotnosti 220VAC.
Jaz sem ga delal brez tranzistorja, samo pullup upor za +5V in kondezator za izgladitev. No, ja in uporabil sem optospojki, ki je imela dve svetleči diodi obrnjeni vsaka v svojo smer, tako da je optospojkoa osvetljena v obeh polperiodah.
|
|
Nazaj na vrh |
|
 |
majkel Član

Pridružen-a: Sre 22 Avg 2007 15:45 Prispevkov: 84 Aktiv.: 0.39 Kraj: Maribor
|
Objavljeno: Tor Nov 22, 2011 4:46 pm Naslov sporočila: |
|
|
Vilko ideja je da prekinjam 220V na vhodni strani z gumbom.Na izhodni strani optokoplerja pa želim imeti signal 0-5V, ki ga lahko peljem na pin uC.
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3362 Aktiv.: 14.19 Kraj: Dragomer
|
Objavljeno: Tor Nov 22, 2011 6:35 pm Naslov sporočila: |
|
|
Na 220VAC strani prekinjati z gumbom ima smisel samo, če istočasno vklapljaš in izkljapljaš kako napravo, in uC bi moral vedeti, ali je naprava pod napetostjo ali ne.
Če temu ni tako, daš tipko kar na +5V strani med maso in uC z pull up uporom.
Tisto, da je tranzistor odveč, še vedno velja.
|
|
Nazaj na vrh |
|
 |
majkel Član

Pridružen-a: Sre 22 Avg 2007 15:45 Prispevkov: 84 Aktiv.: 0.39 Kraj: Maribor
|
Objavljeno: Tor Nov 22, 2011 8:21 pm Naslov sporočila: |
|
|
Vem da bi bilo lažje vse skupaj izvest z tipko. Vendar mora biti tako izvedeno s tem stikalom, ki prekinja 220V; izbiram 2 načina delovanja programa.Seveda bi bilo z tipko lažje.
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 496 dni
Powered by phpBB © 2001, 2005 phpBB Group
|