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   367 / 840
(#) Reggie válasza kiborg hozzászólására (») Okt 16, 2011 /
 
Az abszolut maximum az az ertek, amit elerve tonkremegy az IC. Ergo, te 5V-rol hasznalhatod, de nem erre terveztek az IC-t, tehat akar az is lehet, hogy rosszul fog merni, viszont tonkremenni meg nem fog. Ha ugy szeretned hasznalni, hogy biztos megfeleloen mukodjon, akkor 1.7...3.7V kozott kell merni.
(#) kiborg válasza Reggie hozzászólására (») Okt 16, 2011 /
 
Köszi.Akkor sajnos úgy van ahogy gondoltam.
Tudsz ajánlani valami SPI-s hőmérő IC-t, ami 5V-os és viszonylag pontos ? +/- 0,5°C ?
(#) Reggie válasza kiborg hozzászólására (») Okt 16, 2011 /
 
(#) kiborg válasza Reggie hozzászólására (») Okt 16, 2011 /
 
De az 3 Wire interfészt használ.
Ami azt jelenti, hogy ha őt akarom írni/olvasni, akkor mindig állítgatnom kell az AVR MOSI kimenetét, hogy bemenet legyen és utána vissza, ha újra írni akarom. Vagy hogy kellene ahhoz bekötni ? Ezt el szeretném kerülni,mert több cucc is fog SPI-n kommunikálni.
Kiborg
(#) Reggie válasza kiborg hozzászólására (») Okt 16, 2011 /
 
Az meg nem is lenne nagy baj, csak szar a protokolja. Normal 3wire cucc olyan lenne, hogy ha nincsen meghajtva a bemenete, akkor automatikusan adja ki az adatot, de nem neztem meg az adatlapjat. Nem tudom mit javasoljak neked, nem szoktam homerot hasznalni.

Esetleg ADT7301, meg olcsobb is. Vagy ADT7411.
(#) zombee válasza Reggie hozzászólására (») Okt 16, 2011 /
 
A protokoll tényleg nem valami jó, de legalább akármennyi hőmérő ott lóghat azon a 3 szálon.
Ki van ez találva, hidd el nekem. Egyébként ha már megvan egy könyvtár akkor a későbbiekben nincs baj vele.
(#) ATtiny hozzászólása Okt 16, 2011 /
 
Egy I2C -s DS1307 -es RTC-t szerettem volna ma beüzemelni, tisztán SW-es meghajtással, mivel a hardveres TWI nem használható, ott egy SPI eszköz lesz. A következő i2c drivert használtam Bővebben: Link Elvileg ez egy jól működő driver. Sajnos azonban nem sikerült életet lehelnem a DS1307 -esbe. Több RTC IC-vel is kipróbáltam. Oszcilloszkóppal nézve az SDA és SCL vezetékeket ránézésre rendben van amit a driver produkál. Viszont a DS1307 -es nem reagál mikor kiküldöm az I2C buszra az eszköz címét. Nem küld ACK-t. Lásd mellékelt képeket. Az egyiken az eszköz címét elshifteltem egyel, hogy látszódjon mit produkál a driver. Nos akkor a kérdés: Mi lehet a gond? Nem hinném, hogy a driver rossz, ezt a drivert én már használtam régebben eepromhoz és azzal működött.
(#) Reggie válasza zombee hozzászólására (») Okt 16, 2011 /
 
Mivel van az ic-n chip select(itt konkretan reset funkcioval egybekotve), igy nem nagy muveszet, barki kitalal ilyet...
Normalis 3wire eszkozt ugy terveznek meg, hogy konfiguralas utan 4wire rendszerben is legyen lehetoseg hasznalni.
A fuggvenykonyvtaras megjegyzesed, kb. minden eszkoznel igaz, nem csak ennel
(#) Reggie válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Az IC adatlapja szerint(3. es 4. oldal), a start szekvencianal az orajel lefuto elenek 0-ra csokkenese utan legalabb 4 us ideig varni kell, mielott az adat elkezdhet felfutni. Nalad ez szemre nincsen meg. A kepen mellekeltem neked.
Azaz feltehetoleg az i2c_start fuggvenyed vegen es az i2c_tx fuggvenyed elejen nincsen varakozas es te sem tettel a ketto hivas koze.

a1.png
    
(#) gtk válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Nekem van egy I2C driver erre az ICre, nehany fugvennyel amit en irtam hozza. Ha kell szoljal. A header igy nez ki:

ds1307.h
    
(#) ATtiny válasza gtk hozzászólására (») Okt 16, 2011 /
 
Köszönöm mindenkinek a segítséget. A probléma megoldódott. A driver hibátlan volt. A probléma az volt, hogy a próbák idejére nem kapcsoltam elemet a RTC megfelelő lábaihoz. Nem gondoltam volna, hogy elem nélkül teljesen beszünteti az RTC a működését. Jó tanulság volt. Elszórakoztam vele pár órát a hiba keresésével.
(#) gtk válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Hat igen, a vas is rendben kell legyen..
(#) Reggie válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Sot, en is elneztem a doksit, jo a jelalak.
(#) ATtiny válasza Reggie hozzászólására (») Okt 16, 2011 /
 
Igen, ez a tanulság nagyon hasznos. Főleg annak fényében, hogy az adatlap azt írja, hogy a Vbat lábat földeljem ha nincs rá szükség . Természetesen földelve volt. No sebaj. Lényeg, hogy működik. Majd elképzelhető, hogy berakok egy kis delay -t a start és az első bit küldés közé. Bár így is működik.
(#) Reggie válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Nem kell delay, en neztem el, ugyanis a doksiban a jelalak es az azon levo idok leirasa nem egy oldalon van, igy a te kepeddel egyutt mar 3 helyre kellett felvaltva lapoznom es elcsusztam veletlenul.
(#) ATtiny válasza Reggie hozzászólására (») Okt 16, 2011 /
 
Oké. Ennek örülök. De amúgy is furcsállottam volna, ha nem jó a driver. Egy régebbi projektemben már használtam eepromhoz.
(#) sikolymester válasza ATtiny hozzászólására (») Okt 16, 2011 /
 
Azért mert egy korábbi projektben a driver működött, az nem jelenti azt, hogy minden később IC ugyanolyan időzítésekkel lesz képes üzemelni. Ezt sosem árt megnézni.

Ha meg mondjuk használsz majd SPI-t, akkor ez fokozottan igaz lesz, mert ott az LSB-MSB változhat illetve az, hogy lefutó élre, vagy felfutó élre olvas e be.
(#) Fish hozzászólása Okt 17, 2011 /
 
Szasztok.

Egy elméleti kérdéssel kapcsolatban kérném a segítségeteket. Adva van egy hőmérséklet mérő modul ATmega8-al. Termisztorokkal méri a hőmérsékletet, amelyek az A/Dbemeneteket használja. Na mármost, ehhez az egészhez szeretnék kapcsolni egy kijelzőt is ami I2C-n kommunikál. Kérdésem lehet-e az ADC4 és ADC5ös lábakat kettős funkcióban is használni, vagy ilyenkor ezeket a lábakat fel kell szabadítani az I2C számára? Köszi a segítséget .
(#) sikolymester válasza Fish hozzászólására (») Okt 17, 2011 /
 
Párhuzamosan nem futhat rajta két funkció. De az természetesen működik, hogy amíg hőmérsékletet mérsz, addig úgy konfigolod, majd ha I2C-zel rajta, akkor addig annak állítod be.

Arra mindenesetre felhívom a figyelmed, hogy a termisztor kimenete érzékeny lehet arra, hogyha ott lóg rajta egy alacsony impedanciás dolog, ami jelen esetben a kijelző. Ha gondoskodni tudsz róla, hogy a kijelző lábai nagy impedanciás állapotba kerüljenek, amikor mérsz az ADC-vel, akkor rendben leszel.

Illetve azt tudni kell, hogy az ADC porton bárminemű jelalakváltozás befolyásolhatja az ADC mérés eredményét. (elég, hogyha az ADC0 -n mérsz, miközben az ADC7-n egy szoftveres pwm-t járatsz)
(#) Fish válasza sikolymester hozzászólására (») Okt 17, 2011 /
 
Köszi a segítséget.

Akkor amit fentebb említettél, ez azt jelenti, hogy ha mondjuk az ADC4 és 5ös lábakat csak I2Cre használom, akkor is lehet pontatlanság a többi lábon történő mérés miatt, mivelhogy az I2C is az ADC porton van? vagyis akkor az lenne a korrekt hogy ha az ADC porton csak mérnék és a kijelzést nem I2Cn oldanám meg, hanem másképp? SPI pld? Jól értem?
(#) Reggie válasza Fish hozzászólására (») Okt 18, 2011 /
 
Igen tortenhet. De ha az I2C-n nem tortenik adatatvitel mialatt az ADC mintat vesz es konvertal, akkor nyugodtan hasznalhatod, nem no meg a pontatlansag. Csak akkor, hogyha egyszerre mersz es irsz a kijelzore.
Viszont, ha a mintavetelezes es I2C buszsebesseg megfelelo aranyban allnak egymassal, akkor a meresi eredmenyek atlagolasaval akar nohet is a pontossag. Van errol egy AppNote az atmel honlapjan.
(#) TavIR-AVR válasza Fish hozzászólására (») Okt 18, 2011 /
 
Hát, Bascom alatt van tapasztalatom:
- Az I2C-s lábakon a pontosság megbízhatóan 8 bites csak. De ezt az adatlap is írja.
Amire vigyázz: Az I2C-n illik lennie felhúzóellenállásoknak (SCL és SDA lezárás. Ez helyből meghamisítva a mérést. Igaz SWből majd korrigálható.

Én külön venném. Soft I2C-t raknék át máshová. Így megmarad a 6 ADC láb...
Vagy 4 ADC és HW/SW I2C . A feladat dönti el.

De kérdés, hogy az I2C kommunikációba - ha felváltva használod, hol I2C hol ADC - nem kavar e be az I2C kommunikációnak az ADV áramkör és viszont...
(#) wir12 hozzászólása Okt 18, 2011 /
 
Sziasztok örülnék neki ha valaki le írná nekem hogy hogyan épül fel az assembly program szerkezete (pl mint a Basic-be hogy definiáljuk az órajelet utána a használt AVR-t utána a portok irányát stb stb)? Nagyon hálás lennék és kérlek benneteket ne linkeljetek.

Előre is köszönöm
(#) zombee válasza wir12 hozzászólására (») Okt 18, 2011 /
 
Első megközelítésben azt mondom hogy lehetetlent kérsz! Az assembly programozáshoz szükséges
tudás-és ismeretigény a C nyelvű programozásét is meghaladja, pedig ez utóbbi is sokaknak gondot okoz.

A másik megjegyeznivalóm hogy órajelet nem definiálunk, mert assemblerben mindent TE számolsz ki.
Ettől függetlenül vannak makrók és definíciók, amelyek a programod áttekinthetőbbé és rugalmasabbá tehetik.

A programod mindig a csip megadásával kezdődik, ez tartalmazza az I/O címeket(is):
  1. .include "t2313.inc"


A makrókat tetszőleges helyre teheted(de lehetőleg minél előbbre),
azok a programodban úgyis csak ott jelennek meg ahol használod.
Mindig a .org $0000 - nál kezdődik a programod ahonnan érdemes eljumpolni,
mert utána az interrupt tábla jön. Az interrupt tábla után kezdődhet a programod is...
(#) Reggie válasza zombee hozzászólására (») Okt 18, 2011 /
 
Dehogy...
(#) Reggie válasza wir12 hozzászólására (») Okt 18, 2011 /
 
Ha ebbe a temakorbe vago konyvet javasolhatok, akkor Peter Norton-tól a "Az IBM PC programozása assembly nyelven" cimu konyvet tudom javasolni. Ezen kivul meg a Konya Laszlotol a "PIC mikrovezerlok alkalmazastechnikaja" cimu konyv is jo valasztas kezdoknek, de nyilvan mindket konyvnel mas az architektura, viszont az assemblyben megirt forras(ok) szerkezete lenyegeben megegyezik.
Ha tudsz angolul olvasni, akkor ezt az oldalt is erdemes lehet megnezni.
(#) kiborg válasza wir12 hozzászólására (») Okt 18, 2011 /
 
Szia!
Ajánlom még ezt az oldalt is, nekem az elején határozottan sokat segített.
avrbeginners.net

Meg egyébként a google, néztem, hogy ki mit csinált a nagyvilágban és azután szépen formálódva programról programra kialakult a saját kis szerkezetem, amit megszoktam és az minden progim alapja.(már 10 éve).

Üdv Kiborg
(#) sikolymester válasza wir12 hozzászólására (») Okt 18, 2011 /
 
Nem tudom, hogy miből kifolyólag akarsz assemblyt tanulni, de amennyiben nem azért, mert ezt várja el a főnök, vagy tanár, akkor lebeszélnélek róla. Főleg azért, mert látszik, hogy elképzelésed sincsen róla, hogy eszik-e vagy isszák. Legalábbis a kérdésedből ez kitűnik.

1. Kizárt, hogy bármilyen programnyelvet elmagyarázzanak neked egy posztban (ugye azt írtad, hogy ne linkeljünk)
2. Az assembly a lehető legalacsonyabb nyelv, ennél már csak az van alacsonyabb szinten, hogyha egy két billentyűs billentyűzettel gépelsz programot, amin ugye 0 meg 1 áll. Így teljesen kizárt, hogy megadható legyen az, hogy hogyan kell az órajelet definiálni, vagy portot irányítani....

Mert ez ugye nem java, hogy azt mondd, hogy
Timer TimerObj = new Timer;
Timer.init("1000");
és akkor voilá, fut a timer.

Meg kicsit félreérted a fórum értelmét, már úgy általában.
Ez nem arra való, hogy valaki idejöjjön és kérje a frankót. Mégpedig itt és most, nem ám más oldalra linkelve.

A kérdésed, akkor lenne helyénvaló, ha így szólna pl.
Idézet:
„Sziasztok! Sokat keresgettem assembly nyelv ügyében, de csupa angol oldal van, amit sajna nem értek, nem tud valaki ajánlani egy magyar oldalt a témában, vagy esetleg egy jó szakirodalmat?


A fórumba akkor jön az ember, ha elakadt valamiben. A te posztodról bűzlik, hogy egy google keresést nem csaptál az ügyben.
(#) kiborg válasza sikolymester hozzászólására (») Okt 19, 2011 /
 
Ezt a ne linkeljünk dolgot én már fel sem fogtam. Bár link nélkül tényleg esélytelen egy-két posztban összefoglalni az egészet.
(#) Reggie válasza kiborg hozzászólására (») Okt 19, 2011 /
 
Nekem se tunt fel... Ez olyan keres, minthogy ne vegyel levegot az iras kozben.
Következő: »»   367 / 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