Fórum témák
» Több friss téma |
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
Szevasztok szép estét. A helyzet az, hogy van egy stk200-asom amit rákötöttem egy attiny45-re (HE-Kit Egyszerű Dallamcsengő) és fityisz mutat.
Még gtk írta hogy hangszóró nélkül Miso Mosi Sck Gnd-t kell rákötni... rá van kötve de nem csinál semmit. Van rajta táp is, az össze láb a helyén, a kábel össz vissz 10 centi és rá is mértem tűtől-tűig működik. A kábel sincs fordítva mert a 4 Gnd láb a helyén van... A PonyProg device not foundot ad vissza (test OK calibration OK), az AVRISP device not respondingot, az AVRDUDE meg simán megkért hogy ellenőrizzem a kábelt kétszer mert non responding van itt is... Mindegyikszer olvasni próbáltam a chipet (próbaképp, előre be van programozva) de egyszer se jött össze. Mindent kipróbáltam két gépen (egy laptop és egy asztali). Az áramkör amúgy alapbeállításokkal működik csak neke ugye ez nem sokat ér. Már 40-szer végighallgattam a rózsaszín párduc zenéjét és kezd az agyamra menni. Valaki adjon valami támpontot, hogy hol bökhettem el.
Sziasztok!
Rotary enkódert szeretnék használni egy Tiny 2313-mal, és az alábbi kódot alkottam hozzá:
Igazából elég érdekesen (sz@rul) működik. Sajnos hiába tekergetem az enkódert a "val" értéke mindig csak csökken, a tekerés irányától függetlenül. A kérdésem az, hogy hol lehet a hiba a kódban / elvben? Leírom szavakkal is hogy mit kéne csinálnia: -felfutó élre triggerelve Int1. A kezelő kódban megvizsgálom az enkóder másik lábát (PIND2-n). Ha "magas" akkor az egyik irányba van tekerve, ha "alacsony" akkor a másikba. Van még egy nagyon érdekes dolog: Igazából csak minden második "kattanásra" reagál, továbbá ha izomból tekerem akkor a kimeneten néha nagyon furcsa értékek jelennek meg. Lassú tekerésnél nincs ez a gond. A kimenet amúgy egy LED soron látszik. Valami ötlet? Előre is köszönöm!
Kettő kérdésecske:
1: nem tud valaki egy olyan oldalt, ahol összehasonlítják az AVR-eket, hogy mi van bennük, mivel rendelkeznek, stb? (PIC-nél láttam már pár ilyen táblázatot) 2: Szeretnék egy többszálú időzítőt, aminél ha megnyomom a gombot, akkor elkezd visszaszámolni, és ahányszor megnyomom, annyi szálon kezd egy új számlálást. Ha a a legkésőbb indított nullához ér, akkor riaszt, míg a többivel folytatja a számlálást, és azoknál is ugyanez lesz a riasztás módja. Nah most ezt vagy változókkal lehetne megoldani, vagy kellene bele kb 10 timer (emiatt vetődött fel első kérdésem is). Ebben kérnék segítséget! Köszönöm!
Többszálú programozást AVR esetében elég bonyolult megoldani, de ha mindenképpen ilyesmire akarod adni a fejed, akkor vannak már kész megoldások erre. Keresgélj a googlen Keresés De amit te akarsz ahoz egyáltalán nem kell valódi több szálas programot írni. Kell egy Timer és ehez kell egy megszakítás. A megszakítás mondjuk 0.1Sec -enként hívódik meg. A megszakítás rutinban meg összesen anyi a feladat, hogy növelni kell egy változó értékét. Ha 16biteset használsz, akkor maximum 6553.5Sec -et képes mérni az időzítőd és a maximális pontossága 0.1 Sec. A főprogramban pedig ezt a változó értékét kell figyelni. Az már csak egy egyszerü kivonás, hogy visszafelé számoljon. És annak sincs semmilyen akadálya (vagyis csak az SRAM mérete az akadálya), hogy akár 20 szoftveres timert építsél erre a megoldásra.
cockero: ez AVR & PIC összehasonlítás... Én AVR & AVR-re gondoltam, azaz pl az attiny2313-attiny45-atmega8-at lenne jó látni egy táblázaton belül.
ATtiny: igazad van! (Mint mindig!) Nekem elég a legegyszerűbb megoldás, pontosság meg akár plusz minusz 5mp is lehet. Munkahelyemre akarok a reflow kemence elé egy időzítőt, ami jelez, ha a berakott panel hamarosan jönne ki a túloldalon. Ha több panelt tennénk bele, akkor jó volna mindhez egy "riasztó", emiatt kéne a többszálas megoldás. A timerben a túlcsordulás-újrakezdés jelentene számomra problémát. Esetleg ha 1mp-re venném az osztást, akkor 18 óráig is mehetne az időzítő, ami annyit jelentene, hogy naponta kellene nullázni a timert. Ez már megoldást jelentene. (2műszakban mennek a gépek, ez 16-17 órányi munka/nap) Hmm, ez jó lehet!
Akkor félre olvastam a hsz-od! Bocsi
Most nem számolok utánna, de nagyságrendileg jók a számításaid. Azért azt hozzáteszem, hogy bár nem szerencsés, de megoldható 32bites változók használata is. Kicsit ugyan megszenved vele a 8bites AVR, de működik. És ha 1Sec-es alapjelet egy 32bites változóban tárolod, akkor 4294967295 Sec-et lehet mérni egyhuzamban. Ami 49710 Nap.
Jaj, hát addig el sem tudok számolni Elég nekem egy 16bites is, és akkor atmega8-am van bőven itthon, és azzal a kijelzést is meg tudom oldani.
Köszi
Ne haragudjatok hogy türelmetlenkedek, de valaki adna végre valami tanácsot az előző oldalon felvetett kérdésemre? Ma estére kész kéne legyek ezzel a szutyokkal. :no:
Sziasztok megint!
Annyi kiegészítés a #380193-hoz, hogy azért számolta csak minden másodikat mert nem érintkezett a legalsó LED , fel sem tűnt hogy legjobb esetben is csak 7 világít. Viszont továbbra sem értem hogy miért csak az egyik irányra jó ez. Valami ötlet? A kód jónak tűnik egyáltalán?
ISP programozáshoz nem kell a RESET jel is egész véletlenül???
Itt van eyg összehasonlító táblázat, igaz fotdítva.
Tehát nem az, hogy mibe mik vannak, hanem hogy mik melyik prociba vannak. http://www.nongnu.org
Atomász -.- ezért szívok három napja.
Idézet: „A hangszorot nem kotod be , rendre MISO, MOSI, SCK, GND labakat rakotod az STK200-ra, tapot adsz neki es felprogramozod.” így már megy köszi.
Nincs mit! Az ilyen szivasok elkerulhetoek a felhasznalt eszkozok dokumentacioinak tanulmanyozasaval.
Idézet: „A kezelő kódban megvizsgálom az enkóder másik lábát (PIND2-n).” Nem igazan.
Ha mar visszaidezted;
Az nem egyertelmu, hogy ha az STKn van RESET, valahova kotni kell azt is??
Köszi!
Megkérdezhetem hogy, hogy miért? Sajnos most még nem tudom kipróbálni... Eddig már majdnem azt hittem hogy értem, leszámítva persze az apró bibit hogy működni nem nagyon akart
PIND2 egy konstans ertek ami megmondja, hogy hanyadik bitrol van szo.
Ezzel elkeszul a maszk:
PIND regiszterben figyeled az adott bitet:
igen, ezt értem.
Azt nem értem hogy miért nem jó az amit én akartam. Vagy amit akartam az jó, csak nem úgy kell lekódolni hanem úgy ahogy mutattad?
továbbra is enkóderes kérdés:
ez a pergésmentesítés mennyire jó? Persze mindkét INT lábra megcsináltam. katt ide
Hi!
Előre is bocsesz, hogy ilyen kérdést teszek fel, de nem igazán találtam rá választ. Már egy pár éve foglalkozok PIC-ekkel, először assembly-ben programoztam, majd áttértem C-re, de itt egy kicsit tököm tele lett Microchipékkel... no de mindegy, nem ez a lényeg, hanem hogy most szeretnék elkezdeni foglalkozni AVR-el, de egyből szeretnék valami jó programozót építeni. PIC-hez volt ICD2-m és ezzel egyenrangú AVR programozó kéne. Olvastam Topi egyik cikkében, hogy van az AvrDragon. De ha jól látom, ez elsősorban nem "in circuit programozó". Mit javasoltok? Mit lehet megépítni, ami tud rendesen debuggolni? (Nah igen, és mi az a JTAG?) elpre köszi a segítségért, remélem majd én is tudok hamarosan jönni mint segítő erre a fórumra.
Jáj nekem
Lehetséges, hogy a Topi féle AVR-ISP meghal? Pl ha a miso-mosi-clk kimeneteket rövidre zárom programozás közben? Azóta kicsinykét melegszik a benne levő atmega8... és sebességi hibára hivatkozik, hogy csökkentsem a írási sebességet. Olyan rettentően ügyes vagyok
Hmm... Topi féle ISP? Mindjárt utána is nézek. Köszi!
Üdv!
Végigolvastam a cikket, már csak egy kérdés maradt bennem. Ez tud debuggolni? (Programot pausolni, és regisztereket kiolvasni?) Köszi!
Hali!
Én ezt fogom kipróbálni. VAn már egy JTAG-om, nem panaszkodok rá, lehet vele frankón lépésről lépésre debugolni. Amióta kerestem hozzá egy mobiltelefonhoz való USB-soros átalakítót, nagyon megszerettem, mert nem kell külön tápfesz, mobil, USB általában minden gépen van elől is, stb,stb.... Üdv Kiborg
Itt kulso felhuzo ellenallast hasznal. AVRnel bekapcsolhatod a belso felhuzo ellenallast, igy kulso nem kell.
A belso erteke sokkal nagyobb (100k koruli? pontosan nem tudom), igy 1-10 nf koruli kondival probalkozz. Amig nem probalod ki nem derul ki hogy mennyire mukodik.
Sziasztok !
TQFP Atmega8 -at használok, ha jól tudom alapból a belső órajelet használja. Az én kapcsolásomban külső 11.059200 MHz kristály van beépítve, rákötve a 7 - 8 lábakra és kondin keresztül testre. A kérdésem az lenne hogy mire állítsam a Bascomban a Fuse bitet , hogy a külső kvarcot használja rendesen ? Most ezen áll 100001:Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0001 SUT=10]; default value |
Bejelentkezés
Hirdetés |