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   271 / 839
(#) Tomi_Bp válasza Ricsi89 hozzászólására (») Okt 23, 2010 /
 
Én valahogy mégis jobban örülnék a működésnek, mint a szépségnek...
(#) Ricsi89 válasza Tomi_Bp hozzászólására (») Okt 23, 2010 /
 
Engem hasonló képpen szivatott két összeérő vezetősáv. Fél órán keresztül néztem a nyákot, semmi hibát nem találtam, majd tűvel megkapargattam minden forrszem közelében lévő vezetősávot. Ezután lett jó. Egyébként nekem is ez a terv alapján van megépítve az a 74-es IC környékén volt a hiba.
(#) szoto válasza Reggie hozzászólására (») Okt 23, 2010 /
 
Köszi!
Opto-n gondolkodtam én is, de nem szeretném felhasználni erre az avr idejét. Az lenne a jó ha erre építenék egy céláramkört ami jelez a procinak ha kiesés volt.
Vettem már 220n-s 600V-os kondit, ezeket rákötöm úgy a 230-ra ahogy mondtad (ha nem sok a 220nF), de itt elekadtam.
(#) Reggie válasza szoto hozzászólására (») Okt 23, 2010 /
 
A bemenet felallasa legyen ugyan ez. Az opto kollektorat kosd a tapra, emmiterere kossel egy parhuzamos RC-t. Ugy kotsd, hogy a masik fele a foldon van. Az opto/RC kozos laba-t kosd ra egy komparator + bemenetere, es a - bemenetre pedig fesz osztot tapfelre. Ez ugy fog mukodni, hogyha megszunik a 230 akkor elkezd kisulni a kondi az R-en keresztul. Ha a tapfesz fele ala csokken, akkor alacsony szint jon ki a komparatorbol, amit az avr egyik ext. interruptjara kothetsz. Az RC idoallando legyen 5ms, igy kb 10 ms kieses utan kapsz jelzest.
(#) szoto válasza Reggie hozzászólására (») Okt 23, 2010 /
 
Köszi!

Ez kell nekem!
(#) Tomi_Bp válasza Ricsi89 hozzászólására (») Okt 23, 2010 /
 
Átnéztem ezredjére, de ha van hiba, én nem találtam meg... Kicsengettem az összes vezetősávot és az egymás mellett futókat is. Se zárlat, se szakadás. Ma már nem, de ha nem oldódik meg a probléma a segítségetekkel, akkor van még egy kimaratott nyákom, amit megépítek, hátha tényleg valamit elrontottam.
(#) Ricsi89 válasza Tomi_Bp hozzászólására (») Okt 23, 2010 /
 
Nekem is az volt az első, hogy sípolgattam, de semmi nem volt. Mivel a két sáv között pár 100 Ohm, vagy több is lehet, amit sípolással nem tudsz kimutatni, de ott van és alattomos jelenségeket okoz.
(#) edison14 válasza Tomi_Bp hozzászólására (») Okt 23, 2010 /
 
Egypár pont amit átnézhetnél. Esetleg jobb kép a nyákról?
(#) Ideiglenes válasza Tomi_Bp hozzászólására (») Okt 24, 2010 /
 
A programozót CDC vagy HID módban használod?
(#) Topi válasza Ideiglenes hozzászólására (») Okt 24, 2010 /
 
A programozót biztos hogy CDC módban használja, mert a képeken látszódik, hogy az AVR Studo prímán beolvasta minden paraméterét, és maga a programozó "magja" tökéletesen működik.
HID módban nem sorosportként jelentkezik be, ígyhát az AVR Studio sem látná.

Lásd, a legelső képet!

Itt a programozó és a cél AVR között van a gond.
(#) Tomi_Bp válasza edison14 hozzászólására (») Okt 24, 2010 /
 
Köszönöm a sok választ! Megnéztem újra, 500.-ra is a nyákot, de sajnos továbbra sincs semmi. Próbáltam programozni ATMega8-at, belső oszcillátorosat és 20MHz-es kristályosat, ATMega16-osat. Próbálgattam állítgatni a videón is látható SPI frekvenciát, a teljes skálát végigpróbálgattam. Most elkezdem megépíteni még egy példányban, ha az megy, akkor megnyugszom és nyugodtan jobban megy majd újult erővel a hiba keresése is. Ötletem még esetleg a 74126PC, mert annak a helyes működéséről nem tudtam meggyőződni, de kicseréltem azt is, mert volt itthon 3.

IMG_2280b.JPG
    
(#) berghammer válasza Tomi_Bp hozzászólására (») Okt 24, 2010 /
 
Ha jól emlékszem, akkor a cikkben nem jól van leírva az isp csatlakozó lábkiosztása. A csatlakozó irányát jelző jel van emlékeim szerint a rossz oldalon.

-- Melléklet törölve.
Topi
(#) Moderátor hozzászólása berghammer hozzászólására (») Okt 24, 2010
 
Ostobaságot ne terjessz kérlek. A cikkben jól van a csatlakozó kiosztása. A pöcök is, és az egyes láb is.

Mellékletedet töröltem, mert megtévesztő.
(#) douggutaby hozzászólása Okt 25, 2010 /
 
Sziasztok!

Kicsit hosszú, de új témát nem akartam nyitni.

Az alábbi kódrészletnek az lenne a lényege, hogy egy eszköz különböző gombnyomással indítva más funkciót lát el. Ez még működik is. Csakhogy az előző állapotot is megakarom őrizni, így gombnyomás nélkül indítva is működjön. Erre kellene az EEPROM.

A probléma az, hogy nem azt olvassa ki az eeprom-ból, amit kellene. Sokszor olyan mintha 4-es lenne a memóriában, mert joystick-ként jön be ha nem nyomok gombot.

Tudna valaki ebben segíteni?

Köszi

complete.c
    
(#) Reggie válasza douggutaby hozzászólására (») Okt 25, 2010 /
 
"A probléma az, hogy nem azt olvassa ki az eeprom-ból, amit kellene. Sokszor olyan mintha 4-es lenne a memóriában, mert joystick-ként jön be ha nem nyomok gombot."
Ez a joystick-os resz nem nagyon ertheto.

Amugy az eeprom muveletek elott hivd meg az eeprom_busy_wait() fuggvenyt mert ez szukseges a helyes mukodeshez. Igy tippre ez lesz a hiba.
Tovabbi informaciok Itt.

(Ui. eeprom_write_byte helyett hasznalj update_eeprom_byte-ot)
(#) douggutaby válasza Reggie hozzászólására (») Okt 26, 2010 /
 
A megvalósításomat nem érted, vagy azt ahogy elmagyaráztam, hogy mit akarok?

A tipped úgy néz ki jó lesz. Most már sokkal kevesebbet hibázik. Csatolva látni, hogy hova tettem be. Lehet esetleg, hogy a switch-et le kellene cserélnem 3 if-re és mindegyik elé busy()? Vagy azzal nem lenne különbség? Igazából az lenne fontos, hogy a switch a feltétel értékét elmenti, és azzal hasonlítja a case értékeket? Vagy miden case esetén újra megnézi a feltételt? Nálam ez most nem biztos, hogy mindegy.
Bár ez már inkább C elémélet, mint avr.

Az update az jobban kíméli az eeprom-ot ugye? Erről olvastam futólag. Tudsz erről esetleg valami irodalmat ajánlani?

Köszi a sok segítséget.

complete.c
    
(#) Tomi_Bp válasza (») Okt 26, 2010 /
 
Sziasztok! Na most már van két ROSSZ programozóm!
Teljesen ugyan az a hiba. Programozáskor megvillan a LED és jön a hibaüzenet...
PLEASE HELP!!!
(#) Topi válasza Tomi_Bp hozzászólására (») Okt 26, 2010 /
 
Rossz a kábel vagy a processzor amit programoznál. Vagy hibás egyszerűen a nyák amit elkészítettél.

Nézd meg, jó-e a cél processzor, kap-e tápot, működik-e a reset, a szalagkábel csatlakozó nincs-e fordítva összeszorítva.

Ez inkább már így programozón kívüli hiba, ha egyikkel sem megy.
(#) Tomi_Bp válasza Topi hozzászólására (») Okt 26, 2010 /
 
Topi! A 74126 invertál? Át akarom söntölni ideiglenesen, hátha az a hiba... Úgy gondoltam, hogy a 10kOhm-os ellenállások elött kiszedném a MOSI, MISO, SCK és RESET jeleket... Vélemény? Tudom, hogy akkor nem lesz magas impedanciás és programozás után le kell húzni, de hátha kiderül a hiba...
(#) kiborg válasza Tomi_Bp hozzászólására (») Okt 26, 2010 /
 
A 74126 nem invertál, csak a kimenetet (MOSI,MISO,...) tudja nagyimpedanciás állapotba hozni (3State Buffer).
Pontosan nem ismerem a programozó működését, de ha kihagyod és a céleszköznek azon portját bemenetre állítod, akkor nem nagy a valószínűsége, hogy problémát fog okozni a próbára elhagyása.
(#) Topi válasza Tomi_Bp hozzászólására (») Okt 26, 2010 /
 
Nincs véletlen rendes 74HC126-od? Mert ahogy ezt a régi adatlapot látom, igen csak bemenő áram gond lehet.
Buffer előtti ellenállásokkal a maximális kimenő áram: I = U/R, azaz 5V/10K = 0,5mA.
Az adatlap szerint pedig legalább 2-5mA áram kell a bemenetére.

Ezzel az ellenállásokkal az az ősrégi TTL-es 74126 meg sem fog mozdulni. Az áramkör CMOS IC-kre tervezett!
(#) douggutaby válasza Reggie hozzászólására (») Okt 26, 2010 /
 
Tévedtem továbra sem jó.
Annyi a különbség, hogy most a bill jön elő olyankor mikor nem kellene.

Egy kicsit átvariáltam, hogy ne kelljen annyiszor olvasni és ne az legyen a gond.

Olyan probléma még van, hogy van még egy csomó másik fájl is, de azok közül csak 2-nél szerepel ugyanilyen eeprom olvasás. A megvalósítás ugyanaz, mint ennél a switch-nél. A különbség annyi, hogy ott eepromból olvas nem a korbbi MODE változót használja.

complete.c
    
(#) Reggie válasza douggutaby hozzászólására (») Okt 26, 2010 /
 
A kodot megmutatnad teljes egeszeben? Mert en itt nem latok hibat perp. amugy az if (MODE!=x) -es feltetel ellenorzeseket kiveheted, mert az eeprom_update_xxxx fuggvenyek elobb megnezik, hogy az adott cimen mi az eeprom tartalma, es csak akkor irja az eepromot, ha az mas mint az argumentumkent kapott adat. Es igy a legelso eeprom olvasasra sincs szukseg, csak a switch elottire.
(#) Tomi_Bp válasza Topi hozzászólására (») Okt 26, 2010 /
 
A helyzet a söntölést követően sem változott...

IMG_2307b.JPG
    
(#) Reggie válasza Tomi_Bp hozzászólására (») Okt 26, 2010 /
 
Hat igy direktbe kotve nem is lesz jo, mert igy a JTAG szerinti 9-es es 5-os lab nincs invertalva.
(#) douggutaby válasza Reggie hozzászólására (») Okt 26, 2010 /
 
A LUFA\Drivers\USB\HighLevel és LowLevel mappában lévő .c fájlokat hozzá kell adni a projekthez, ha nem találná meg.

Egyébként a DevChapter9.c és USBInterrupt.c fájlokban van eeprom hívás a complete.c-n kívül.

Az eepromon kívül minden másnak jónak kell lennie, mert addig minden működött.

Az eeprom_read elé is kell az eeprom_busy_wait?
Korábban raktam, de most ebben a változatban nincs.

Complete.zip
    
(#) Topi válasza Reggie hozzászólására (») Okt 26, 2010 /
 
Milyen JTAG szerintiről beszélsz? Ez ISP.
(#) Topi válasza Tomi_Bp hozzászólására (») Okt 26, 2010 /
 
Proci amire kötötted? Típus, stb?
A kábel 9 erű, a csati 10 pólusú. Ha el van "tolva" a kábel a csatiban a bekötött erek közötti távolság sem stimmel.
(#) Reggie válasza douggutaby hozzászólására (») Okt 26, 2010 /
 
Igen, oda is kell.
Az eepromos resz jonak latszik. Szerintem a bekapcsolaskor hibas allapotot olvas be kozvetlen a buttons_init utan. Rakjal a get_status es a buttons_init koze egy 100ms varakozast.
(#) Reggie válasza Topi hozzászólására (») Okt 26, 2010 /
 
Bocsanat ISP-t akartam irni.
Következő: »»   271 / 839
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