 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Feb 10, 2008 1:07 am Naslov sporočila: |
|
|
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 . 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 ...
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Feb 16, 2008 10:23 pm Naslov sporočila: |
|
|
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 |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.06 Kraj: Divača (Kačiče)
|
Objavljeno: Ned Feb 17, 2008 12:58 am Naslov sporočila: |
|
|
Kaj imaš to ATTiny26 ?
_________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Feb 17, 2008 1:22 am Naslov sporočila: |
|
|
VolkD je napisal/a: |
Kaj imaš to ATTiny26 ? |
Tako je.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.06 Kraj: Divača (Kačiče)
|
Objavljeno: Ned Feb 17, 2008 2:46 am Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Feb 17, 2008 11:42 am Naslov sporočila: |
|
|
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 |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.06 Kraj: Divača (Kačiče)
|
Objavljeno: Ned Feb 17, 2008 12:05 pm Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Feb 17, 2008 1:15 pm Naslov sporočila: |
|
|
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 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.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pon Feb 18, 2008 9:51 pm Naslov sporočila: |
|
|
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.
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"
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Feb 23, 2008 6:45 pm Naslov sporočila: AVR in skald? |
|
|
Tudi AVR ne zna shraniti SREG v sklad 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 |
|
 |
spy Član


Pridružen-a: Sre 06 Sep 2006 20:43 Prispevkov: 403 Aktiv.: 1.76 Kraj: Tržič
|
Objavljeno: Ned Feb 24, 2008 3:32 pm Naslov sporočila: |
|
|
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 |
|
 |
ljudsko Član


Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 5.65 Kraj: Koroška-Mežica
|
Objavljeno: Ned Jun 01, 2008 10:54 am Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Sep 24, 2008 8:16 pm Naslov sporočila: |
|
|
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 |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.71 Kraj: Kranj - struževo
|
Objavljeno: Čet Sep 25, 2008 12:40 am Naslov sporočila: |
|
|
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  |
|
Nazaj na vrh |
|
 |
|
|
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
|