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   147 / 840
(#) inci88 válasza zsuscsinyo hozzászólására (») Szept 9, 2009 /
 
helló, a bufferelt stk200-at összeraktam, de továbbra is hibaüzenet programozáskor.
  1. avrdude -p attiny2313 -P lpt1 -c stk200 -E noreset -U flash:w:main.hex  -U lock:w:63:m
  2. avrdude: AVR device not responding
  3. avrdude: initialization failed, rc=-1
  4.          Double check connections and try again, or use -F to override
  5.          this check.
  6. avrdude done.  Thank you.
  7. make.exe: *** [program] Error 1
  8.  
  9. > Process Exit Code: 2


valamit elrontok? vagy lehetséges, hogy már egyszer fel lett programozva a uC, de külső kvarccal és ezért nem tudok új programot beleírni?
(#) gulyas válasza vzoole hozzászólására (») Szept 9, 2009 /
 
A szoftver részét én is így gondoltam, de jelen esetben abban nem vagyok biztos, hogy jó megoldás-e, ha 5.4V-ról járatom az AVR-t (az AVR és az LCD az adatlapjuk szerint 5.5V-ig bírják), és az AVR analóg bemenetére direktbe rákötöm a max. 5.4V(+-100mV) jelet a potméterekről. Az IC kimenetét 5mA-el lehet terhelni csak, ez remélem nem probléma. Bár ha igen, akkor adhatom a tápról direktbe a potikra a feszültséget, csak a 100mV-os pontosság miatt lehetnek így bajok.
(#) vzoole válasza gulyas hozzászólására (») Szept 10, 2009 /
 
Szerintem az ADC nem fog 5mA-t elvinni. Sőőőt...

Tehát rákötheted.
(#) trudnai válasza gulyas hozzászólására (») Szept 10, 2009 /
 
Idézet:
„És a feszültségosztó mennyi plusz terhelés az LM1036-nak? Ugyanis csak 5mA-el lehet ezt a referencia-kimenetét terhelni (a linearitást ugye nem rontja a feszosztó?).
A BSS-en találtam feszültségosztó számolót, de nem tudom, hogy milyen arányt számoljak, mert a 100K-8K meg a 10K-800R is ugyan azt eredményezi, nem tudom ez mennyire fontos.”


A masodik kerdesed az elsovel kapcsolatos... Ohm torvenye + soros ellenallas szamitas... Fesz osztas szamlalas szinten Ohm torveny -- jo, hogy vannak ilyen kalkulatorok, de azert illik tudni kiszamolni ezt papiron is.

Ugye ha max 5V-ot szeretnel, akkor I = 5V / (100k+8k) lesz a terheles az LM1036 kimeneten. Az ADC olyan keveset terhel hogy nem kell vele szamolni.

Azt is figyelembe kell venni, hogy az ADC mekkora impednanciaval tud dolgozni. Az adatlap szerint 10k vagy kisebb impednancia javasolt, igy a masodik paros ilyen szempontbol jobbnak tunik -- mar csak azert is, mert a nagyobb ellenallasoknak mar jelentos induktivitasuk is lehet es hajlamosabbak az elektromagneses zajokat felszedni.

Egyebkent nem tudom milyen precizitas kell, de az ellenallasoknak is van turesuk, ami atlagban 5% szokott lenni. Vannak 1% ellenallasok is, sot vannak precizios, nagyon kis turesuek -- nyilvan azok dragabbak. Sokan trimmert raknak be inkabb ket ellenallas helyett igy a pontos osztas bekalibralhato. Masok a kalibralast a firmware-be helyezik el szoftveres uton.
(#) inci88 válasza inci88 hozzászólására (») Szept 10, 2009 /
 
próbáltam attiny2313-al és at90s2313-al, semmi mást nem kapok. csak ezt a hibaüzenetet, amikor fel akarom programozni, winavr-el.

az isp kábele ~20cm.

lehet valahogy tesztelni, olvasni a uC-t? (pl kiolvasni a tipusát, hogy egyáltalán jó-e a programozóm.)
vagy lpt port hibás beállításának(biosban paralell port mode) lehet ilyen tünete?
a bekötés helyes, táplálást kap az stk200 és a uC is. Reset? kell vele valamit is csinálnom?
a fusebiteket netes kalkulátorral belső oszcillátorra állítottam.
-F kapcsolóval rá lehet erőltetni a programot? (hova kapjon -f kapcsolót?)

valakinek esetleg ötlete?
(#) zsuscsinyo válasza inci88 hozzászólására (») Szept 10, 2009 /
 
Elmondom hogy szoktam én csinálni, amúgy az én gépem LPT port paraméterei a következők:

Nyomtatóport(LPT1); I/O tartomány: 0378-037F
BIOS-ban: Port Mode: EPP; IRQ: 7; DMA: N/A


Töltsd le a PonyProg programozót, telepítsd, majd indítsd el.
Első indításnál kalibrációt igényel, de automatikusan megcsinálja, ha mégsem akkor a Setup menüpont alatt a Calibration-ra kattints.
Ezután ismét a Setup menüpont alatt az Interface Setup-ra, itt Parallel-t és "Avr ISP I/O"-t válassz, majd kattints a Probe gombra, ha jól van beállítva akkor "TestOk" üzenet jelenik meg. Remélem így már menni fog!
(#) wir12 hozzászólása Szept 10, 2009 /
 
Hali mindenkinek!
Egy olyan kérdésem lenne hogy egy bakelit lejátszó léptető motor vezérlését meg lehetne-e oldani úgy hogy kapcsolható legyen 33RMP meg 45RMP között és egy tolópotméterrel szabályozható lehesen +-15%-ban. Egy működő bakelit lejátszó adott csak át akakrom egy picit alakítani az elektronikáját. A léptető motor az 4 "fázisú".
Ha lehetséges a választ előre is köszönöm
(#) trudnai válasza wir12 hozzászólására (») Szept 10, 2009 /
 
Igen, meg lehet oldani.
(#) wir12 válasza trudnai hozzászólására (») Szept 10, 2009 /
 
köszönöm a választ és azt hiszem az Atrinity13-as AVR-el is meg lehetne oldani vagy ehez komolyabb kellene?
(#) trudnai válasza wir12 hozzászólására (») Szept 10, 2009 /
 
I/O-ban lehet tul keves lesz - hany IO kell ahhoz a motor vezerleshez? Hany IO a fordulatsam szenzorhoz? Poti nyilvan egy A/D, ha akarsz LED visszajelzest, hogy epp 33 vagy 45 a fordulat, akkor az 1 vagy 2 IO attol fugg milyen visszajelzest akarsz es milyen LED drivert. Ha preciz fordulatszam kijelzest akkor lehet LCD-re vagy LED letrara is szukseged van... Nem tudom pontosan mik a parameterek, de ezeket szamolgasd ossze. (utana mar csak a program memoria es a RAM merete a kerdeses, hogy mennyibol fogod meguszni a FW-t)
(#) laci37 hozzászólása Szept 11, 2009 /
 
Összeraktam egy kis teszt áramkört (ATTiny2313, kristály kondikkal, resetgomb, egy led a PB0-án , táp(azaz 7805 és egy kilencvoltos elem ) és STK200-al próbáltam programozni a az AVR az áramkörben. Restgombot lenyomtam, de a PonyProg nem ismerte fel. Tudtok valami segítséget adni?
(#) mammut hozzászólása Szept 11, 2009 /
 
Üdv!
Valaki használta már az AVRDude-ot?
Sajnos az LCD2USB firmware letöltésekor nem stimmelnek soha a config és fuse bitek AVRISP programmal.
Az alábbi fájlban leírt fusebit-eket, hogyan tudnám átvinni az AVR-embe?
(#) mammut válasza mammut hozzászólására (») Szept 11, 2009 /
 
Nah csodálatos! Behányt ez az Atmega8-am is! Nem mondom durva ez a Fusebites szórakozás!
Na ennyit erről az LCD2USB-s projektről meg az AVR-ről, kukába rakom az egész panelt!
(#) gtk válasza laci37 hozzászólására (») Szept 11, 2009 /
 
A RST labat nem kototted ra az STK200ra?
Programozasnal nem kell azt nyomogatni, kezeli az stk200 es a szofver.
(#) laci37 válasza gtk hozzászólására (») Szept 11, 2009 /
 
Jó akkor azt bekötöm és megpróbálom kivenni az áramkörből úgy programozni.
(#) IMi válasza mammut hozzászólására (») Szept 11, 2009 /
 
Hello!
Min használod az avrdude-t (win-linux)? Mért nem használtok hozzá valami gui-t? EZT például.
ITT egy kis segítség fuse beállításról.
(#) TavIR-AVR válasza IMi hozzászólására (») Szept 12, 2009 /
 
Biztositekbitek

Lap közepétől.....
(#) TavIR-AVR válasza inci88 hozzászólására (») Szept 12, 2009 /
 
A chipID kolvasása elég szkott lenni....
(#) laci37 válasza gtk hozzászólására (») Szept 12, 2009 /
 
Nem jó reset lábat bekötöttem, az IC-t kivettem az áramkörből, csak tápfesz van rákötve meg az STK200 de így se működik Nem kell esetleg valamelyik bitet invertálni? vagy valami egyéb spec beállítás?
(#) tpeter hozzászólása Szept 12, 2009 /
 
Sziasztok!

Azt szeretném kérdezni hogy WinAVR-rel generált kód assemlbly változatát meg lehet valahogy nézni? Szóval C-ben írom a kódot, de nem nagyon értek valamit hogy miért úgy van és gondoltam itt az ideje hogy kicsit ránézzek, hogy mi is történik valójában.
(#) janyjozsef válasza tpeter hozzászólására (») Szept 13, 2009 /
 
Igen.

Futtasd a progit debug módban, majd nézet menü
dissambler.
Vigyáz, mert néha furi dolgokat láthatsz fordítási opcióktól függően.
(#) tpeter válasza janyjozsef hozzászólására (») Szept 13, 2009 /
 
Ok, köszi!
Pont ezt kerestem...
(#) janyjozsef hozzászólása Szept 13, 2009 /
 
Valaki tudja, hogy AVR studió WIN AVR Ckód esetén, hogyan kell 1db bitet lefoglalni.
PL Van 8 nyomógombom és mindnek van neve. 1BYTE-on akarom tárolni. Viszont a byte-on belüli bitekre név szerint szeretnék hivatkozni.

Nem akarok maszkolni! (m_gombok & STOP_GOMB)

Mint PIC esetében:

bit STOP_GOMB;
bit START_GOMB;
stb.
(#) trudnai válasza janyjozsef hozzászólására (») Szept 13, 2009 /
 
Idézet:
„Nem akarok maszkolni! (m_gombok & STOP_GOMB)”


Akkor hasznalj bitfieldet, pl:
  1. struct Gombok {
  2.     unsigned char stop :1;
  3.     unsigned char start :1;
  4. } Gombok;

ezekutan:
  1. if (1 == Gombok.stop) { ...
(#) janyjozsef válasza trudnai hozzászólására (») Szept 13, 2009 /
 
Hmm!

Ez jól néz ki.
Valami ilyesmire gondoltam.
Ez egy byte-on belül foglal le sorban biteket?

Köszi!
(#) gtk válasza trudnai hozzászólására (») Szept 13, 2009 /
 
Vegulis mit fordit a bitfieldbol? (korabban volt szo rola..) attribute-ot nem kell mega adni a definicioban? (attribute packed) (mar nem emlekszem hogy is volt..)
(#) janyjozsef válasza gtk hozzászólására (») Szept 13, 2009 /
 
Megtaláltam egy korábbi hozzászólásban.
  1. struct __attribute__ ((__packed__))  {
  2.  
  3.       int f0: 3;
  4.       int f1: 3;
  5.       int f2: 3;
  6.       int f3: 3;
  7.       int f4: 3;
  8.       int f5: 3;
  9.       int f6: 3;
  10.       int f7: 3;
  11.       } STRUCT_24_BIT;
(#) tpeter hozzászólása Szept 14, 2009 /
 
Sziasztok!

6-8 gombot szeretnék kezelni egy ATMega32-vel és nem tudom hogy lenne célszerű. Ugye külső megszakításból csak kettőt tud kezelni, pollozni pedig nem nagyon szeretnék első körben (persze ha nincs más...)

Arra gondoltam hogy ha 2 áramkörös gombokat használnék akkor lehetne hogy egyszerre generál interruptot meg húzza földre a port egy lábát és akkor az interrupt rutinban meg kéne néznem hogy mi van lenyomva.
Hátránya hogy csak elvileg működik mivel semmi nem garantálja nekem hogy amikor az interrupt bekövetkezik akkor már a port adott lába beállt a megfelelő szintre...

A kérdés: hogy kéne ezt csinálni? Ti hogy szoktátok?
(#) Topi válasza tpeter hozzászólására (») Szept 14, 2009 /
 
1. Megoldás: Gombok közvetlen portra, PCINT portra. (Ott több HW megszakítás is van)
2. Megoldás: Gombok normál portra. És sima diódákkal + interrupton felhúzóval interruptba kötve. Így egy áramkörös a gomb. Csak a diódákon keresztül van közösítve int lábra. Amúgy pedig szabadon portba megy. Ha jön INT, olvasol portot.
3. Megoldás: Logikai vagy kapuk.
4. Megoldás: RS tároló + vagy kapu (attól függ, mennyire kell gyorsan olvasni)

Ha nem "vágyad" a sleep mód, ami miatt kellene a HW interrupt, akkor áramköri szempontból egyszerűbb pollingozni.
(#) vicsys válasza Topi hozzászólására (») Szept 14, 2009 /
 
5. megoldás:
Ellenállás láncot söntölő kapcsolók és AD konverziót végezni. Remélem nem mondtam hülyeséget?
Következő: »»   147 / 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