www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ATtiny2313 - težave

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Tor Mar 08, 2011 11:58 pm    Naslov sporočila:  ATtiny2313 - težave Odgovori s citatom

Zdravo !

Po dolgem prebiranju tem o AVR-jih in vsega ostalega okoli teh mikroprocesorjih sem se odločil tudi jaz poskusit na tem.

Naredil sem AVR isp programator , moja prva tiskanina s toner transferjem je uspela , čeprav sem uporabil likalnik.

Prebil sem tudi prvi stik z BASCOM-om, na test boardu sem postavil ATtinx2313 7 seg display in se malo začel igračkat.
Uspeli so mi prvi programi.
Ugotavljal sem, da mi čas kot je Wait 1 ni 1 sekunda.

Pa sem malo šel "čarat po Bacsom-U" in v tistem delu programiranja čipa
ko piše Lock and Fuse Bit šel malo gledat kaj je tukaj.
Nastavil sem fusbit kla987 na ext clock 000 000 in naredil write fs.

Pa je mikro crknil.

Kaj sem naredil.

Kako ga naj ponovno oživim.

Kako naj pripravim mikro , da bo delal s točnim časom.

Imam še 1 mikro , tako, da sem lahko vaje-test nadaljeval.

Lep pozdrav Bojan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PrimozL
Član
Član



Pridružen-a: Tor 21 Mar 2006 10:55
Prispevkov: 404
Aktiv.: 1.72
Kraj: okolica Vipave

PrispevekObjavljeno: Sre Mar 09, 2011 1:04 am    Naslov sporočila:   Odgovori s citatom

Živijo,

Nisem točno gledal, kaj pomeni tvoja nastavitev varovalk. Če si nastavil varovalke tako, da dela z zunanjo uro, se da problem enostavno rešiti.

Na XTAL1 pin pripelješ TTL signal z nekega oscilatorja, recimo 1-10 MHz in poženeš programator. Ko povezava s čipom spet deluje, nastaviš varovalke nastaviš tako, da uporablja notranjo uro.

Vedno pa lahko rešiš tak čip s paralelnim ali high-voltage programatorjem.

Kar se pa tiče točnih zakasnitev:
- notranja RC ura v AVRjih odstopa par %, pa še temperaturno je odvisna. Predlagam uporabo kristala ali pa vsaj resonatorja.

- povsem točne zakasnitve najlažje dosežeš s timerjem in prekinitvijo. Jaz si običajno v vsakem projektu nastavim prekinitev vsako 1 ms in potem programsko določam, kaj se bo takrat izvedlo. Na tak način brez težav narediš nek razvrščevalnik z ločljivostjo 1 ms, ki obvladuje več dogodkov (zakasnitev) vzporedno.

LP Primož.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 16.00

PrispevekObjavljeno: Sre Mar 09, 2011 9:12 am    Naslov sporočila:   Odgovori s citatom

Za "zaklenjen" čip je že predhodnik povedal.

O tistem "Wait 1" bom pa dodal tole:
katerikoli jezik uporabljaš (basic, C, asm) v vsakem primeru je potrebno prevajalniku povedati, s kakšno hitrostjo (taktom) mikro deluje. Glede na to bo prevajalnik znal preračunati, koliko taktov mora preteči, da mine željeni čas. Če mu tega ne poveš, bo prevajalnik (bascom) pri prevajanju programa uporabil privzeto vrednost, ki pa ni nujno, da je točna.
Tako bo recimo tvoj wait 1 dolg 8 sekund, 4 sekunde, 0,5 sekunde, 0,25 sekunde ali pa res 1 sekundo...

Poglej kako se v bascomu ta urni takt definira - v kakem primeru, čisto na začetku programa.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Čet Mar 10, 2011 7:51 pm    Naslov sporočila:  zakaj wait1 ni 1 sekunda Odgovori s citatom

Sem že pri novi težavi , prejšno še nisem rešil.

Imam Attiny 2313 in 7 seg display s skupno katodo.
ni na minipinu - imam navadno testno ploščo.

Priredil sem spodnji program, pa wait1 ni 1 sekunda.

Drugače pa program lepo izpisujena na display.



' Prikaz vrednosti od 0 do F na enem od 7 segmentnem displeju.
' Vrednosti morajo biti lepo vidne, če kakšna vrednost ne odgovarja, je
' napaka v tabeli za prevajanje.


'$regfile = "m16def.dat" ' specify the used micro
'$crystal = 11059200 ' used crystal frequency

$regfile = "attiny2313.dat"
$crystal = 12000000
$hwstack = 32
$swstack = 8
$framesize = 24


Dim I As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim S As String * 16

Config Portb = Output

Config Portd = Output

Do
For J = 0 To 2
If J = 0 Then
Portd.3 = 1
Reset Portd.4
Reset Portd.5
End If

If J = 1 Then
Portd.4 = 1
Reset Portd.3
Reset Portd.5
End If

If J = 2 Then
Portd.5 = 1
Reset Portd.4
Reset Portd.3
End If

For I = 0 To 15
Portb = Lookup(i , Minipin7seg)
' lookup ukaz potegne iz tabele tisto vrednost, ki odgovarja po zaporedju
' vrednosti argumenta lookup ukaza, torej spremenljivki i
'
Wait 1
Next

Next
Loop

Minipin7seg:
' 0 1 2 3 4 5 6 7
'Data &H41 , &HDD , &H64 , &H4C , &HD8 , &H40 , &H42 , &H5D
' 8 9 A B C D E F
'Data &H40 , &H58 , &H50 , &HC2 , &H63 , &HC4 , &H62 , &H72
'
Data &HBE , &H22 , &H9B , &HB3 , &H27 , &HB5 , &HBD , &HA2
Data &HBF , &HB7 , &HAF , &HBF , &H9C , &HBE , &H9D , &H8D
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 563
Aktiv.: 2.38
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 10, 2011 8:39 pm    Naslov sporočila:   Odgovori s citatom

Bojan,
pri fuse bitih moraš nastaviti na ext crystal in ne ext clock, pa zdi se mi da Tiny ima tudi divide by 8, to moraš izklopiti da ti bi proceor delal s taktom zunanjega kristala.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Čet Mar 10, 2011 9:36 pm    Naslov sporočila:   Odgovori s citatom

Se da to nastavit tudi v BASCOM u. en tiny2313 sem že "zafural" ne bi rad še tega.

je to tukaj
pripenjam sliko.

To tukaj moram nastavit preden prenese program v mikro.

Ker sem jaz nastavil sicer na ext osc.... in nato rekel write FS , pa je z mikrom konec.



avr isp stk prog.jpg
 Opis:
 Velikost datoteke:  532.94 KB
 Pogledana:  29 krat

avr isp stk prog.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
blay44
Član
Član



Pridružen-a: Ned 19 Dec 2010 18:17
Prispevkov: 604
Aktiv.: 3.42

PrispevekObjavljeno: Čet Mar 10, 2011 10:19 pm    Naslov sporočila:   Odgovori s citatom

Zakljenjne boš rešil tako, da med programiranjem pripelješ vsaj štirikrat hitrejši zunaji takt kot je hitrost programiranja.
Če pa si pomotoma nastavil notranji RC osilator na minimum(faktor deljenja) ga pač moraš lepo (štirikrat) počasneje programirati z nastavitvijo zakasnitve. Vsaj tako je pri Tiniyu.

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 16.00

PrispevekObjavljeno: Pet Mar 11, 2011 7:22 am    Naslov sporočila:   Odgovori s citatom

Malo bi pomagalo, če bi poskusil prebrati in razumeti, kar so ti ljudje povedali v prejšnjih postih....
Pa povej, koliko traja tvoj wait1, prosim Pray . Zakaj moramo ugibati?

Tiny je po sliki nastavljen na interni 8MHz oscilator (fusebit KLA 987), ki ga potem deli z 8 (fusebit C), tako da je njegov osnovni takt trenutno 1MHz. Kolikor je tudi po defoltu nastavljen nov tiny 2313.

In če Bascom ne ve, da mikro dela z 1MHz, kako naj potem zna narediti sekundne pavze (wait1)?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Sob Mar 12, 2011 4:54 pm    Naslov sporočila:   Odgovori s citatom

Sem že napisal, da sem začetnik v programiranju, pa kljub vsej literaturi, ki jo lahko prebiraš teško najdeš čisto začetne korake pri programiranju. Lepo je da napišeš tako in tako se naredi, korakov kaj vse je potrebno nastavit v določenem programu in kaj pri samem programatorju pa ne torej HW in SW nastavitve.

Tako se pač prebijaš skozi pasti in jih spoznavaš.
Zato pa tudi vprašujem kako in kaj.

Grem po vajah, ki sem jih našel na tem forumu, pa mi kar uspeva.

Uspel sem narediti kar nekaj vaj , zataknilo se mi je timer-ju.

Ko prižigam 7seg display mi le ta utripa.

prilagam program, je kombinacija dveh programov

ima attiny 2313 , 7seg displ s skupno anodo, ds1820
in uporabljam notranji takt.



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

$hwstack = 32
$swstack = 8
$framesize = 24

Dim I As Word
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim S As String * 16
Dim T As Integer
T = 0

Config 1wire = Portd.0
Config Portb = Output

'dodamo 7seg displey na PD.7
Config Portd = Output

' Prikazati želimo vrednost spremenljivke i
I = 4565

' Timer nastavimo tako, da se aktivira vsakih 5 ms in takrat prekine delo
' glavnega programa in zažene podprogram:

Const Timer0reload = 54
Config Timer0 = Timer , Prescale = 1024
Load Timer0 , Timer0reload
On Ovf0 Timer0_isr
Enable Ovf0
Start Timer0
Enable Interrupts


' GLAVNI PROGRAM

Do
' V glavnem programu si ne belimo glave z prikazovanjem na displej,
' samo skrbimo, da bo vrednost spremeljivke, ki jo je prekinitvena
' rutina dolžna prikazati, v skladu z deom programa

'Če med tem pritisnemo tipko, naj se vrednost spremenljivke i za ena poveča:
1wreset
1wwrite &HCC 'skip ROM
'1Wire ukaz
1wwrite &H44 'convert temperature
Wait 1

1wreset 'reset
1wwrite &HCC 'skip ROM
1wwrite &HBE 'READ Scratchpad

T = 1wread(2)
1wreset
T = T / 2

I = T


Loop

' PREKINITVENI PODPROGRAM
Timer0_isr:
Load Timer0 , Timer0reload

' V prekinitveni rutini vsakokrat prikažemo eno od 4 številk
' in to neodvisno od dela glavnega programa, zato ni utripanja, kadar
' glavni program dela kaj drugega

Dim Tis As Word 'Tisočice
Dim Sto As Word 'Stotice
Dim Des As Word 'Desetice
Dim Eni As Word 'Enice

'Iz spremenljivke i napolnimo spremenljivke tis, sto, des in eni
' in le te prikažemo:

Eni = T Mod 10
Des = T Mod 100
Des = Des / 10
Sto = T Mod 1000
Sto = Sto / 100
Tis = T / 1000

Incr K
If K > 2 Then K = 0
Portd = 0

If K = 0 Then
Set Portd.5
Portb = Lookup(sto , Minipin7seg)
End If

If K = 1 Then
Set Portd.4
Portb = Lookup(des , Minipin7seg)
End If

If K = 2 Then
Set Portd.3.3
Portb = Lookup(eni , Minipin7seg)
End If
Return

Minipin7seg:
Data &HBE , &H22 , &H9B , &HB3 , &H27 , &HB5 , &HBD , &HA2
Data &HBF , &HB7 , &HAF , &HBF , &H9C , &HBE , &H9D , &H8D
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 563
Aktiv.: 2.38
Kraj: Ljubljana

PrispevekObjavljeno: Sob Mar 12, 2011 5:48 pm    Naslov sporočila:   Odgovori s citatom

Bojan,
ne zastopi narobe, ampak nobeden nima toliko časa da bo tebi držal tečaj Bascoma na forumu.
Ko sem ti svetoval pri nastavitvi fuse bitov sem menil da je dovolj da ti povem kateri moraš izbrati, ker če klikneš v Bascom na programator in odpreš fuse bite, boš tam kjer si nastavil zunanji oscilator hitro našel tudi opcijo za zunanji kristal!
Težko da kdo ima toliko časa da ti drži tečaj na forumu.
Praviš da si začetnik, vzel pa si si takoj primer ki vsebuje 1Wire, 7 segmentni displej kateri potrebuje timer . . .
Bascom je prijazen za uporabnika, vendar tudi pri njemu moraš prebrati data shet od procesorja, prav tako tudi malo Help Bascoma.

Tvoja prekinitvena rutina traja predolgoooooo, v njej moraš narediti tisto najnujnejše in se vrniti nazaj, vse ostalo pa v glavni zanki.

Pri uporabi 1Wire moraš vedeti da so timingi zelo zahtevni in ti se lahko zgodi da boš imel napačen podatek če imaš istočasno vklopljeno prekinitev.

Pri timeru moraš verjetno izračunati novo vrednost Timer0, ker je primer ki si ga uporabil imel verjetno drugo vrednost kristala.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bojan_z
Član
Član



Pridružen-a: Pet 16 Maj 2008 20:28
Prispevkov: 256
Aktiv.: 1.23
Kraj: Maribor

PrispevekObjavljeno: Sob Mar 12, 2011 5:54 pm    Naslov sporočila:   Odgovori s citatom

Hvala za nasvet Vlado , bom poskusil.

Samo, da imam kakšen namig, kje naj iščem.

Tisto kar sem napisal, pa je bilo tako na splošno. Ko se prebijaš od teorije do prakse, naletiš kar na nekaj težav.

Upam, da se bom uspešno prebil skozi.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group