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 

Programiranje AVR v asemblerju
Pojdi na stran Prejšnja  1, 2, 3, 4, 5  Naslednja
 
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
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Feb 10, 2008 1:07 am    Naslov sporočila:   Odgovori s citatom

Ja, kar precej časa mi je vzela raba AD-ja. Pravzaprav je bil vzrok površno branje datasheta. Prevzeta vrednost poravnave rezultata je desna. Ker sem imel napisano le proceduro za protvorbo 8 bitnetga rezultata za prikaz na displej sem pač vzel rezultat iz ADCL (nizek register) zato, da vidim, če se sploh kaj dogaja. Meritev se je ob resetu izvedla, na kar se ni več spreminjala. Spreminjanje reference, pina, mikrokontrolerja ni pomagala Sad . Na kar sledi podrobnejše branje datasheta...)

Ja naletim na tole:
Citiram:

If the result is left adjusted and no more than 8-bit precision is required, it is sufficient to
read ADCH. Otherwise, ADCL must be read first, then ADCH, to ensure that the content
of the data registers belongs to the same conversion. Once ADCL is read, ADC access
to data registers is blocked.


Ok, poravnam rezultat v levo preberem vrednost iz ADCH ... zadeva seveda dela ...Cool

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Feb 16, 2008 8:20 pm    Naslov sporočila:   Odgovori s citatom

Bega me oscilator. Če preberem fuse bite dobim tole v prilogi. Postavljeni sta le dve kljukici. Za oscilator je vse prazno. Kak je pravzaprav clock, kajti program v mikrokontrolerju teče - rekel bi da s frekvenco okrog 4Mhz. Imam narejeno eno procedurco kjer multipleksiram 4 mestni led displej. (skozi sem mislil, da je ura 4Mhz)
Displej normalno prikazuje torej bo ura tam blizu Confused S fuse biti ne bi rad kaj preveč eksperimetiral, da ne naredim kako neumnost (onemogočim serijsko programiranje) zato bi prosil kak nasvet glede oscilatorja ter nastavitev fuse bitov.



oscilator.jpg
 Opis:
 Velikost datoteke:  87.17 KB
 Pogledana:  8 krat

oscilator.jpg



_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Feb 16, 2008 10:23 pm    Naslov sporočila:   Odgovori s citatom

Nekaj ugotovitev - Izračunal sem, da je nastavljen clock 1Mhz. Imam vključeno T0 prekinitev s predelilnikom CK/8 Posamezen displej se osvežuje na ca 122.7Hz ("groba" meritev - multimeter) kar pri štirjih displejih znese ca 490Hz==2040uS temu bi ustrezalo da je CK ca. 1uS oz 1Mhz.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Ned Feb 17, 2008 12:58 am    Naslov sporočila:   Odgovori s citatom

Kaj imaš to ATTiny26 ?
_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Feb 17, 2008 1:22 am    Naslov sporočila:   Odgovori s citatom

VolkD je napisal/a:
Kaj imaš to ATTiny26 ?


Tako je.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Ned Feb 17, 2008 2:46 am    Naslov sporočila:   Odgovori s citatom

Aha.. potem pa startno dela z notranjim RC oscilatorjem na 1 MHz. Stvar lahko pospešiš za 8x. Za kaj več bo potrebno pa zunanji kristal. Z AVRStudio4 praktično ne moreš napačno postavit fuse bitov.
_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Feb 17, 2008 11:42 am    Naslov sporočila:   Odgovori s citatom

VolkD je napisal/a:
Aha.. potem pa startno dela z notranjim RC oscilatorjem na 1 MHz. Stvar lahko pospešiš za 8x. Za kaj več bo potrebno pa zunanji kristal. Z AVRStudio4 praktično ne moreš napačno postavit fuse bitov.


Da vprašam drugače - kako so "napačno" postavljeni fuse biti? Koliko gledam datasheet, izklop reset pina je že eden iz med njih? Kako se uporablja tisti "dodaten" 9-ti pin na tvojem programatorju? A sklepam pravilno - v koliko se izključi notranji oscilator je treba CLK pripeljati na pin zunanjega oscilatorja?

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Ned Feb 17, 2008 12:05 pm    Naslov sporočila:   Odgovori s citatom

Silvo je napisal/a:
Da vprašam drugače - kako so "napačno" postavljeni fuse biti? Koliko gledam datasheet, izklop reset pina je že eden iz med njih?

Res je, če izklopiš reset na tem pinu, potem pridobiš en I/O signal. Žal si s tem odrežeš možnost serijskega programiranja. Za rešitev nastale situacije (in še kar nekaj drugih podobnih) potrebuješ paralelni programator.
Mogoče ga kdaj naredim.

Silvo je napisal/a:
Kako se uporablja tisti "dodaten" 9-ti pin na tvojem programatorju? A sklepam pravilno - v koliko se izključi notranji oscilator je treba CLK pripeljati na pin zunanjega oscilatorja?

Točno tako ! Pripelješ ga na xtal1.
Kljub zagotovilom Atmela, da so novi čipi programirani tako, da je aktiven notranji LC oscilator, sem imel priložnost pri ATTiny seriji stvari reševat s takim zunanjim oscilatorjem.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Feb 17, 2008 1:15 pm    Naslov sporočila:   Odgovori s citatom

VolkD je napisal/a:
Silvo je napisal/a:
Da vprašam drugače - kako so "napačno" postavljeni fuse biti? Koliko gledam datasheet, izklop reset pina je že eden iz med njih?

Res je, če izklopiš reset na tem pinu, potem pridobiš en I/O signal. Žal si s tem odrežeš možnost serijskega programiranja. Za rešitev nastale situacije (in še kar nekaj drugih podobnih) potrebuješ paralelni programator.
Mogoče ga kdaj naredim.

Silvo je napisal/a:
Kako se uporablja tisti "dodaten" 9-ti pin na tvojem programatorju? A sklepam pravilno - v koliko se izključi notranji oscilator je treba CLK pripeljati na pin zunanjega oscilatorja?

Točno tako ! Pripelješ ga na xtal1.
Kljub zagotovilom Atmela, da so novi čipi programirani tako, da je aktiven notranji LC oscilator, sem imel priložnost pri ATTiny seriji stvari reševat s takim zunanjim oscilatorjem.


He, he tudi Atmeli imajo svoje muhe Wink Mogoče bi se mogli mikrochipvi ter atmelovi načrtovalci združit in narediti res en uporabniku prijazen mikrokontroler.
Moj prvi projektič z atmelom je sicer že na tiskanini. Če bom uspel spraviti vse skupaj na papir, ga bom danes objavil na forumu.
Se bom preusmeril na drugo družino mikrokontrolerjev? Nikakor ne. Sem si malo razširil obzorje. Imel bom še lažjo izbiro glede na potrebe. Sigurno bo še kaj narejeno z Atmelom. Bom kasneje skušal narediti okvirno primerjavo PIC-Atmel.

PS
Darko tudi ta primerek s katerim sem imel opravka ne za hardwersko množiti.
Confused

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Feb 18, 2008 9:51 pm    Naslov sporočila:   Odgovori s citatom

Glede na to, da je za mano tudi prvi izdelek narejen z AVR-jem, sem si tudi sam ustvaril mnenje PIC/AVR.

V nadaljevanju moje mnenje ter, grobe primerjave.

Oba proizvajalca nudita free razvojno orodje. Microchip (MPLAB) Atmel (Avr Studio)za programiranje v zbirniku. Sama orodja sta si presenetlivo podobna. Prehod z enega na drugega poznavalcu enega ni problematičen. V AVR studio se mi dopade dobra pomoč. V Avr Studiu pogrešam številčenje vrstic (Opcije za vključitev nisem našel - ne vem a obstaja ?) Sicer imata oba razvojna orodja tudi simulator. V AVR Studiju se mi ta zdi enostavnejši.

Assembler:
Picassembler pozna 35 instrukcij AVRassembler jih pozna 118 (ATTiny26) Z napisanega je razvidno, da ima Avrassembler bistveno več instrukcij. To pomeni, da je tudi bistven bolj "okreten" ter omogoča lažje programiranje. Prehod iz PIC na AVR assembler ni problematičen. Mislim, da bi bilo težje obratno, kati manjkalo bi instrukcij, ki si jih vajen.

Programator:
V MPLAB-u uporabljam ICD2 clone, ki zaneslivo deluje. Omogoča tudi online debug za določene mikrokontrolerje.
V AVR Studio je bil uporabljan darkotov programator, ki se je izkazal kot izredno hiter in zanesljiv programator.

Mikrokontroler:
Primerek, ki sem ga imel je bil ATTiny26. "ekvivalenten" pic bi lahko bil PIC16F88.

Arhitektira je seveda kar precej različna. Osnovne razlike so:
Pici imajo registre razporejene v več bank - zavisi od tega koliko registrov ima.
Omenjen primerek ima registre razporejene kar v 4 banke. Napaka pri izbiri banke lahko programerju naredi kar nekaj sivih las. Sad
Omenjen primerek PIC-a ima sicer večji programski pomnilnik, ima več rama ter eeproma. Po vgrajeni periferiji sta si dokaj podobna. Oba imata 10 bitni ADC. Nekaj več možnosti - pred vsem pri izbiri referenčne napetosti omogoča ATTiny26.
Oba imata vgrajen PWM ter USI slednje pri ATTiny-u še nisem poskušal.
Oba omogočata izbiro različnih tipov oscilatorjev z nastavitvijo fuse bitov. Pri pic-ih je to "elegantnejše" Fuse bite je možno definirat v samem programu. Prav tako tudi ni strahu, da bi z neustrezno postavljenim bitom "zaklenil" progamiranje.
Za podrobnosti povezave na datasheet. ATTiny26 PIC16F88

Datasheet:
Oba proizvajalca imata kvalitene datashete. Pri AVR-ju sem pogrešal kak primer kode pri opisu določenega dela periferije.

Cena HTE:

AT TINY 26L-8PU DIL-20 LeadPBfree 4,59 €
PIC 16F88-I/P 8-BIT FLASH MCU RoHS 5,28 €


Za konec:
Prehod z PIC-a na AVR je sorazmerno enostaven. Osebno sem potreboval največ časa za "pripravo terena" (snemanje ter nalaganje razvojnega orodja, sestavo programatorja ter testne plošče) Prva ledica se je na testni plošči prižgala že po kakih 15 minutah po tem, ko sem imel "teren pripravljen" Smile

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Feb 23, 2008 6:45 pm    Naslov sporočila:  AVR in skald? Odgovori s citatom

Sad Tudi AVR ne zna shraniti SREG v sklad Evil or Very Mad Bil sem skoraj prepričan, da to zna, zato na to nisem bil pozoren, dokler nisem pri neki testni zadevi naletel na težavo.

Spisal sem eno testno procedurco ter jo poskusil na simulatorju. Prekinitev T0 pred prekinitvijo postavim zastavico Z nato jo v prekinitveni rutini izbrišem - zunaj prekinitve program zazankam.

Obstaja še kaka druga varianta kot, da se SREG v prekinitveni rutini shrane v nek začasen register, ter se pred zaključkom prekinitve vrne.


Koda:
;--------------------
; testni program
;--------------------
#include  "tn26def.inc"


.org $000
   rjmp ZACNI
.org $006
   rjmp PREKINITEV
.org $009


PREKINITEV:
;   in r18,SREG
   clz
   nop
;   out SREG,r18
   reti



ZACNI:
   ldi r16,RAMEND
   out SP,r16
   sez   
   ldi r16,0b00000001
   out TCCR0,r16
   ldi r16,(1<<TOIE0)
   out TIMSK,r16
   sei
   nop
   rjmp PC-1         

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
spy
Član
Član



Pridružen-a: Sre 06 Sep 2006 20:43
Prispevkov: 403
Aktiv.: 1.76
Kraj: Tržič

PrispevekObjavljeno: Ned Feb 24, 2008 3:32 pm    Naslov sporočila:   Odgovori s citatom

AVR res ne zna sam shraniti statusni register. Za hitro-ponavljajoče prekinitve se strmi za čimhitrejšo prekinitveno rutino, zato takrat žrtvuješ nek spodnji register samo za shranitev SREG med prekinitvijo (kot si napisal).
Če pa je škoda registrov, pa postaviš SREG indirektno na sklad:

in r16,SREG
push r16
....
pop r16
out SREG,r16

Oba, PIC in AVR sta precej razširjena, zato je primerov kod za dele periferije ogromno. Atmel jih ima zbrane v Application Notes.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koroška-Mežica

PrispevekObjavljeno: Ned Jun 01, 2008 10:54 am    Naslov sporočila:   Odgovori s citatom

Silvo, ko si napisal tako lepo sporočilo, si pa še mene prepričal o AVRjih. Sam sicer niti o PICih ne morem nevem kaj veliko govoriti, ker za mano še ni kakšen resen projekt, ampak se še učim. V načrtu imam izdelavo ICD2 clone programatorja za PICe, takoj, ko si izdelam osvetljevalno napravo...Ko bom skozi dal PIC mikrokontrolerje in bom že do dobra obvladal assambler, bom malo preklopil na AVR assambler, ko bom tudi tega obvladal, pa se ne bom več zafrkaval z večjimi projekti v assamblerju, saj je dokaj zamudno in zelo razmišljujoče delo. Pri picih bom preklopil na BASIC, pri AVRjih pa na BASCOM. To bi naredil že na začetku, ampak potem ne bi imel potrebnega znanja o arhitekturi in delovanju, kot si že sam rekel.
Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sre Sep 24, 2008 8:16 pm    Naslov sporočila:   Odgovori s citatom

Za mano je ena malo obsežnejša aplikacija pisana v assemblerju. (porabljenega ca 90% pomnilnika Attiny2313) Večjih težav pri programiranju nisem imel. Kot sem že omeil v enem iz med sporočil sem imel malo težav z količino direktno dostopnih SNR. (Pri picu so namreč vsi direktno dostopni.)

Zanima me kako je s skladom pri AVR-jih. V omenjeni aplikaciji sem v sklad "potiskal" registre do enega nivoja. Na simulatorju sem sicer poskusil, da je vrjetno sklad omejen le s količino srama. Vprašanje glede sklada;
A prvajalnik zazna "owerflow" ?. Je možno iz sklada "izvleči" direktno register shranjen recimo na prvem nivoju?

Primer:

Koda:
ldi r16,10
push r16
ldi r16,15
push r16
ldi r16,20
push r16

Sedaj bi rad prebral 1.vrednost, registre pa ohranil v skladu.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Čet Sep 25, 2008 12:40 am    Naslov sporočila:   Odgovori s citatom

Na začetku programa sklad ročno incializiraš na konec SRAM pomnilnika (ali pa kar nekam na sredino). Če prebereš vrednost stack-pointerja, potem brez težav vohljaš po okoliških lokacijah z indirektnim naslavljanjem (s pomočjo X, Y, Z pointerjev).

V mojem spominu ni HW zastavice za stack underflow...
Prevajalnik pa tega ne more detektirati, ker nima pojma, kakšni bodo pogoji izvajanja in kako vgnezdene imaš interrupte.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
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
Pojdi na stran Prejšnja  1, 2, 3, 4, 5  Naslednja
Stran 3 od 5

 
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group