|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.07 Kraj: KOPER
|
Objavljeno: Pon Dec 29, 2008 10:38 am Naslov sporočila: |
|
|
Literatura omenjena v gornjem postu je - Bascom AVR začetni tečaj -.
Poišči ga na našem forumu. _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Tor Dec 30, 2008 12:45 pm Naslov sporočila: |
|
|
Kako bi izvedel tole, da bi delovalo:
Koda: |
Dim Number As Word
Number = 1000
...
Waitus Number
...
|
Rad bi, da program počaka za vrednost Number mikro sekund. |
|
Nazaj na vrh |
|
|
RGorazd Član
Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1712 Aktiv.: 7.69 Kraj: Ig
|
Objavljeno: Tor Dec 30, 2008 1:47 pm Naslov sporočila: |
|
|
Prvič...zakaj kompliciraš?
Drugič Waitus deluje samo do 255 se pravi 255us. Če hočeš čakati v mikrosekundah
moraš čakati 4xpo250us.
LP G _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
|
TECHNIC Član
Pridružen-a: Tor 31 Okt 2006 11:18 Prispevkov: 582 Aktiv.: 2.74 Kraj: Senovo
|
Objavljeno: Tor Dec 30, 2008 1:53 pm Naslov sporočila: |
|
|
Že rešil drugače.
Vem, da je 255 največ, ampak z waitus 1000 prav tako deluje (počaka 1 ms).
Program je uporabljen v krmiljenju servo-motorja.
Koda: |
Servo = 1
Waitus Count
Servo = 0
Waitms 20
|
Pri čemer se prvi pulz spreminja po dolžini.
Kasneje sem rešil z zanko for-next ter ukazom pulseout. (po primeru na internetu)
Koda: |
$crystal = 4000000
Ddrb.0 = 1
Dim A As Word
Do
For A = 2000 To 1000 Step -10
Pulseout Portb , 0 , A
Waitms 20
Next
For A = 1000 To 2000 Step 10
Pulseout Portb , 0 , A
Waitms 20
Next
Loop |
Eno vprašanje. Kje program razume, da mora počakati za A mikrosekund ? |
|
Nazaj na vrh |
|
|
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.07 Kraj: KOPER
|
Objavljeno: Tor Dec 30, 2008 3:43 pm Naslov sporočila: |
|
|
To se naredi z timerji v interuptu. Skonfiguriraš timer na 1ms. V interrupt rutini odštevaš nastavljeni čas do nule . Ko pride dotični števec na vrednost 0 postaviš zastavico. V glavni zanki gledaš kdaj je ta zastavica postavljena, jo pobrišeš nato pa narediš kar hočeš oz. rabiš. Na tak način lahko glavni program dela še ostala opravila, ne pa da čaka iztek časa v zanki.
Koda: |
do
prikaži LCD itd
if pogoj_npr_tipka = pritisnjena then nastavljen čas = željen čas
if zastavica= 1 then
reset zastavica
izvrši kar hočeš
endif
loop
timer0_isr:
if nastavljeni čas>0 then
decr nastavljeni čas
if nastavljen_čas=0 then set zastavica
endif
return
|
Tu je samo nakazano kako, se to lahko naredi ! _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
program_er Član
Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 11.08 Kraj: Maribor (Pohorje)
|
Objavljeno: Tor Dec 30, 2008 7:58 pm Naslov sporočila: |
|
|
RGorazd je napisal/a: |
Drugič Waitus deluje samo do 255 se pravi 255us. Če hočeš čakati v mikrosekundah
moraš čakati 4xpo250us.
LP G |
Ni več tako! Dajte si že enkrat zapomnit, da BASCOM-AVR sam razčleni Wait na 255. Sam sem všasih pisal Waitms 1362 in je delovalo točno. |
|
Nazaj na vrh |
|
|
LEDuser Član
Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.65 Kraj: Ljubljana
|
Objavljeno: Sre Dec 31, 2008 10:56 am Naslov sporočila: |
|
|
Wait deluje tudi v decimalnem številu npr: Wait 1.5 _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Sob Feb 07, 2009 1:38 pm Naslov sporočila: |
|
|
Lp!
Imam en projekt z Atmega32, kjer je poleg druge periferije ki ni bistvena, vezana tipka pa portd.1. Tipka se namreč ne odziva. Če pomerim enosmerno napetost proti masi je ta okrog 0.11 in pade na maso ko pritisnem tipko. Tipko berem pravilno v bascomu, ker imam vse druge skonfigurirane na isti način in dela use lepo in prav. Sem mislil da je težava v tem ker je na tem pinu Txd, pa sem izrecno izklopil serijski vmesnik v bascomu (disable serial), premeril sem tudi vse povezave, da ni slučajno kje kakšen slab stik ampak še kar isti rezultat. Se komu sanja kaj sem spregledal?
EDIT: Popravil sem napako, mislil sem portd.1 ne portd.2! _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
klemen88 Član
Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.77 Kraj: Slovenj Gradec
|
Objavljeno: Sob Feb 07, 2009 1:55 pm Naslov sporočila: |
|
|
Lp.
Mislim da Rx ter Tx nimata notranjega pullup upora. Dodaj 4.7k upor na Ucc.
Lp |
|
Nazaj na vrh |
|
|
Vlado Član
Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 561 Aktiv.: 2.52 Kraj: Ljubljana
|
Objavljeno: Sob Feb 07, 2009 2:03 pm Naslov sporočila: |
|
|
Po vrsti,
ukaza WAIT in WAITMS so lahko tipa word in so lahko spremenljivka!
Ukaz WAITUS je tudi lahko tipa word vendar v heplu lepo piše (preizkušeno):
Citiram: |
The number of microseconds to wait. (1-65535)
This must be a constant. Not a variable!
|
to pomeni da ne moremo napisati Waitus A !
Tozir, to da si napisal Disable serial, ne pomeni da si izklopil serijsko komunikacijo, s tem izklopiš samo serial interrupts. V primeru da imaš definiran $baud, Bascom postavi Rx in Tx pine za komunikacijo, poglej malo v datashet in kako naj spremeniš register, za 8515 sem uporabljal set/reset UCR.3.
Vlado |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Sob Feb 07, 2009 2:14 pm Naslov sporočila: |
|
|
klpzm je napisal/a: |
Lp.
Mislim da Rx ter Tx nimata notranjega pullup upora. Dodaj 4.7k upor na Ucc.
Lp |
Ga že imam, vendar je vrednost 10k . Prevelik? _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
program_er Član
Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 11.08 Kraj: Maribor (Pohorje)
|
Objavljeno: Sob Feb 07, 2009 2:20 pm Naslov sporočila: |
|
|
tozir je napisal/a: |
klpzm je napisal/a: |
Lp.
Mislim da Rx ter Tx nimata notranjega pullup upora. Dodaj 4.7k upor na Ucc.
Lp |
Ga že imam, vendar je vrednost 10k . Prevelik? |
Načeloma ne, kajti potreben je samo zato, da bo pin potegnil na 1. Poiskusi, pa povej, če dela! _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
|
klemen88 Član
Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.77 Kraj: Slovenj Gradec
|
Objavljeno: Sob Feb 07, 2009 2:24 pm Naslov sporočila: |
|
|
Poizkusi z manjšim, pa če lahko pripni program, ki ga pišeš. Bereš tipko z PIN potem? Imaš definirano kot vhod? itd. Nevem kako ti delaš vendar jaz notranje pullup upore aktiviram oz. postavim z PORTB=&b0000_0000 če je 1 je pullup vključen, če je 0 je izključen in je izhod.
Kot vhod ali izhod pa postavlam z DDRX=&B1000_0000 - 1 je izhod, 0 pa vhod. |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Sob Feb 07, 2009 2:28 pm Naslov sporočila: |
|
|
Hmm še kar isto. Mora biti nekaj z tipko narobe. Tistih 0.2V pomeni, da mora biti nekje kakšen stik ali pa je tipka pokvarjena. Bom kar celotno vezje razdrl pa debugu vse, pa bomo vidli. _________________ http://www.rielektronika.comule.com/ |
|
Nazaj na vrh |
|
|
tozir Član
Pridružen-a: Pon 17 Mar 2008 19:10 Prispevkov: 187 Aktiv.: 0.95 Kraj: Celje
|
Objavljeno: Sob Feb 07, 2009 2:45 pm Naslov sporočila: |
|
|
Zanimivo. Nekje v vezju mora biti napaka. Tipka sama kot sama je v redu. Ko jo vključim v vezje pa pri odprti tipki zmerim 170Ohmov upornosti proti masi. Zaradi te upornosti mi potem kaže 0.2V pri "odprti" tipki. Nič kaj drugega kot napetostni delilnik. Hvala za pomoč! Se bom še javil če bom imel programsko napako _________________ http://www.rielektronika.comule.com/ |
|
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: 68 dni
Powered by phpBB © 2001, 2005 phpBB Group
|