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   137 / 840
(#) Barbár válasza mammut hozzászólására (») Júl 22, 2009 /
 
Értem.

Tehát, ha úgy szeretnék pl bemenetet kezelni, h 0 és 2V közötti fszültség van a bemeneti lábon akkor pl csinálhatom úgy, hogy
"
if(pot1<51){
Stb...
}

?


Egyébként a tranzisztor típusát illetően igazad van (bocs az elírásért).

Üdv!

Barbár>
(#) Thomm válasza TavIR-AVR hozzászólására (») Júl 22, 2009 /
 
Szia
Én is erre gondoltam, de amikor áthidaltam, 10mp alatt tűzforró lett a programozón a proci, nem mertem kockáztatni, ugyhogy letéptem az USB kábelről. Hálisten nem lett semmi baja.
(#) kerteszsasa válasza kerteszsasa hozzászólására (») Júl 23, 2009 /
 
Hello
Még mindig nem sikerült elindítani a mintaprogramot az atmega16-on.
Kvarc nélkül tudom írni-olvasni a flash tartalmát, tehát belső oszcillátorról jár. Avrstudioból hogy tudom megállapítani, hogy mekkora ez a frekvencia?
Adatlap és fórumok alapján úgy értelmeztem, hogy gyári beállításokkal 1Mhz-n jár , de 1.8Mhz ISP órajellel is tudom írni-olvasni. Adatlap szerint a uc órajelének max 1/4-ével lehet programozni. Mit ronthattam el?
Tud valaki segíteni?
(#) levi18 hozzászólása Júl 23, 2009 /
 
Sziasztok!
Az lenne a kérdésem, hogy hogyan juthatnék hozzá az
"Embedded C programming and the Atmel AVR" című könyvhöz, mert a Rapidshare - en csak kínaiul van meg és sajnos nem beszélem azt a nyelvet Külföldi fórumokon nagyon dícsérik ezt a könyvet, ezért is szeretném megszerezni. Amerikában ez a könyv 100$ körül van, ami ugye közel húszezer forint. Ez az ár sajnos nekem magas egy kicsit. Ha valaki tud segíteni, szívesen várom.
Köszönöm.
(#) _Petya_ hozzászólása Júl 23, 2009 /
 
Sziasztok!

ATmega16-ra fejlesztek Ethernet kapcsolatot, az alábbi libet használom:

http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard...vrlib/

Az ethernet vezérlő egy ENC28J60 chip. A fenti linken látható netstack.c péda kódot próbálom használni. Az UDP csomag küldés része rendesen működik, Wireshark-al látom a gépemen, hogy ideért a csomag.

Viszont a fordított irány, tehát a csomag fogadás az AVR oldalon furcsán viselkedik. Beálíltottam, hogy a fogadott csomagokat egy az egyben dumpolja ki a soros portjára, ez itt található: (10 db csomag, DHCP és ARP) http://molnarp.pastebin.com/m2e4f9220

Ugyanezen csomagok Wireshark-al készített dumpja itt: http://molnarp.pastebin.com/m4c458c95

(Ugyanolyan sorrendben, egy ethernet hubra kötve, tehát ténylegesen ugyanaz van minkét logban)

Amit észre lehet venni, hogy minden csomag elején van 35 byte, amit nem tudok hova tenni, nem értem, hogyan kerül oda. Utána rendesen elkezdődik a csomag. Viszont mivel az első 35 byte "szemét", rosszul érzékeli a csomag hosszát, így mindig 590 byte-ot olvas. (576 byte, +14 byte ethernet header, vagyis 590 byte méretű a csomag fogadó puffer).

Szerintetek hol itt a hiba, mit csinálok rosszul?

üdv,
Petya
(#) Barbár válasza kerteszsasa hozzászólására (») Júl 23, 2009 /
 
Hali!

Tudtommal a programozó orajelnének kell legalább 4-szeresének lenni mint az AVR amijen órajelen fut.

Amúgy AVR Studio 4 -ben lehet is állítani (ha kell megnézem később, hogy hol, de most nem akarom ujrainditani a gépet (másik OS alatt van feltelepítve az AVR studio...)

Amikor rámész h most bele szeretnéd írni a prociba a programot akkor ott vmelyik fülnél lehet állítani a frekvenciákat, majd ez bele tudod írni (az AVR-edbe h mennyin mennyen a belső órajele), + ki is tudod olvasni, h most mennyin megy.

Remélem segítettem!

Üdv!

Barbár
(#) killbill válasza _Petya_ hozzászólására (») Júl 23, 2009 /
 
En mit csinalok rosszul? Nem tudom letolteni a megadott oldalrol az avrlib.zip-et. Azt mondja az apache, hogy nincs ilyen file.
Pedig izgalmas kerdest tettel fel. A sorosvonalra kidumpolt adatot az Ethernet layer adja? Ha igen, akkor nyilvan az ENC28J60 driver-t kellene szemugyre venni. Nomeg az erratajat A mikrocsip termekeknel az elengedhetetlen resze az adatlapnak.
(#) killbill válasza killbill hozzászólására (») Júl 23, 2009 /
 
csak sikerult letolteni, csak hibas a link az oldalon...
(#) kerteszsasa válasza Barbár hozzászólására (») Júl 23, 2009 /
 
Szia
A programot be tudom égetni, és vissza is tudom olvasni, csak nem indul el. A példákban megadott program sem indul el, több portot is próbáltam kimenetként. Meghalhatott a chip?
Vagy a 10-es lábon kívül kell még valahova tápfesz?
Vagy mi lehet az oka, hogy nem fut a kód, kihagytam valamit?
fuse beállításaim
ez alapján csináltam
(#) _Petya_ válasza killbill hozzászólására (») Júl 23, 2009 /
 
Valamiért szarakszik az az oldal, többszöri próbálkozásra siekrül csak leszedni.

Annyit változtattam a kódon, hogy a net/netstack.c-be be kellett tenni az alábbi két sort:
#define NET_DEBUG 7
#define NETSTACK_DEBUG

Ezt követően az examples/netstack könyvtárban lévő makefile-al simán fordul. Annyi kell neki, hogy az AVRLIB környezeti változő a lib gyökerébe mutasson, akkor működik a fordítás.

Ha esetleg van hardvered is hozzá, és időd, kedved is van kipróbálni ugyanezt, azt nagyon megköszönném, természetesen segítek beüzemelni az avrlib kódot.

üdv,
Petya
(#) killbill válasza _Petya_ hozzászólására (») Júl 23, 2009 /
 
Hello!

Nincs hardverem hozza sajnos, ugyhogy neked kell debuggolni

Az ENC28J60 errataja viszont ir par erdekes dolgot. A packet kiolvasassal kapcsolatos pointerek/regiszterek korul ketto hiba is van az errata szerint. Az egyiket meg is szegi a net/enc28j60.c forras. Megpedig ott, hogy javasoljak, hogy az ERXST regiszterbe 0 legyen mindig, a forras pedig 0x600-on tartja. De ez egy dolog, ugyanis ettol szerintem nem ez a jelenseg lenne, ami nalad van. Igazabol nem latom, hogy hogyan fordulhat elo az, hogy kiolvassa az enc28j60-bol a hibatlan ethernet packetet, csak a hosszat elnezi, es eletesz 35 byte szemetet. Ugyanis a csomag hosszat is a chip-bol olvassa, kozvetlenul a "kovetkezo packet cime a bufferben" byte-ok utan. Ugyhogy ha rossz cimrol olvasna a chip bufferebol, akkor a kovetkezo csomag igen nagy valoszinuseggel totalis zagyvasag lenne. A sw viszont eleg tiszta, nem latok benne semmi problemat, ami ezt okozhatna. Bar azt sem latom, hogy hol irja ki a "== %d ==" reszt a csomagok elott.

Ettol fuggetlenul van meg egy hiba, miszerint a SOFT_RESET parancs kiadasa utan a szoftver var 50 us-t, majd figyeli az ESTAT_CLKRDY bitet, es ha az 1, akkor tovabb megy az inicializalas. Az ENC28J60 errata szerint ez a status flag hibasan mukodik, ugyhogy nem szabad figyelni, hanem a SOFT_RESET parancs utan varni kell 1ms-ot, es lehet tovabb inicializalni a chip-et. Szoval ezt mindenkeppen javaslom, hogy ird at a waitus(50)-et waitus(1000)-re. Ez talan segit, de nem valoszinu. Lehet meg gcc hiba is, vagy akarmi. Ha -O0-val forditod, akkor az esetleges gcc hibak el szoktak tunni.

Tovabbi otletek, ha ezek nem ernek semmit.

Udv,
Andor
(#) Barbár válasza kerteszsasa hozzászólására (») Júl 23, 2009 /
 
Hát... ha beállításaid jónak tűnnek így elsőre, de én se vagyok vmi pro...

Szóval nem tudom mi a hiba...

Bocs, h nem tudok segíteni, ha esetleg mégiscsak rájövök vmire írok.

Üdv!

Barbár
(#) Zuzmo_farok hozzászólása Júl 23, 2009 /
 
sziasztok, valaki csinált már LQFP-100 as tokhoz házilag nyákot?
nekem valamiért a 600*600 as lézernyomtatóm összefolyatja a lábak helyeit bizonyos közönként, tud valaki egy kis technikát, amivel megoldódna ez a problem?
eagle-light- al csinálom a tervet.
a nyomtatós nyákgyártást csak ajánlani tudom
nekem bejött, TQFP-44-es tokokhoz kiválóan működik.
2oldalas nyákhoz is.
(#) Buddha hozzászólása Júl 23, 2009 /
 
Sziasztok!

Írtam egy kis programot egy ATTiny13-ra, ami egy LED-et villogtatna a Timer0 interrupt segítségével. A LED a PORTB 1-re van kötve. Clock: internal 9,6 MHz
Mondanom se kell, nem villog.
Segítsetek légyszi, hogy mit rontottam el?

Kössz.
Üdv: Buddha

LED1.c
    
(#) Barbár válasza Buddha hozzászólására (») Júl 23, 2009 /
 
Lehet, h csak én nem értek a lovakhoz, de ha jól vettem ki ami írtál akkor 9,6Mhz -es villog a led?

Mert ha igen az azt jelenti, hogy Te azt már bőven világításnak látod, csak kisebb fényerővel (de nem biztos, hogy feltűnő a fényerőkülönbség).

Barbár
(#) Tomi20 válasza Buddha hozzászólására (») Júl 23, 2009 /
 
Szia
Javaslom az oldalon található AVR kapcsolások átböngészését, sokat lehet belőlük tanulni.
(#) _Petya_ válasza killbill hozzászólására (») Júl 24, 2009 /
 
Hello!

"Bar azt sem latom, hogy hol irja ki a "== %d ==" reszt a csomagok elott."

Sorry, ezt nem írtam le külön, azt én írtam bele utólag, hogy könnyebb legyen összehasonlítani a Wireshark dumppal.

Az ESTAT_CLKRDY bit figyelést kivettem, delayt megnöveltem, de nincs változás.

Közben egy másik fórumon kaptam egy tippet, a korábban hasból beírt MAC address-t átírtam rendes, érvényes MAC addressre (saját gépem macaddress-e +1), ennek köszönhetően a 35 byte szemét megváltozott, most más van ugyanott. Tehát összefügg a MAC address-el.

AVR: http://molnarp.pastebin.com/m204bacb6
Wireshark: http://molnarp.pastebin.com/m18387919

Valaki lát ebben logikát?

Petya
(#) _Petya_ hozzászólása Júl 24, 2009 /
 
Nos, sikerült megoldani a problémát, puffer túlcsordulás volt, mindössze csökkenteni kell a puffer méretét, és megy is szépen (nálam 512 lett, nagyobb számokra néha furán viselkedik, pl, egyre több pontosan puffer méretű, 0-val teli csomag jelenik meg)

Petya
(#) killbill válasza _Petya_ hozzászólására (») Júl 24, 2009 /
 
Gratula!

Biztos, hogy puffer tulcsordulas a problema? A szoftver lathatoan ellenorzi a csomagok meretet, csak annyit tesz a pufferbe, amennyi belefer. Ha a puffer meretenek csokkentese segitett, akkor az a legvaloszinubb, hogy a nagy puffer miatt keves RAM marad stack-nek, es a stack tulcsordult. A .map file-bol kiderul, hogy mennyi szabad RAM van.
(#) killbill válasza Buddha hozzászólására (») Júl 24, 2009 /
 
Azert nem villog (elso ranezesre), mert a main() nem torli a flag nevu valtozot. Viszont a timer overflow interruptnak nem szabadna torolnie, o csak beallitja. Logikus, nem? Az interrupt beallitja a flag-et 1-be, amikor eltelt fel masodperc. A main latja, hogy beallitottak, akkor vegzi a dolgat (toggle_led) es torli a flag-et. Ha eltelt az ido, az interrupt majd ujbol bealitja.
(#) killbill válasza Zuzmo_farok hozzászólására (») Júl 24, 2009 /
 
OFF
Beszelj bbatka-val! 0.4mm (!) labtavolsagu TQFP-100 tokhoz (lehet, hogy te is errol beszelsz?) csinalt hazilag panelt. Az alacsony koltsegu digitalis oszcilloszkop topikon még fenykep is van rola.
(#) killbill válasza kerteszsasa hozzászólására (») Júl 24, 2009 /
 
Az AVCC-t is tapra kell kotni. Mindig, minden korulmenyek kozott.
(#) kerteszsasa válasza killbill hozzászólására (») Júl 24, 2009 /
 
Sok kapcsolásban nem látom ezt bekötve.
Adatlap szerint is adc-hez kell. "AVCC is the supply voltage pin for Port A and the A/D Converter."
Bekötöttem, de mégsem ment a program
Milyen alapvető hiba miatt nem indulhat el?
Hogy veszem észre, ha megöltem a chipet?
(#) killbill válasza kerteszsasa hozzászólására (») Júl 24, 2009 /
 
Az adatlap folytatasa: It should be externally connected to Vcc, EVEN IF THE ADC IS NOT USED. Szoval be kell azt kotni, meg akkor is, ha sokan nem kotik. Egyebkent meg nem csak az adc-hez kell, hanem az A porthoz is.

Az viszont tenyleg erdekes, hogy 1.8MHz SCLK-val egetni tudod az 1MHz-es orajelu chip-et.

Ha a JTAG-et nem hasznalod, akkor javaslom, hogy a JTAGEN fuse bitet kapcsold ki.

Mi a garancia arra, hogy a leforditott program (a .hex) file hibatlan? Mekkora tapfeszrol jaratod a chip-et?

Idézet:
„Hogy veszem észre, ha megöltem a chipet?”

Nem lelegzik Pl. egy garantaltan mukodo .hex-et beegetsz. Vagy ellenprobat csinalsz egy tuti mukodo chip-pel. Felteve, hogy a tapfesz es egyeb korulmenyek megfeleloek, es nem pusztul el a masodik chip is a proba soran.
(#) Buddha válasza killbill hozzászólására (») Júl 24, 2009 /
 
Killbill,

Köszönöm szépen a választ!
Kijavítottam és máris működik.

Üdv: Buddha

LED1.c
    
(#) levy_k válasza Buddha hozzászólására (») Júl 24, 2009 /
 
Az új alkalmazások során ajánlott a "SIGNAL()" megszakítás kezelés mellőzése, helyette az "ISR()" használatos.
(#) patexati hozzászólása Júl 25, 2009 /
 
Sziasztok! Nemrég ismerkedtem meg a PIC mikrokontrollerekkel és sikeresen építettem egy LPT külső tápos égetőt,egy szilva féle klónt (az LPT segítségével persze) és első pic-es kapcsolásként egy propeller clock lett megépítve mi tökéletesen működik és rengetegszer módosítottam is a hexeket a pic-ben Szóval az AVR is kezd érdekelni és azt szeretném megtudni melyik fajta égető a legjobb mi persze megépíthető is lenne? Windows xp oprendszer alól kéne mennie mivel linuxhoz nem igen értek! Köszönöm elöre is!
(#) gtk válasza patexati hozzászólására (») Júl 25, 2009 /
 
Ha jo az LPTs akkor stk-200, itt a topicban talalsz kapcsolast rola ha rakeresel.
Ha USBs kell, akkor a cikkek/kapcsolasok kozott van tobb fele.
(#) patexati válasza gtk hozzászólására (») Júl 25, 2009 /
 
Köszi utánnanézek!
(#) robert_nr1 hozzászólása Júl 25, 2009 /
 
Sziasztok!

Nemrég kezdtem ismerkedni ezzel a tudománnyal, és elakadtam a programozómmal. A kapcsolások között van egy Első AVR Programozóm (szerző: szilva, trudnai) cikk, ami alapján megépítettem. Bascom-avr-el szeretném kezdeni a programozást majd. Visszatérve a programozóra. A bascom-avr tudja azonosítani az attiny2313-at, de írni bele már nem. Az írás befejeztével kiírja az ablak aljára, hogy verify failed! Próbáltam már 1nF-os kondit kötni a reset és a Gnd közé, de akkor sem tudtam írni bele. Hogyan tudnám beüzemelni a programozót?
Mindent a cikk alapján csináltam, a nyák tökéletes többször nagyítóval átvizsgáltam.
Valakinek van-e ötlete, mit ronthattam el?

Üdv.Robi
Következő: »»   137 / 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