Jelgenerátor AVR-el

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
joda
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. március 23. szerda, 6:00

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

kapu48:
igazad van, amit írtam az csak papírról írtam át és érdekelt, hogy megértettem-e a számolási módot...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

Timer0-n nincs COUNTER! Ez a külső órajelet/impulzust számlálna.

Órajel: Clock (quartz)
Prescale: 4-16-256 stb.

A Timer számlálja a Clock/Prescale-t. Azaz 16 MHz Clock és Prescale=4 esetén 4 MHz órajelet.

Timer0 számol startérték(0)-tól 256-ig. Ekkor van INT/túlcsordulás!

A túlcsordulási rutinban a kezdőérték beállítható. Innen számol (a háttérben!) a Timer... és ha eléri a 256 értéket, akkor újra Interruptot okoz....

Timer 1 esetén 0...65536-ig van a számolás...
Avatar
joda
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. március 23. szerda, 6:00

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

Robert:
Mostmár kezdem érteni, hogy halvány lila gőzöm mi történik. :lol:

Megkérhetlek, hogy leírd hogyan számolom ki a prescale meg a timer értékét egy példán keresztül, hogy ne magam húzzam ki a képleteket mert úgy gondolom jól úton járom de mégse müködik...

Mondjuk rá:
ATtiny2313 Timer1 ha jól értettem neki van counter-e Timer0 meg Time1-en is.
Crystal 8Mhz
és a portb.1 lábon szeretném villogtatni a LED-em minden 1s-be.

Előre is köszi.

itt a kódom amivel játszmm de nemigen haladok előre és a ledem villog de nem tudom sehogy se előre meghatározni, hogy olyan időközökbe villogjon ahogy én akarom.

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

$regfile = "ATtiny2313.DAT"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 32


Config Portb.2 = Output


Config Timer1 = Timer , Prescale = 256

On Timer1 Letelt

Enable Timer1
Enable Interrupts
Timer1 = 49911
Start  TIMER1
Do
!NOP
Loop

Letelt:
Toggle Portb.2
Stop Timer1
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 »

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

$regfile = "ATtiny2313.DAT" 
$crystal = 1000000 
$hwstack = 32 
$swstack = 10 
$framesize = 32 

Config Portb.2 = Output 

Config Timer1 = Timer , Prescale = 256 

On Timer1 Letelt 

Enable Timer1 
Enable Interrupts 

'Timer1 = 49911 
Start  TIMER1 
Do 
  '!NOP <ilyen utasitan NINCS
  Nop
Loop 

Letelt: 
  Timer1 = 49911
  'tulcsordulas utan adsz erteket neki. Igy 49911->65536-ig szamol 
  Toggle Portb.2 
  'Stop Timer1
  'ha megallitod a timert, akkor mitol menne tovabb???? 
Return 
Igy a menete:
1 MHz / 256 / (65536-49911) / 2 = ~0.1 Hz 'lassu!
A 49911 helyett 54000 körülit adj.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

ATtiny2313 Timer1 ha jól értettem neki van counter-e Timer0 meg Time1-en is.

?????


Timer0, Timer1, timer2 - belső különálló HW-ek
A Counter: ha a Timer/számláló külső órajelforrást/impulzust számol. Ilyen bemenete (T1) a Timer1-nek van....
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

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

'Timer Idözités számitás
'Szimulátorban futatható

$regfile = "ATtiny2313.DAT"
'$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 24
$swstack = 24
$framesize = 24
$sim


'(
Igy a menete:
1 MHz / 256 / (65536-49911) / 2 = ~0.1
')

'Er_sec = Qvarc / Prescales /(tword - Kivon) / Togle
'Változók:
Const Qvarc = 8000000
Const Prescales = 256                                       '   Prescale = 1|8|64|256|1024
Const Kivon = 54000
'Állandók:
Const Togle = 2
Const Tword = 65536
'Számítás:
Const T = Qvarc / Prescales
Const Tt = Tword - Kivon

Dim Er_sec As Word



Er_sec = T / Tt
Er_sec = Er_sec / Togle

Print " Timer1 = " ; Tt
Print "Eredmeny Sec= " ; Er_sec

End                                                         'end program
Avatar
joda
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. március 23. szerda, 6:00

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

Robert:
Igy a menete:
1 MHz / 256 / (65536-49911) / 2 = ~0.1 Hz 'lassu!
A 49911 helyett 54000 körülit adj.
hogyan számoltad ki, hogy kb. 54000 kell, hogy legyen a Timer kezdő értéke?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

Beírod a képletbe, és így lász valami normális LEDvillogási sebeséget....

Amúgy AVRCalc, és kiadja a TCNTH és TCNTL értéket....
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

AVRCalc : Timer1 = TCNTH *256 + TCNTL
Avatar
joda
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. március 23. szerda, 6:00

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

Itt a kép az AVRcalc-ról és nem tudom mit nem allítottam jól be de nem kapom a ti értekeketeket:

Kép

TCNT1L = 0xee
TCNT1H = 0x85
Crystal = 8MHz
Prescale = 256

Képlet kapu48 alapján:
Timer1 = TCNTH *256 + TCNTL
---------------------------------------
Needed timer = 1000ms = 1s
Units = ms
Timer1 = 133*256+238
Timer1 = 34286

Na mmost, 65536 - 34286 = 31250

Tehat a Timer1 = 31250 és innen számol 65536-ig.
Ez a számláló minden kb. 9s kapcsolja ki és be a ledet... :(
Bocsi de nem értem miért... :cry: :cry: :cry:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

A háttérben levő képlet összetettebb. Az adatlapban van benne pontosan.

Na hülye kérdés: a Tiny2313-ban a DivClk8 igaz ki van kapcsolva? Csak hogy a valós órajele van-e...
Azaz a

do
toggle LED
waitms 100
loop

program igaz 5x villan 1 mp alatt?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

OCx Toggled-nél hiányzik a pipa!
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

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

Sziasztok

egy kezdö vagyok, és a BASCOM-t nem ismerem. Inkább ASM-ben szoktam programozni.
Mit jelent a BASCOMban a $ jel?

Kösz
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Ezzel kezdődnek a fordítónak szánt utasítások!
Help: http://avrhelp.mcselec.com/index.html
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2011. március 28. hétfő, 14:24-kor.
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

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

Kösz
Válasz küldése