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 

Ali program ne sledi encoderju?

 
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
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.90
Kraj: Dobrepolje

PrispevekObjavljeno: Ned Nov 22, 2015 1:44 pm    Naslov sporočila:  Ali program ne sledi encoderju? Odgovori s citatom

Hi

Ko vrtim encoder počasi z roko se parametri na LCDju pravilno prikazujejo, ko pa zavrtim malo hitreje pa ne sledi več, se program kar resetira.

Ali program ni pravilno napisan?

Encoder ima 100 razdelkov na obrat, uC je Mega8, uporabljam Bascom AVR


Koda:


$regfile = "m8def.dat"
$crystal = 4000000

Dim Wtime As Byte
Dim Stevec As Integer
Dim Dolzina As Single

Cha Alias Pind.2
Chb Alias Pind.3
Config Cha = Input
Config Chb = Input

Const Debouncetime = 1

Config Int0 = Falling
Enable Interrupts
Enable Int0
On Int0 Enkoder

Config Lcdbus = 4
Config Lcd = 20 * 4
Initlcd
Cursor Off Noblink

Wtime = 10
Stevec = 0

Set Chb

'LCD zaslon
Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portb.1 , Db5 = Portb.2 , Db4 = Portb.3 , E = Portb.4 , Rs = Portb.5


'/////////////// * Glavna zanka * /////////////////

Do

Waitms Wtime
   Locate 1 , 1 : Lcd Dolzina
Waitms Wtime

Loop
End

'///////////////////////////////////////////////////

Enkoder:

  If Cha = 0 Then
    If Chb = 0 Then Incr Stevec Else Decr Stevec
  End If
' Tukaj precuna v mm. 1 obrat je 5 mm pomika
  Dolzina = Stevec * 0.05

Return


Kako spremenljivko Dolzina ki je (Single) napisati tako, da izpiše samo dve decimalki, sedaj jih izpisuje 9?

Lp, marko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 22, 2015 3:20 pm    Naslov sporočila:   Odgovori s citatom

Marko,
kakšne so vrednosti za stack?
Ker tega nimaš v programu, predvidevam da imaš privzete vrednosti (Options ->Compiler->Chip).
Preveri vrednosti in jih povečaj.
Priporočam da to vpišeš na začetku programa (tako bodo te vrednosti vedno enake za ta program).
Kar se tiče single, pa uporabi ukaz:
Config Single = Scientific , Digits = 2
LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.90
Kraj: Dobrepolje

PrispevekObjavljeno: Ned Nov 22, 2015 8:06 pm    Naslov sporočila:   Odgovori s citatom

Vlado je napisal/a:
Marko,
kakšne so vrednosti za stack?
Ker tega nimaš v programu, predvidevam da imaš privzete vrednosti (Options ->Compiler->Chip).
Preveri vrednosti in jih povečaj.
Priporočam da to vpišeš na začetku programa (tako bodo te vrednosti vedno enake za ta program).
Kar se tiče single, pa uporabi ukaz:
Config Single = Scientific , Digits = 2
LP


Koda:

$hwstack = 128
$swstack = 128
$framesize = 128

Če vpišem v program take vrednosti, ali bo zadostovalo? oziroma kako se določi velikost?

Uporabljam interni oscilator 4 Mhz, ali to zadostuje? Kolikšna je najvišja vrednost za interni oscilator za Mega8 ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3352
Aktiv.: 17.02

PrispevekObjavljeno: Ned Nov 22, 2015 9:34 pm    Naslov sporočila:   Odgovori s citatom

Po spominu... Interni oscilator pri Megi8 ima 1 MHz, ampak je to osnovna frekvenca deljeno z 8. Torej ima max interno frekvenco 8MHz, če nastaviš ustrezne fusebite- izklopiš CLKDIV/8
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.53
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 22, 2015 9:50 pm    Naslov sporočila:   Odgovori s citatom

Marko,
stack bo več kot dovolj.
Tako kot imaš zdaj narejeno ti enkoder nebo štel gor/dol, ampak samo v eno smer.
Poglej v Help-u ENCODER, tam boš našel primer za uporabo enkoderja.
Citiram:
Waitms Wtime
Locate 1 , 1 : Lcd Dolzina
Waitms Wtime

ta del bi jaz popravil tako da bi dodal še eno spremenljivko dolzina_old ter

Do
if dolzina <> dolzina_old then
locate 1,1:Lcd dolzina
dolzina_old=dolzina
end if
Loop

Na ta način se boš izognil nenehanemu pisanju na LCD, pisal boš samo po potrebi.
Vedeti moraš da LCD ni tako hiter, WR pin je vezan na minus, Bascom pa namesto kontrole tega pina ima fiksno zakasnitev 20 ms.
Obstaja knižnica ki omogoča uporabo R/W pina in je pisanje na LCD hitreje.
LP
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 Feb 02, 2016 9:37 am    Naslov sporočila:   Odgovori s citatom

Nisem še delal z encoderjem, in nimam ga doma, da bi poizkusil,
toda jaz bi se lotil encoder branja tako, da bi kontatke vezal na INT0 in INT1 pine in vsebino vbral v interrupt rutini.

No lahko da bi potem imel problem z odskakovanjem kontaktov, ..

_________________
Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati.
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
Stran 1 od 1

 
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