|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.83 Kraj: Mengeš
|
Objavljeno: Pon Apr 08, 2013 9:20 pm Naslov sporočila: |
|
|
Seveda lahko, zakaj ne? Saj sem rekel, da če nimaš četrtega stoplca, ga pač ne upoštevaš. V tem primeru ukaz getkbd nikoli ne bo vrnil vrednosti 3, 7, 11 in 15 (F1 do F4), to je vse. Teh štirih ne upoštevaš, pa je.
Bereš pritisnjene tipke in jih recimo sestavljaš v en string (besedo). Potem to besedo primerjaš z obstoječo, ki je prava in si zmagal.
BTW, tipkovnico lahko s tem ukazom uporabljaš do 6x4 tipk. Preberi ukaz config kbd.
|
|
Nazaj na vrh |
|
|
Blaz 555 Neznanec
Pridružen-a: Pon 06 Dec 2010 20:19 Prispevkov: 5 Aktiv.: 0.03 Kraj: Ponikva
|
Objavljeno: Pon Apr 08, 2013 10:30 pm Naslov sporočila: |
|
|
Hvala,
za pomoč sem rešil problem
|
|
Nazaj na vrh |
|
|
Cule Član
Pridružen-a: Sob 28 Maj 2011 14:50 Prispevkov: 114 Aktiv.: 0.73 Kraj: Šentjur
|
Objavljeno: Pon Sep 02, 2013 6:33 pm Naslov sporočila: |
|
|
Pozdravljeni!
Zanima me ali v Bascom-AVRju obstaja ukaz, ki bi nekako razdelil določen port na "leve" 4 in "desne" 4 bite (&B1111_0000) ? Nekaj takšnega bi lahko bil ukaz BCD, vendar mi z njim ne uspe.
Delam uro s 7-segmentnimi led displeji, le te pa krmilim z BCD dekoderji. tako za 2 displeja porabim le 1 port (PortA).
Pri pisanju programa pa zaradi tega pride do težav, saj zaradi tega ne morem normalno prikazovati na displeje.
Za vsak displej moram imeti napisano svojo konfiguracijo (beri ukaz DATA), da se bodo prižigali pravi segmenti. Pri enem jasno ni problema, pri dveh na enem portu pa seveda na gre.
Kako rešiti ta problem?
Koda: |
Digit_1:
Data &B00000000 , &B00001000 , &B00000001 , &B00001001 , &B00000010 , &B00001010 , &B00000011 , &B00001011 , &B00000100 , &B00001100
'0 1 2 3 4 5 6 7 8 9 |
Opis: |
|
Velikost datoteke: |
40.97 KB |
Pogledana: |
20 krat |
|
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.83 Kraj: Mengeš
|
Objavljeno: Pon Sep 02, 2013 7:37 pm Naslov sporočila: |
|
|
Lahko poskusiš z ukazom XOR. Izhode lahko tudi bereš!
Torej port a preberreš z ukazom pina, potem pa gornje tri z XOR blindiraš. Recimo če gornje 4 želiš pustiti tako, kot so in recimo prebereš 0110, na spodnje štiri pa želiš zapisati 1100, potem gornje štiri bindiraš: najprej prebereš port a:
A=pina
B=A XOR &B00000000
B tako postane gornji del 0110, spodnje štiri pa so prejšnje stanje.
Potem spodaj dodaš novo vrednost, ki jo želiš vpisati na spodnje 4 bit(torej 1100):
V c recim vpišeš željeno novo stanej spodnjega dela:
C=&B00001100
B=B XOR C
Tako b postane: gornji del ostane 0110, spodnji pa 1100
Zdaj samo še vpišeš na port
Porta=b
Tole je na hitro samo bistvo, lahko da je narobe...malce preštudiraj. Upam, da veš, kako deluje XOR
|
|
Nazaj na vrh |
|
|
Cule Član
Pridružen-a: Sob 28 Maj 2011 14:50 Prispevkov: 114 Aktiv.: 0.73 Kraj: Šentjur
|
Objavljeno: Pon Sep 02, 2013 7:54 pm Naslov sporočila: |
|
|
protoncek je napisal/a: |
Upam, da veš, kako deluje XOR |
Vem, vem. Bom preštudiral in sporočim če deluje.
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.83 Kraj: Mengeš
|
Objavljeno: Pon Sep 02, 2013 8:04 pm Naslov sporočila: |
|
|
No, lahko seveda pišeš tudi na vsak pin posebej: porta.0=, porta.1=...
Preveri, kaj je hitreje.
|
|
Nazaj na vrh |
|
|
Cule Član
Pridružen-a: Sob 28 Maj 2011 14:50 Prispevkov: 114 Aktiv.: 0.73 Kraj: Šentjur
|
Objavljeno: Pon Sep 09, 2013 4:42 pm Naslov sporočila: |
|
|
Zanima me kako lahko na ATmega 16 izključim JTAG port, da bom lahko PORTC uporabil normalno kot vhod/izhod.
Bral sem datasheete a mi ni čisto jasno kako, oziroma kje to naredim. Ko gledam po fuse-ih nikjer ne najdem OCDEN in JTAGEN fuse, katera naj bi bila onemogočena. Programiram v Bascom-avr, čip pa prepoznam s pomočjo Studia 4. Uporabljam AVR ISP programator (STK500).
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.83 Kraj: Mengeš
|
Objavljeno: Pon Sep 09, 2013 4:45 pm Naslov sporočila: |
|
|
Med fusebiti MORA biti eden z imenom JTAGEN. Z stk500 lahko pogledaš fusebite tudi direktno v bascomu
|
|
Nazaj na vrh |
|
|
Sirij Član
Pridružen-a: Pon 21 Jan 2013 17:14 Prispevkov: 48 Aktiv.: 0.35 Kraj: Središče ob Dravi
|
Objavljeno: Pon Dec 16, 2013 10:33 pm Naslov sporočila: |
|
|
Pozdravljeni.
Sem nov v programiranju v Bascomu. V bistvu je to moj prvi bolj resen primer...
Z Attiny2313 hočem krmiliti koračni motor. Zadeva deluje tako, da ko pritisnem tipko na portd.4, se začne vrteti ''nazaj'', ko pa pritisnem tipko na portd.2, pa se motor začne vrteti ''naprej''. Toda če zopet pritisnem tipko na portd.4, se motorju smer vrtenja ne spremeni, ampak ostane enaka kot pri pritisku na portd.2. V čem je štos? Še koda.
Koda: |
$crystal = 1000000
$regfile = "ATtiny2313.dat"
$hwstack = 32
$swstack = 8
$framesize = 32
Dim Premor As Long
Config Portb = Output
Config Pind.2 = Input
Portd.2 = 1
Config Pind.4 = Input
Portd.4 = 1
On Int0 Int0_sub
Config Int0 = Change
Enable Int0
On Int1 Int1_sub
Config Int1 = Change
Enable Int1
Enable Interrupts
Premor = 10
Do
Debounce Pind.2 , 0 , Naprej , Sub
Debounce Pind.4 , 0 , Nazaj , Sub
Loop
End
Int0_sub:
Debounce Pind.2 , 0 , Naprej , Sub
Return
Int1_sub:
Debounce Pind.4 , 0 , Nazaj , Sub
Return
' pol koraka
Naprej:
Do
Portb = &B11111101
Waitms Premor
Portb = 0
Portb = &B11110101
Waitms Premor
Portb = 0
Portb = &B11110111
Waitms Premor
Portb = 0
Portb = &B11110011
Waitms Premor
Portb = 0
Portb = &B11111011
Waitms Premor
Portb = 0
Portb = &B11101011
Waitms Premor
Portb = 0
Portb = &B11101111
Waitms Premor
Portb = 0
Portb = &B11101101
Waitms Premor
Portb = 0
Loop
Return
Nazaj:
Do
Portb = &B11101101
Waitms Premor
Portb = 0
Portb = &B11101111
Waitms Premor
Portb = 0
Portb = &B11101011
Waitms Premor
Portb = 0
Portb = &B11111011
Waitms Premor
Portb = 0
Portb = &B11110011
Waitms Premor
Portb = 0
Portb = &B11110111
Waitms Premor
Portb = 0
Portb = &B11110101
Waitms Premor
Portb = 0
Portb = &B11111101
Waitms Premor
Portb = 0
Loop
Return
|
Izkušenejše v programiranju tudi prosim, če malo pregledajo program in ga pokomentirajo.
Lep pozdrav,
Mitja
|
|
Nazaj na vrh |
|
|
malci Član
Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 792 Aktiv.: 3.93 Kraj: Polhov Gradec
|
Objavljeno: Tor Dec 17, 2013 7:04 am Naslov sporočila: |
|
|
Ob pritisku na tipko ti program skoči v podprogram, iz njega pa zaradi do-loop zanke ne zna. Uporabi do-loop-until zanko.
Pa tudi v glavi ti manjka deklariranje podprogramov (declare sub. ...)
Lp
Uroš
_________________ Elektronika za hobi |
|
Nazaj na vrh |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 611 Aktiv.: 4.46 Kraj: Vrhnika
|
Objavljeno: Tor Maj 27, 2014 5:17 pm Naslov sporočila: |
|
|
zdravo ker sem (popoln) začetnik me zanima če bi lahko nekdo bolj po domače razložil kako lahko sprogramiram da naprimer tipka 1 (PORTB.0) ob pritisku nanjo vklopi LED1 (PORTD.0) in ko pritisnem še enkrat da jo izklopi.
|
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.09 Kraj: Dragomer
|
Objavljeno: Tor Maj 27, 2014 5:46 pm Naslov sporočila: |
|
|
mato1111 je napisal/a: |
zdravo ker sem (popoln) začetnik me zanima če bi lahko nekdo bolj po domače razložil kako lahko sprogramiram da naprimer tipka 1 (PORTB.0) ob pritisku nanjo vklopi LED1 (PORTD.0) in ko pritisnem še enkrat da jo izklopi. |
Koda: |
tipka alias pinb.0
led1 alias portd.0
config tipka = input
config led1 = output
do
debounce tipka,0,tipkasr,SUB
loop
tipkasr:
toggle led1
return
|
|
|
Nazaj na vrh |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 611 Aktiv.: 4.46 Kraj: Vrhnika
|
Objavljeno: Sob Avg 30, 2014 7:14 pm Naslov sporočila: |
|
|
Koda: |
Dim Number As Eram String * 13 At 10 |
Mi lahko kdo pojasni kakšen pomen ima tukaj At 10 ?
|
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.83 Kraj: Mengeš
|
Objavljeno: Sob Avg 30, 2014 7:34 pm Naslov sporočila: |
|
|
Če se ne motim je to direktna lokacija, kje naj se nahaja spremenljivka, oziroma od kje naprej naj se nahaja. V konkretnem primeru se bo spremenljivka "number" začela v EEPROMu od lokacije 10 naprej. Ker je to string dolžine 13 znakov, bo zasedel 14 mest, torej od 10 do 23. (14 zato ker je pri stringu vedno še en dodatni bajt, ki označuje konec stringa).
|
|
Nazaj na vrh |
|
|
mato1111 Član
Pridružen-a: Pet 28 Dec 2012 14:42 Prispevkov: 611 Aktiv.: 4.46 Kraj: Vrhnika
|
Objavljeno: Sob Avg 30, 2014 7:41 pm Naslov sporočila: |
|
|
aha se pravi če hočem v eeprom dodati še number2 in number3 dolžine 13 znakov moram narediti tako?
Koda: |
Dim Number As Eram String * 13 At 10
Dim Number2 As Eram String * 13 At 24
Dim Number3 As Eram String * 13 At 38 |
Nazadnje urejal/a mato1111 Sob Avg 30, 2014 8:37 pm; skupaj popravljeno 1 krat |
|
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: 48 dni
Powered by phpBB © 2001, 2005 phpBB Group
|