www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Programiranje v bascom avr
Pojdi na stran Prejšnja  1, 2, 3 ... 27, 28, 29 ... 36, 37, 38  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.83
Kraj: Mengeš

PrispevekObjavljeno: Pon Apr 08, 2013 9:20 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Blaz 555
Neznanec
Neznanec



Pridružen-a: Pon 06 Dec 2010 20:19
Prispevkov: 5
Aktiv.: 0.03
Kraj: Ponikva

PrispevekObjavljeno: Pon Apr 08, 2013 10:30 pm    Naslov sporočila:   Odgovori s citatom

Hvala,
za pomoč sem rešil problem Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Cule
Član
Član



Pridružen-a: Sob 28 Maj 2011 14:50
Prispevkov: 114
Aktiv.: 0.73
Kraj: Šentjur

PrispevekObjavljeno: Pon Sep 02, 2013 6:33 pm    Naslov sporočila:   Odgovori s citatom

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



Capture.PNG
 Opis:
 Velikost datoteke:  40.97 KB
 Pogledana:  20 krat

Capture.PNG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.83
Kraj: Mengeš

PrispevekObjavljeno: Pon Sep 02, 2013 7:37 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Cule
Član
Član



Pridružen-a: Sob 28 Maj 2011 14:50
Prispevkov: 114
Aktiv.: 0.73
Kraj: Šentjur

PrispevekObjavljeno: Pon Sep 02, 2013 7:54 pm    Naslov sporočila:   Odgovori s citatom

protoncek je napisal/a:
Upam, da veš, kako deluje XOR

Vem, vem. Bom preštudiral in sporočim če deluje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.83
Kraj: Mengeš

PrispevekObjavljeno: Pon Sep 02, 2013 8:04 pm    Naslov sporočila:   Odgovori s citatom

No, lahko seveda pišeš tudi na vsak pin posebej: porta.0=, porta.1=...
Preveri, kaj je hitreje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Cule
Član
Član



Pridružen-a: Sob 28 Maj 2011 14:50
Prispevkov: 114
Aktiv.: 0.73
Kraj: Šentjur

PrispevekObjavljeno: Pon Sep 09, 2013 4:42 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.83
Kraj: Mengeš

PrispevekObjavljeno: Pon Sep 09, 2013 4:45 pm    Naslov sporočila:   Odgovori s citatom

Med fusebiti MORA biti eden z imenom JTAGEN. Z stk500 lahko pogledaš fusebite tudi direktno v bascomu
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sirij
Član
Član



Pridružen-a: Pon 21 Jan 2013 17:14
Prispevkov: 48
Aktiv.: 0.35
Kraj: Središče ob Dravi

PrispevekObjavljeno: Pon Dec 16, 2013 10:33 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
malci
Član
Član



Pridružen-a: Sob 15 Sep 2007 21:05
Prispevkov: 792
Aktiv.: 3.93
Kraj: Polhov Gradec

PrispevekObjavljeno: Tor Dec 17, 2013 7:04 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Tor Maj 27, 2014 5:17 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.09
Kraj: Dragomer

PrispevekObjavljeno: Tor Maj 27, 2014 5:46 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sob Avg 30, 2014 7:14 pm    Naslov sporočila:   Odgovori s citatom

Koda:
Dim Number As Eram String * 13 At 10


Mi lahko kdo pojasni kakšen pomen ima tukaj At 10 ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 45.83
Kraj: Mengeš

PrispevekObjavljeno: Sob Avg 30, 2014 7:34 pm    Naslov sporočila:   Odgovori s citatom

Č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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sob Avg 30, 2014 7:41 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Bascom sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3 ... 27, 28, 29 ... 36, 37, 38  Naslednja
Stran 28 od 38

 
Pojdi na:  
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