Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   371 / 840
(#) kiborg válasza kiborg hozzászólására (») Okt 28, 2011 /
 
Naszóval továbbléptem.
Az már biztos, hogy csak a kijelző "fagy le", mert ledeken látom, hogy szépen tovább számol a vezérlő.
Viszont ha PC-vel össze van kötve(földelve) a programozón keresztül, akkor nem sikerül reprodukálnom a hibát.
A kérdés továbbra is adott.
Üdv Kiborg
(#) UbiLinux válasza sikolymester hozzászólására (») Okt 28, 2011 /
 
Nem, maradjon az egész C-ben, csak assemblyben írtam le, hogy mit akarok, hogy valahogyan illusztrálni tudjam.
Ez egy procifüggetlen hw struktura leíró adatfile, ami egy 2 byte-os pointerrel kell kezdődjön.
A fordító Linuxos gcc.
(#) UbiLinux válasza trudnai hozzászólására (») Okt 28, 2011 /
 
Próbáld újra elolvasni a kérdést és majd rájössz, hogy ez nem is olyan egyszerű.
(#) Reggie válasza kiborg hozzászólására (») Okt 29, 2011 /
 
Kijelzo reset laban van kondi+felhuzo ellenallas vagy a uC-be be van kotve es kimenetkent van konfiguralva?
(#) Reggie válasza UbiLinux hozzászólására (») Okt 29, 2011 /
 
Adatfajlt miert forditoval szeretnel csinalni?
(#) zombee válasza Ricsi89 hozzászólására (») Okt 29, 2011 /
 
Csak hogy tudd, az OCR regiszterek általában pufferelve vannak. Azaz csak akkor frissül, ha a timer körbeér.
Ezért vezess be egy segédváltozót amire rápíted a ciklusodat, ja és a delay se maradjon el, kb. így:
  1. OCR1A=0b00000000;
  2. for(uint8_t ocr=0; ocr<255; ocr++)
  3. {
  4.   OCR1A=ocr;
  5.   _delay_ms(1);
  6. }
(#) kiborg válasza Reggie hozzászólására (») Okt 29, 2011 /
 
A kijelző resetje a vezérlőbe van bekötve és kimenetként konfigurálva.
Melyik a jobb?
Kiborg
(#) sgt hozzászólása Okt 29, 2011 /
 
AVR ISP-vel lehet Xmegákat programozni?

Mert Itt és Itt is írja hogy lehet, de ISP user Guide-ban nincs benne a támogatott eszközök között. Ötlet?
(#) Reggie válasza kiborg hozzászólására (») Okt 29, 2011 /
 
Jo az ugy, csak probalok rajonni, hogy mi az oka. Altalaban az ilyen hozzaersz es elszall tipusu jelensegek a szort kapacitasok es a nem megfeleloen meghajtott vezetekek miatt szokott lenni.
(#) boomerang hozzászólása Okt 29, 2011 /
 
Sziasztok,

Egy atmega8-as vezérlőnél miért ugrál a 10 bites ADC utolsó két LSB-je ? Referencia az AVCC, az AREF pedig földre van kötve 1µF kondival. A tápfesz is kellően stabil.
Előző eszközben nem csinálta ezt, pedig ugyanez a felállás volt mint a mostaniban. Jah, még annyit hogy belső oszcillátorról megy, de nem hiszem hogy ez számít.
Várom a segítő hozzászólásokat, köszi : )
(#) Reggie válasza boomerang hozzászólására (») Okt 29, 2011 /
 
AVCC szurve van induktivitas+kondi val?
(#) H2opok hozzászólása Okt 29, 2011 /
 
üdv
Tudna valaki ezzel kapcsolatban valami infót mondani?
Link

Mivel Szeretnék egy mátrix kijelzős órát , de sajnos sokat nem találtam erről a termékről. Viszont amit kibogarásztam ,hogy ez végül is egy óra. De ezenkívül? Valami fejleszthető dolog lenne, vagy mit lehet még kezdeni vele? Sajnos az AVR és Arduino-s dolgokban még "nem vagyok otthon".
Előre is köszi.
(#) zolee1209 válasza H2opok hozzászólására (») Okt 29, 2011 /
 
Szia!

Ebben AVR ketyeg? Nem találtam egyértelmű jelet erre. Mindenképp több modulból (8x8) álló kijelzőt szeretnél építeni, vagy elég lenne egy modulos is?
Bővebben: Link
Ezt dobtam össze nem olyan régen, bár már el is bontottam. Az időt RTC-ből olvasta, amit már régebben felprogramoztam, így pl idő beállítása sem került bele...
(#) zombee válasza sgt hozzászólására (») Okt 29, 2011 /
 
AVR ISP-vel nem lehet programozni, az XMega procik a PDI protokollt használják.
Ehhez minimum egy AVRISP-mkII szükséges, a termékeim között ez is megtalálható.
(#) sgt válasza zombee hozzászólására (») Okt 29, 2011 /
 
Már van ISP mkii csak azt nem írtam bele a hsz-be, de a User guide arról szól, és abban nincs benne hogy támogatja az ISP-t. No mindegy ha nem fog menni, akkor csinálok JTAG-et. .

Köszi a segítséget .

Esetleg még annyi kérdésem lenne, hogy mennyire különbözik a 8 bites kis tesótól?
(#) kiborg hozzászólása Okt 29, 2011 /
 
Hali!
Gondom akadt az SPI-vel.
Egy ADT7310 hőmérő szenzort kötöttem rá. (adatlap)
A mellékelt beállítások mellett is mindig 0x00-t olvasok ki belőle. Hol hibázom ?

Az ISP beállítása:
  1. SPI_MasterInit_temp:
  2.  
  3. lditemp,0b01010011
  4. outSPCR,temp;[7] - SPIE: SPI Interrupt Enable
  5. ;[6] - SPE: SPI Enable
  6. ;[5] - DORD: Data Order
  7. ;[4] - MSTR: Master/Slave Select
  8. ;[3] - CPOL: Clock Polarity
  9. ;[2] - CPHA: Clock Phase
  10. ;[1:0] - SPR1,SPR0: SPI Clock Rate Select
  11. ; SPI2X SPR1 SPR0 SCK Frequency
  12. ;   0    0    0      fosc/4
  13. ;   0    0    1      fosc/16
  14. ;   0    1    0      fosc/64
  15. ;   0    1    1      fosc/128
  16. ;   1    0    0      fosc/2
  17. ;   1    0    1      fosc/8
  18. ;   1    1    0      fosc/32
  19. ;   1    1    1      fosc/64
  20.  
  21. ldiR16,0b00000000
  22. outSPSR,R16;[7] - SPIF: SPI Interrupt Flag
  23. ;[6] - WCOL: Write COLlision flag
  24. ;[5:1] - Res: Reserved Bits
  25. ;[0] - SPI2X: Double SPI Speed Bit
  26. ;**** port B inic
  27. lditemp,0b10111011
  28. out DDRB,temp;B port kimenet és bemenet(MISO és PB2(INT2))
  29. ret


Az olvasási ciklus (adatlap szerinti).
A ciklus végén az SPDR-ben benne kellene lennie az olvasott értéknek, ezt datain-be mentem.
  1. SPI_send:
  2. ; Start transmission of data
  3. out SPDR,data
  4. Wait_Transmit:
  5. ; Wait for transmission complete
  6. sbis SPSR,SPIF
  7. rjmp Wait_Transmit
  8. in datain,SPDR
  9. ret


A végül az adatok, amiket küldök neki és erre a datain változóban kapom a 0x00-t
  1. temp_sens_init:
  2. call SPI_MasterInit_temp
  3.  
  4. cbi T_SEN_port,T_SEN_SEL; Temperature Sensor engedélyezése
  5. ldi data,0b01011000;[7] - 0 mindig
  6. ;[6] - R/W : 1-Read  0-Write
  7. ;[5:4:3] - Register adress
  8. ;[2] - Cont.Read csak TEMP Reg-hez,egymás után 2 byte olvasása
  9. ;[1:0] - 0 mindig
  10. call spi_send
  11.  
  12. ldi data,0xff
  13. call spi_send
  14.  
  15.  
  16. sbi T_SEN_port,T_SEN_SEL; Temperature Sensor tiltása
  17. ret

ASM-ben programoztam.
Ha felteszek egy VFD-t a buszra, az gyönyörűszépen megy, minden karakter minden pozícióban megjelenik.
De ez csak a busz írása az olvasása,ami nem megy.
Üdv Kiborg
(#) boomerang válasza Reggie hozzászólására (») Okt 29, 2011 /
 
Szia !

Nincs szűrve sajnos, de az előző panelben sem volt és ott nem ugrált...mostmár nem tudom beleépíteni az LC-t.
Akksiról van 7805-tel + pufferrel megtáplálva, így fel sem merült bennem hogy a tápfesz lenne a baj. Más még lehet a hiba oka ?...ugyanis ezt nem tudom orvosolni a kész áramkörben....nem kritikus ez az 1-2 LSB, csak zavaró az LCD-n látni.
(#) sikolymester válasza sgt hozzászólására (») Okt 29, 2011 /
 
Szerintem keverik a szezont a fazonnal. Ha megnézed a képet annál a mikroelektrikás cuccnál, akkor láthatod, hogy PDI áll a csatlakozó mellett.

A csinálsz magadnak Jtaget alatt mit értesz?
(#) sikolymester válasza boomerang hozzászólására (») Okt 29, 2011 /
 
Próbáld meg csökkenteni az ADC referencia órajelét.
Ha ez nem segít, akkor rakd a mikrokontrollert zajcsökkentő üzemmódba az ADC alatt, ezzel nagyobb pontosságot érhetsz el.

Amúgy meg addig rendben van, hogy stabil a tápod, de mit mérsz vele? Nem lehet, hogy annak a feszültsége ugrál egyszerűen?
(#) sgt válasza sikolymester hozzászólására (») Okt 29, 2011 /
 
Elképzelhető, hogy nem.

Bővebben: Link, Bővebben: Link, meg volt még egy olyan kép is ahol AVR ISP mkii-vel programozzák az Xmegát. És itt elég 4 vezeték (VCC, GND, CLK, DATA).

Az alatt azt értem hogy keresek egy jó kapcsolást ami mindent tud, és megépítem.
(#) boomerang válasza sikolymester hozzászólására (») Okt 29, 2011 /
 
Lecsökkentettem az ADC referencia órajelét. Megjavult, köszi szépen !!!
(#) zombee válasza boomerang hozzászólására (») Okt 29, 2011 / 1
 
Csak személyes tapasztalat: több ADC csatorna használatakor így csökkenthető az áthallás...
(#) sikolymester válasza sgt hozzászólására (») Okt 29, 2011 /
 
Az xmegak csak pdi vel es jtaggel programozhatoak. Az a 4 vezetekes dolog a PDI. Pdi-s programozot tudsz magadnak barkacsolni, jtageset nem. Csak jtag ice mk1 et lehet epiteni, ami mar reg nem supportalt. Osszesen kb10 AVRt tud az programozni.
(#) sgt válasza sikolymester hozzászólására (») Okt 29, 2011 /
 
Bővebben: Link 8. oldal .

"AVRISP mkII supports PDI interface to do programming only."
(#) CzLaci válasza Robi98 hozzászólására (») Okt 29, 2011 /
 
Múltkor írtam a lámpáról, mellékelve feltettem a forráskódját is. Ebből kimazsolázhatod a neked szükséges dolgokat, vagy módosíthatod, bár nem túl sokat kommenteztem benne.
Az AVR-re egy mikrokapcsoló és egy LED csatlakozik, a kapcsolóval a LED ki- és bekapcsolható, folyamatos gombnyomással a fényerő állítható PWM üzemmódban. Automatikusan lekapcsol inaktivitás esetén, ilyenkor alvó üzemmódba megy le, hogy keveset fogyasszon. Az AVR 128kHz-en megy a kis fogyasztás érdekében és a PWM-hez ez is elégnek tűnik.
Jelenleg még van egy kis hibája, de lehet, hogy csak a kapcsoló pergésmentesítését kellene megoldani a kapcsolásban.

lampa.zip
    
(#) mambonr5 hozzászólása Okt 29, 2011 /
 
Sziasztok még új vagyok itt. És máris egy komoly kéréssel fordulnék hozzátok. Van egy feladatom amit sürgősen meg kellene csinálnom de nem nagyon megy A feladat a következő lenne: adot egy atmega 128as mikroprocesszor egy 4*40 karakteres lcd kijelző (pqc4004aw-syl-2) és WinAvr (programmers notepad) nevű programmal kellene életet lehelni bele.. egyszerűbb programokat már tudok kezelni a mikroprocin de a hozzá csatlakoztatott lcd-t nem nagyon sikerül feléleszteni... ha valaki tudna egy egyszerű progit amivel kiiratni tudnék az szuper lenne.. Úgy konkrétan a legelejétől.. Előre is köszönöm a segítséget.
(#) UbiLinux válasza Reggie hozzászólására (») Okt 29, 2011 /
 
Mert nem akarok kézzel offseteket és pointereket számolni.
De az elején kértem, hogy hagyjuk a "..de miért" jellegő kérdéseket. Aki nem tud valaki válaszolni, ugorja ár a kérdésem, nem kötelező hozzászólni.
(#) Reggie válasza UbiLinux hozzászólására (») Okt 29, 2011 /
 
Azert kerdezem, mert nem ertem mi a celod es ugy eleg nehez segiteni... Esetleg kifejthetned bovebben/erthetobben.
(#) UbiLinux válasza Reggie hozzászólására (») Okt 29, 2011 /
 
Idézet:
„Azert kerdezem, mert nem ertem mi a celod es ugy eleg nehez segiteni... Esetleg kifejthetned bovebben/erthetobben.”


A célom egy keresztül-kasul pointerezett, bonyolult struktura másodlagos belépési pontjának kiszámítása, amit offsetként tárolhatok.
Ez a kérdés akkor is, ha az adatstruktura vegyértékeket, városok távolságát vagy banános ládák tartalmát tárolja. Valójában ezek ennél lényegesen bonyolultabb, részben tömörített adathalmaz elemei, mondjuk azt, hogy egy fenyőfa ághosszainak tömörített adataihoz rendelt optimalizált Huffman-tábla a file tartalma.
Nem tudom, mennyiben segít ez a két offset távolságát kiszámítani és letárolni.
Nem kell a Huffmant optimalizálni, sem mást felborítani, sem más, ide nem tartozó részlettel foglalkozni.
A kérdésem eredetileg csak ennyi volt és továbbra is ennyi:
Milyen trükközéssel tudom c-ben két label byte-ban számított távolságát elhelyezni egy erre a célra fenntartott két byte-os helyen. Ennyi a kérdés.
(#) sikolymester válasza sgt hozzászólására (») Okt 29, 2011 /
 
Akkor itt fogalom zavarok vannak.
Amikor én az ISP-t illetve PDI-t említem, akkor az interfészre gondolok, nem pedig a programozó eszközre.

Alábbi programozó felületek vannak az AVR-eknél:
-ISP
-PDI
-TPI
-Párhuzamos (ez már régi, de az eszközök egy része továbbra is támogatja)

A következő interfészek vannak, amikkel debuggolni is lehet:
-JTAG
-PDI
-Debugwire
-Nexus (32 bites AVR-eknél)

Az Xmegák mint említettem nem támogatják az ISP felületen való programozást. Ezzel megoldják azt a régi gondot, hogy ki tudja zárni magát az ember, hogyha rossz órajel fuse-t állít be, hoszen a PDI felület tartalmaz órajel jelet. Továbbá emiatt teljesen mindegy az is, hogy milyen órajelen ketyeg a cél AVR.
Ezen a PDI felületen lehet debuggolni is. Ehhez egy későbbi generációs Jtag Ice Mk2 kell, vagy egy Jtag 3.
Következő: »»   371 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem