Óra programozása

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Óra programozása

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

Sziasztok!

Azt szeretném kérdezni a tisztelt egybegyültektől, hogy lehet-e Basic-ben pontos órát programozni 90s2313-ba LCD kijelzéssel.

Lenne egy pici programom, de ez baromira nem pontos.


Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7

Config Lcd = 16 * 2
Dim Hour As Byte , Minute As Byte , Second As Byte

Kezd:
Locate 1 , 1
If Hour < 10 Then
Lcd "0" ; Hour
Else
Lcd Hour
End If
Lcd ":"
If Minute < 10 Then
Lcd "0" ; Minute
Else
Lcd Minute
End If
Lcd ":"
If Second < 10 Then
Lcd "0" ; Second
Else
Lcd Second
End If

Wait 1
Second = Second + 1

If Second > 59 Then
Second = 0
Minute = Minute + 1
End If

If Minute > 59 Then
Minute = 0
Hour = Hour + 1
End If

If Hour > 23 Then Hour = 0
Goto Kezd
End

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

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

Nono.

Az óra léptetése nem így kell megy.
Timer programrészletet nézd meg. Illetve a versenyfeladatok között a ma felkerült is pont egy ilyen alkalmazás...

A config timer részt nézd meg. ez periódikus megszakítást csinál. Timer0 8 bites, a Timer1 16 bites.

Illetve egy _bonyolultabb_ megoldás ollózható ki a 902-es projektből is.

Javasolt az AVRCalc program-segédlet tanulmányozása is....:).


Na jó sokat megaszontam.
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

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

És már fenn is van a pályamunkákban
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

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

Robert írta:Nono.

Az óra léptetése nem így kell megy.
Timer programrészletet nézd meg. Illetve a versenyfeladatok között a ma felkerült is pont egy ilyen alkalmazás...

A config timer részt nézd meg. ez periódikus megszakítást csinál. Timer0 8 bites, a Timer1 16 bites.

Illetve egy _bonyolultabb_ megoldás ollózható ki a 902-es projektből is.

Javasolt az AVRCalc program-segédlet tanulmányozása is....:).


Na jó sokat megaszontam.
Ja igen!

Megnéztem az órás pályamunkát és rá kellett jönnöm, hogy az én tudásom etéren a béka feneke alatt van :cry:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Na jo, en sem ugy estem ki az osombol, hogy mindent tudtam.... :lol:
lajostoth

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

Ügyes a vekker program de a fordított kód méretén dobtam egy hátast.
Sajnos nincs időm C-be átírni.Tuti,hogy feléből kijönnék.
Avatar
csifi
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2005. augusztus 7. vasárnap, 6:00

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

Sziasztok!
Az ora interruptos kezelesehez kapcsolodva...
Az alabbi progammal probalkoztam, de a megszakitas rutinba nem akar belepni. A foprogram a C.1 bitet villogtatja, a megszakitasnak a C.1 biten kellene egy tusket kiadni, de ide nem jut el a program... Torespontnal nem all meg, szkoppal nezve nincs jelvaltozas...

Megszakitasok engedelyezve. (?)

Enable Interrupts
Enable Timer0

Mit rontottam el?

-----------------------------------------------
$regfile = "M16DEF.dat"
$crystal = 7372800

Config Pinc.0 = Output
Config Pinc.1 = Output

Dim Wtime As Word

Config Timer0 = Timer , Prescale = 1
On Timer0 Pulse:

Wtime = 50

Enable Interrupts
Enable Timer0

Do
Set Portc.1
Waitms Wtime
Reset Portc.1
Waitms Wtime
Loop

Pulse:
Toggle Portc.0
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 »

Portc.... lábakon nem a JTAG van? Azt igaza FUSE bitekben tiltottad? (azt hiszem C1...C5 lábon van.)


A

On Timer0 Pulse:

helyett

On Timer0 Pulse

kell. Azaz a kettőspont nem kell oda.
Az a prescale=1 elég durva....
Ha nagyobbra teszed? Pl. 256 vagy 1024?
Avatar
magic
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2005. december 10. szombat, 7:00

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

Mivel a megszakitasrutinod ~257 orajelciklus alatt hajtodik vegre, amint visszaterne a foprogramba, mar ugrik is ujra a megszakitas rutinra, mert addigra a timer0 tulcsordult (256 orajel, mivel prescale=1)
Ha prescale 8 vagy nagyobb, mar lesz ideje futni a foprogramnak is.
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

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

lajostoth írta:Ügyes a vekker program de a fordított kód méretén dobtam egy hátast.
Sajnos nincs időm C-be átírni.Tuti,hogy feléből kijönnék.
Igazad van, de a versenykiírásban Bascom-ra kérték a megoldást. :D
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 meg lesz a C fordító, és leírás, akkor - remélhetőleg - lesz verseny is:). De az még odébb van....

Amúgy a Bascomban is lehet optimalizálgatni, elég szépen. Még akár ezt is...
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

Üdv!
Az én kütyümben is van vekker. A timer1 csinálja de nem vagyok vele elégedett. Belső oszcillátorral kritikán aluli. Mostanában tettem rá kvarcot de még mindig van valami gond. Erős a gyanúm, hogy a programomban van a hiba.

OFF:
Fusebitek -ben jártas valaki?
Én MEGA32 vel szenvedek. nem tudom felhúzni 16Mhz-re. Már megy 12MHz-en. De nekem ez kevés.
:roll:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Külső órajel fusebitjét ld. adatlapon....

M16 esetén 1111-re kell rakni, kvarccal és 2*27pF kondival szoktam.
A beslő osc +/-5% pontosságú. PC sorosporti kommunikációra, alacsony sebességen még jó. (9600 bps)

Ha timer1 és IT, akkor az IT rutin ne legyen túl hosszú! Illetve ha más IT van, akkor sorrendben hajtódnak végre. De miért nem külső 32.768-as kristályt használsz a timer2-n? Itt az órakezelő rutiniok egyből élnek és a kód hossza is jóval rövidebb.
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

32.768 Az KHz ben értendő?
A fusebiteket én is 1111 re állítottam meg a CKOPT -ot is átállítottam.
De nem akart menni össze vissza villogtak a ledek meg recsegett a speaker.
Olyan érzésem volt mintha a program össze vissza menne mindenfelé.
A reset áramköröd hogy néz ki 16 MHz-en?
De 12 MHz-en megy rendesen, a hétvégén kipróbálom 14 MHz-en is.Ha megjön a kvarc hozzá.
A nem túl hosszú IT rutin mit jelent? A szimulátor szerint a legrosszab esetben is kb150 órajel alatt lefut a T1 megszakrutin. Szerintem az nem mondható hosszúnak.
Egyébként van másik külső megszakom is.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Igen.
DE: nem a normál kvarc helyére megy, hanem a TOSC1 TOSC2 lábra. A súgó/adatlapok az aszinkron timer néven hivatkoznak rá. A Bascom súgó is
(Config Clock pont).

Tipp: Watchdog nem resetel? Esetleg tápon belül ingadozás (BOD bekapcsolva?)?

Az IT rutinban ennyi bőven jó. Ott nem lehet ilyen gond (azt hittem pl. ott van LCD-re kiiratás).
Válasz küldése