Timer probléma

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
pkedvessy
Tranzisztorgyógyász
Hozzászólások: 198
Csatlakozott: 2006. január 1. vasárnap, 7:00

Timer probléma

Hozzászólás Szerző: pkedvessy »

SZiasztok!
Elképzelhető az, hogy a Start Timer0 parancs nem működik a BASCOM 1.11.8.3-ban??? ATTINY2313-al akartam használni, de nem működött! Ha nem használom a Start Timer0 és Stop Timer0 parancsokat, akkor működik az idősítés, amúgy nem....

Köszi Peti
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Működik.
enable int van?
Config timer0 van?
Avatar
pkedvessy
Tranzisztorgyógyász
Hozzászólások: 198
Csatlakozott: 2006. január 1. vasárnap, 7:00

Hozzászólás Szerző: pkedvessy »

Elvileg minden van, aminek lennie kell, ugyanis a legújabb bascom-ban működik! Épp most tettem föl... A régiben viszont nem megy!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Én a 7.8D. 8.1R, 8.3R2, 8.5R-ben próbáltam ki....

Ha a kódot megadod ami a magja, meglesem mit fordít melyi fordító....
Avatar
pkedvessy
Tranzisztorgyógyász
Hozzászólások: 198
Csatlakozott: 2006. január 1. vasárnap, 7:00

Hozzászólás Szerző: pkedvessy »

Ez az a bizonyos kód:

Kód: Egész kijelölése

$regfile = "attiny2313.dat"
$crystal = 8000000

Config Timer0 = Timer , Prescale = 1024
On Timer0 Timeout:
Stop Timer0

Led Alias Portd.6
Config Led = Output

Enable Interrupts
Enable Timer0
Start Timer0

Do

Loop


Timeout:
   Toggle Led
Return

End
8.3-ban nem megy, 8.7-ben megy...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az

Kód: Egész kijelölése

 On Timer0 Timeout
után nincs kettőspont. és felesleges utáns a STOP timer0 is. Ugyanis az INTek nincsenek engedélyezve ekkor még.
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

Robert írta:...és felesleges utáns a STOP timer0 is. Ugyanis az INTek nincsenek engedélyezve ekkor még.
8.3 regisztrált és tiny2313 esetén emlékeim szerint igenis szükség volt rá... majd pontosítok, ha előszedem azt a projektet ;-)
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

Hozzászólás Szerző: glbtech »

Nekem más érdekes problémám van a timerekkel.
Már több AVR-en is ugyanazt tapasztaltam, és nem értem, hátha egyszerű a megoldás.
Konkrét példa : Az órajel 7372800 Hz
A timer konfigurálása : Config Timer1 = Counter , Edge = Rising , Prescale = 1024
Vagyis 1024-es előosztó.
A 16 bites timert beállítom 62656-ra, majd indítom a számolást. Ugyebár a túlcsordulásig van 2879 lépés, amit 2879*(1/(7372800/1024)) sec kellene legyen. Vagyis nagyjából 0.4 sec kellene legyen. Viszont ez így mind a Tiny45-ön, és a Mega8-on is 0.1secre jön ki. Mintha az előosztó csak 256-ot osztana, vagy az órajel lenne pont a négyszerese. Ha más értékű előosztást állítok be, az eredmény akkor is mindig ugyenez, ez a négyszeres szorzó megvan. Ez miért van ? Megköszönném ha valaki megmondaná !
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

Hozzászólás Szerző: glbtech »

Kicsit foglalkoztam a problémával, és rájöttem.
A BASCOM valamiért nem kezeli jól az előosztó beállításait. Nem tudom miért, érdekes a dolog. De ha a mega8 regisztereit olvasom, akkor egyértelműen látszik, hogy pl. az 1024 helyett 256-ot állít be, a 64 helyett viszont 8-at... Most már csak azt nem tudom hogy miért. Van valakinek ötlete ?
A másik érdekes dolog, hogy a mega8 timer0-t nem tudtam beüzemelni, nem indul. Ennek még nem nézegettem meg a regisztereit, de lehet ennek is ilyen gondja van. HELP ME ! :-))
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

Hozzászólás Szerző: norbi »

Helló!

Lehet, hogy félreértettem valamit vagy hülyeséget irok, de nem lehet, hogy a fuse-biteknél bevan kapcsolva a 8-as előosztó? :wink:
Avatar
glbtech
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2007. február 13. kedd, 7:00

Hozzászólás Szerző: glbtech »

Úgy tűnik a probléma az, hogy a BASCOM nem jól kezeli a regisztereket. Ez nem lenne meglepő, mert már belefutottam a tiny45-nél is, hogy az AD referencia regiszterét sem kezelte jól, de azért mégiscsak meglepő kicsit. Más nem futott még bele ebbe a hibába ?
Avatar
padum
Biztosítékgyilkos
Hozzászólások: 60
Csatlakozott: 2007. június 14. csütörtök, 6:00

Hozzászólás Szerző: padum »

Üdv!
Lenne néhány kezdő kérdésem az időzítő használatáról:
-mi a különbség a timer0, timer1, timer2 között?
-ha 1/100 sec-os lépésekben szeretném az egyik lábra érkező frekit mérni és persze mellette futna a progi más része (pl.:adc kiértékelés), akkor a megszakítással, hogy oszthanám meg a feladatokat? (ATm16, 16mHz) :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Timer 012:
Külön időzítők. T0 : 8bites, T1 8 v. 16bites, T2 jellmzően 8 bites v. hiányzik. lsd AVR adatlapjában...

Feladatmegosztás:
Az ilyen mérés az HWből megy,nem csak a kiértékelése visz időt....
16Mill utasításba belefér...
1/100sec alatt 16M/100 utasítás fut le....


Szóval Ne fél attól, hogy lassú a chip...
1-2 usec feldolgozási késés sztem belefér....
Avatar
padum
Biztosítékgyilkos
Hozzászólások: 60
Csatlakozott: 2007. június 14. csütörtök, 6:00

Hozzászólás Szerző: padum »

Az űr hidege legyen veletek!

Tanácsot szeretnék kérni! Mivel nem tisza a TIMER/COUNTER működése, az alábbi progi sem úgy táncol, ahogy én piszkálom a PORTB0-t.
Nem akar frekit számolni :!: :?:

:oops: :
.
.
.
Config Timer0 = Counter , Edge = Falling , Prescale = 1024

Dim Fordulat As Byte

On Counter0 Freki
Enable Counter0
Start Counter0
.
.
.
Freki:
Fordulat = Counter0
Locate 1 , 1
Lcd "For:" ; Fordulat
Waitms 100
Return
.
.
.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Válasz küldése