Timer probléma

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
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ásSzerző: pkedvessy » 2007. május 10. csütörtök, 8:26

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: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2007. május 10. csütörtök, 12:07

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ásSzerző: pkedvessy » 2007. május 10. csütörtök, 18:44

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: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2007. május 10. csütörtök, 20:37

É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ásSzerző: pkedvessy » 2007. május 10. csütörtök, 23:44

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: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2007. május 11. péntek, 4:31

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
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

HozzászólásSzerző: SirLeslie » 2007. május 11. péntek, 13:09

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
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: glbtech » 2007. május 25. péntek, 13:38

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
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: glbtech » 2007. május 25. péntek, 19:57

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
Kapcsolat:

HozzászólásSzerző: norbi » 2007. május 25. péntek, 20:14

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
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: glbtech » 2007. május 25. péntek, 21:35

Ú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
Kapcsolat:

HozzászólásSzerző: padum » 2007. augusztus 15. szerda, 21:07

Ü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: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2007. augusztus 15. szerda, 21:51

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
Kapcsolat:

HozzászólásSzerző: padum » 2007. augusztus 24. péntek, 21:42

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: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2007. augusztus 25. szombat, 6:49



Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég