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 »

Hello!

Próbálkozok a timer-ek használatával, de valami miatt nem akar működni! Az alábbi kóddal próbálkozom, aminek két ledet kellene villogtatni! Az első megy is rendesen, de ami a timer használatával villogna, az csak világít... Mi lehet a gond?

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

Config Timer1 = Timer , Prescale = 1
Const Timer1pre = 65100

Dim Wtime As Byte
Stop Timer1
Timer1 = Timer1pre

On Timer1 Pulse:
Start Timer1

Wtime = 100

Enable Interrupts
Enable Timer1

Do
  Set Portd.6
  Waitms Wtime
  Reset Portd.6
  Waitms Wtime
Loop

Pulse:
  Stop Timer1
  Timer1 = Timer1pre
  Toggle Portb.1
  Start Timer1
Return

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

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

Jo szemed van?:)
Ha a chip 4MHzről jár, akkor a Timer1 órajele (ha jól emlékszem):
f=fclkIO/(2*N*fOCRnA)
Itt nalad:
Fclk = orajel (ezt nem rágtam most végig, igy emlékszem)
N=1

Azaz ha jó szemed/füled van. az OCR1A lábon a LED frekvenciája ~0,3-1 MHz körül lehet.

Írdd át:

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

'Timer - Speaker

'--- Alapadatok ---
$regfile = "ATtiny2313.dat"
$crystal = 7372800

Config Timer1 = Timer , Prescale = 8/64/256/1024 'szabadon valaszthato
'nagyobb prescale lassabb villogás

Config TimerLab as output

Dim Wtime As Byte

On Timer0 Pulse

Wtime = 100

Enable Interrupts
Enable Timer0

Do
  Set Portd.6
  Waitms Wtime
  Reset Portd.6
  Waitms Wtime
Loop

Pulse:
  Toggle Portb.0
Return

DE: megoldható, hogy a Timer HW-ből kapcsolgassa a LED-et, ekkor nem pazarolsz rá INT-et (idő).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Ha jó számolom nálad a freki:
4MHz/(65535-65100)=4MHz/435=9195 Hz

Ill. ennek a fele, mert Toggle-t hajtasz végre (9195/2=~4598).
(hangszórót tegyél lábra, magas hangon sípolni fog...)


De ha az elején a prescale=1 helyett Prescale 1024-i írsz, akkor 4598/1024=4 Hz! Ez még éppen látható....
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 »

Árírtam a prescale-t és jó is lett! Egy kicsit elnéztem... Köszönöm a helpet! Ebben a kódban, amit küldtél, a config-ban nem a timer0-t kellene beállítani? Csak mert mindenhol a timer0-t használod utána...
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 nem igaz! Átírtam timer0-ra az egészet, de nem akar menni!

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

$regfile = "attiny2313.dat"
$crystal = 8000000
Dim T_bit As Byte , Wtime As Byte

Config Timer0 = Timer , Prescale = 1024
Stop Timer0
Timer0 = 0
On Timer0 Pulse
Start Timer0


Config Pind.4 = Output
Portd.4 = 0
Config Pind.5 = Output
Portd.5 = 0

Wtime = 100

Enable Interrupts
Enable Timer0

Do
  Set Portd.4
  Waitms Wtime
  Reset Portd.4
  Waitms Wtime
Loop

Pulse:
  Stop Timer0
  Timer0 = 0
  Toggle Portd.5
  Start Timer0
Return

End
Nagyon béna vagyok!? :oops:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Hát ciki....
A Timer kimeneti láb meg van adva OutPutnak?


Az Enable Ints és az enable Timert cseréld fel... de lehet más is a gond...
A Timer 0 az 256-os számlálós!!!!

8M/256/1024=30 Hz
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 »

Timer kimeneti lábat miért kellene megadni outputnak?
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 »

Mégse én voltam teljesen béna, a chip-el volt valami! Eljutottam odáig, hogy egy egyszerű ledvillogás se ment vele! Mások 2313-al megy minden rendesen!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Hanyattlökött chip?

Vigyázz, a chipogó néha lehet induktív is! Főleg ha sikerül a rezonanciafrekit eltalálni... Nekem még sosem sikerült így hanyattlökni....
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 »

Én is meglepődtem rajta, hogy már a

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

$crystal = 8000000
$regfile = "attiny2313.dat"
Do
Toggle Portb.0
Wait 1
Loop
marha bonyolult program se akar menni! Pedig ezen nem sok minden van mit elrontani...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Pedig de. Alapban a lábak _bemenetek_. Azaz a programból a config portb.0=output sor kimaradt...
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 »

Jaja, tudom! Kimaradt az előbbi példából, de a programban benne volt! És mégse...
Válasz küldése