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
Tovább próbálgattam és végső elkeseredésemben már szinte nincs olyan beállítás, amivel ne próbálkoztam volna.
AVR-Studioban ISP helyett már 'PP/HVSP mode' beállításra is átlőttem. Ilyenkor "Entering programming mode.. OK". Sőt! Szinte mindenre OK-t ad. " Entering programming mode.. OK! Writing fuses address 0 to 2.. 0x7F, 0xDF, 0xFF .. OK! Reading fuses address 0 to 2.. 0xFF, 0xFF, 0xFF .. OK! WARNING: Fuse bits verification.. FAILED Leaving programming mode.. OK!" Azt nem tudom, hogy miért írja az írásra, hogy OK, de ez nem is lényeges, hiszen elvileg ugye ISP módban kéne működnie, de annyit sem tudok elérni, hogy kiolvassam az Attiny állapotát. Furcsa, hogy ebben a HVSP módban az Attiny törlésére is OK-t ad, mintha elérné a programozó a mikrokontrollert. A programozón viszont LED fel sem villan, ellentétben az ISP móddal, ahol a LED egy pillanatra felvillan, mielőtt a hibaüzenetet kidobná az AVR-Studio. Nem tudom, hol keressem a hibát. 3 darab ATtiny2313-al próbálkoztam, amiből az egyiket valószínűleg ki is nyírtam, mert idegességemben véletlenül fordítva dugtam a foglalatba. Viszont mind3 teljesen új volt, még sosem voltak programozva. Kizárás képpen jó lenne kipróbálni, hogy egyáltalán a programozó jó-e. Erre mondjuk egy kis segédlet jól jönne, hogy hogyan lehet lepróbálni. Vagy a másik lehetőség az lenne, ha valakinél - akinek ugyanilyen programozója van és működik - rádugni az övé helyett egy programozás erejéig. Ez lenne a legjobb megoldás, hogy megtudjam, a programozó kifogástalan és akkor a hibát már a programozó után lehetne keresni. Mondjuk nem tudom, mi lehet még azután, mert a programozó után már csak a mikrokontroller van. Vagy nem tudom, mit kéne csinálni. De jó lenne valami támpont, hogy merre induljak el. Valaki tudna segíteni? Köszönöm!
A kép csak az aktuális állapotot tükrözi. Már próbáltam kipipálva is, és anélkül is.
De a "Main" fülön ott van, hogy "WARNING: Signature does not martc selected device!" És Topi videoján a hibásan beállított ISP frekvencia ellenére "Entering programming mode.. OK!". Ebből én azt szűröm le, hogy a CKDIV8 már csak beállítás kérdése lenne a programozó módba lépés után, de dáig sem jut el. Persze próbálkoztam vele, de a fuse biteket - beleértve a CKDIV8-at is - sem tudom állítani, mert mindenre hibát ad vissza. Tehát a "Entering programming mode.. FALSE!" után megáll az élet.
Nekem is signature hibát hozott ki amikor CKDIV8 be volt pipálva, meg nem értem el.
Merre laksz?
Újpest.
Most változás áll be. Szóval. Levágtam a kábelt. 5 centi. A szálakat közvetlenül az attiny-re forrasztottam. Láss csodát. Jelzem, hogy az egyik próbálkozáskor feltehetőleg kizártam magam az egyik attiny-ből. A másikat nem fogadja a programozó ugyanazzal a hibával. Most a harmadik van rádugva, amit előzőleg fordítva dugtam a foglalatba és az AVR-Studio elfogadta. Pedig ez az attinyúgy felmelegedett, hogy merülőforralónak lehetett volna használni. Most itt állok: "Getting isp parameter.. SD=0x03 .. OKOK Reading FLASH input file.. OK Entering programming mode.. OK! Erasing device.. OK! Programming FLASH .. OK! Reading FLASH .. OK! WARNING: FLASH byte address 0x0000 is 0x00 (should be 0x12).. FAILED! Leaving programming mode.. OK!"
De kár, hogy lekéstem a módosítást.
Szóval JUHÉÉÉJ: " Getting isp parameter.. SD=0x03 .. OKOK Reading FLASH input file.. OK Entering programming mode.. OK! Erasing device.. OK! Programming FLASH .. OK! Reading FLASH .. OK! FLASH contents is equal to file.. OK Leaving programming mode.. OK! " Eszerint programozó működik. Leégettnek hitt ATtiny2313 működik. Konklúzió. Szar a kábel. Ok, max 20 centit mondtak, én 10-el próbálkoztam. Nem működött. 5 centi = siker. Bár ez így kicsit rövid, de kit érdekel. Lehet, hogy maga a kábel ennyire rossz és ennél a max 20 centi nem érvényes. AVR-Studio beállítások: ISP Mode, ISP freki: 57,6 kHz (lehet, hogy ment volna 115,2 kHz-en is) Fuses: SPIEN automatice kipipálva, minden másból - beleértve a CKDIV8-at - pipa ki.
5 cm? Nekem sima LPTs pufferes stk200 majdnem 1m szalagkabellal hibatlanul mukodik..
Ez meg az a projekt amit leforditottam? Mukodik?
Az Attiny-t sikerült felprogramozni, de meg sem nyikkan. Ha nem a kód a rossz (nem hiszem, hogy rossz lenne), akkor feltehetőleg maga az attiny halt meg olyan formán, hogy fel lehet programozni, de semmi több. Legalábbis másra nem tudok gondolni.
Az 5 centis kábel meg szerintem a kábelnek tudható be. Nem mai darab. Egy régi 386SX40es gépből szedtem ki a csatival együtt.
Pocket PC-hez milyen AVR C fejlesztőkörnyözet, fordító létezik, ha egyáltalán létezik?
Hát nemhiszem, hogy létezne ilyen. Illetve mint minden ez is megoldható, csak az a kérdés, hogy megéri-e foglalkozni vele.
A libc nem lehet nagy gond, maximum az érdekes fájlrendszerstruktúra kavarhat be, de ez gyanítom leküzdhető. Az avr-gcc-t meg lehet próbálni lepörgetni ezzel, de szerintem nagy lesz a wtf/sec faktor lévén a cegcc nem egy kiforott dolog. A fejlesztői környezetet legfeljebb makefile szinten tudom elképzelni. A programozó szoftverre (avrdudera) ugyanazt lehet mondani mint az avr-gcc-re. Esetleg lehet portolni valami egyszerű bootloaderkezelő szoftvert. Mindenesetre így látatlanban nem tudom mire kellhet a dolog (gyanítom vékonykliensen vagy hasonlón akarsz dolgozni), de azt tudom tanácsolni, hogy szerezz egy PC-t, és azon próbálkozzál, mert egy rakat szívástól megkíméled magad.
Ha egy ATMega8-asra rakok mondjuk egy 10Mhz-s kristályt akkor azzal mennyire pontosan lehet órát (dátummal) üzemeltetni mondjuk 2 hónapos távlatban?
Adatgyűjtésre lenne és jó lenne pontosnak lennie. Az adatgyűjtés úgy nézne ki, hogy leállítja a procit 1 percre majd leméri az analóg bemenetet eltárolja és így tovább. Az órát timer-el mérném.
Ez attól is függ milyen kristályt vettél, a pontosságát meg szokták adni ppm-ben (parts per million - a millió órajelre jutó hibák száma). Innen ki lehet számolni. (Az én kristályaim pl 30ppm-esek)
A kvarc pontosságától függ. Valószínűleg nagyon pontatlan lesz. A "sima" kvarcok nem nagyon pontosak, főleg termosztát, és beállítási lehetőségek nélkül.
Viszont már láttam olyan megoldást (riasztónál), hogy a szintén pontatlan kvarc miatt az időt szoftveresen "pontosították". A pontosításhoz meg kellett nézni, hogy egy nap alatt hány másodpercet sietett, vagy késett. A beállításokban pedig be lehetett állítani, hogy minden nap éjfélkor pl. 23 óra 59 perc 45 másodperc után 00 óra 00 perc 00 másodperc legyen (ha pl 15 másodpercet késett naponta). Így az eltérés naponta nem haladta meg 15 másodpercet, és elvileg nem összegződött az eltérés. Ha igazán pontosat akarsz, akkor viszont kell venni egy +- 1 ppm-es TCXO-ot és arról kell járatni a vezérlőt. Abból olyan pontos órát lehet csinálni, hogy 12 nap alatt tér el 1 másodpercet. Csak egy ilyen TCXO jó drága. Másik (szintén drágább megoldás) valami RTC áramkör, amit csak ki kell olvasgatni, és akkor is megy, ha külső tápja sincs. Szóba jöhet még az órakvarc (32.768 kHz), az aránylag pontos, csak az meg lehet, hogy neked nagyon alacsony órajelnek.
Az egyik: (semmi infót nem találtam róla)
Kvarc Ez a másik ami van itthon, de nem tudom hogyan kéne bekötni, hogy külső jelforrásként szolgáljon mindjuk az int0 vagy valahol. (Az elektronikai részét nem tudom) Másik kvarc
Az a 20 ppm-es órakvarc elvileg naponta +- 1,7 másodpercnél pontosabb órához alkalmas. Viszont a kapcsolás alkatrészei is "el tudják húzni" a frekvenciáját, attól pontatlanabb lehet.
Sziasztok
A lehet óra kvarcot használni, anélkül, hogy az AVR magja is arról menne: Ha jól értelmeztem a, A MEGA8-ban a timer2 tud külső órajelről menni, anélkül, hogy maga az avr is arról menne (egymástól, függetlenül, külön órajelről mennek) Az adatlap timer2 részénél kb az 5-sor: Allows Clocking from External 32 kHz Watch Crystal Independent of the I/O Clock Tehát mehet külső 32khz kristályról. When AS2 is written to zero, Timer/Counter 2 is clocked from the I/O clock, clkI/O. When AS2 is written to one, Timer/Counter 2 is clocked from a crystal Oscillator connected to the Timer Oscillator 1 (TOSC1) pin. Az adatlapról ezt szedtem ki, és ha jól értelmezem a Timer2 ha be van állítva az asszinkron üzemmód,(AS2 is written to one) akkor a "(XTAL1/TOSC1) PB6" lábra kötött kristályról megy a timer2, a mag meg továbbra is a belső oszcillátorról.
Köszönöm szépen , hogy kerestél nekem, megpróbálom beszerezni valahonnan .
További kellemes napokat nektek!
"Fénymérőt" szeretnék csinálni.
Arra gondoltam, hogy veszek egy napelemes kerti lámpátés azt direktbe rákötöm az Analóg bemenetre. Kell valamit még rákötni vagy ellenállást vagy ilyesmit? Ha jól emlékszem ez max 30-50mA-t tud leadni. A napsütéses órák számát és annak intenzitását szeretném mérni és EEPROM-ba eltárolni. Már csak ez az egyetlen dolog van hátra belőle.
sziasztok!
Hogyan oldanátok meg bascom-ban a következő problémát? Timer1 (2313) túlcsordulásai adják az impulzusokat az egyik kimeneten. Olyan impulzussorozatra lenne szükség, ami nem folyamatos, hanem néha x impulzus kimarad, aztán jön y, megint kimarad x... Timer1 leállítása és újraindítása minden esetben nem járható út, ezért valahogy a kimenetet kéne adott impulzusok idejére inaktiválni, majd újra működővé tenni. Bocs, ha nagyon primitív dologra kérdezek, de már annyit gondolkoztam rajta, hogy nem veszem észre a fától az erdőt sem köszi minden segítséget, ötletet!
Talán olcsóbb lenne, ha egy fotoellenállással csinálnál egy feszültségosztót.
Az INT, ami történik a timer lekezelésekor, és itt állítod a kimenetet. ha a változó értéke mehet, akkor kirakja, különben nem.....
Azt már próbáltam, de nem tudtam megoldani, hogy ne vegyen le sok áramot.
Amúgy nem sokkal drágább 450 Ft egy napelemes kerti lámpa és abba tökéletesen beépíthető. Megvan az elem helye esztétikus nem olyan mint ezek a műszerdoboz förtelmek. Csak leszúrom a kertbe és már méri is. A kérdés már csak az, hogy lehet-e közvetlenül az analóg bemenetre kötni.
Nekem van ilyen, PLC-vel mérem a napsugárzást. (A honlapomom vannak mérési eredmények is, bár azt talán túlzás mérésnek nevezni.) Nem mindegy, hogy milyen lámpát választasz, mert különböző fajta napelemek vannak benne. A monokristályosnak a felületét ért sugárzott teljesítménnyel közel arányos a rövidzárási árama.
Ebből következően akkora ellenállással kell lezárni, hogy lényegében rövidzárra dolgozzon. Azt, hogy lineáris-e a karakterisztikája, úgy lehet megnézni, hogy egy árammérővel rövidre zárod, és a tűző nap felé fordítod. Utána akkora szögekkel elforgatod, hogy a napra merőleges felület arányosan kisebb legyen. Ha az áram is nagyjából arányosan csökken, akkor az jó lesz mérésre. A vezérlő analóg bemenetére vezetheted az ellenálláson eső feszültséget, ami már arányos lesz a rövidzárási árammal, az meg a napsugárzással.
Köszi, eddig egyetértünk A gondom a "hol kirakja a kimenetre, hol nem" gyakorlati megvalósításával van. Melyik paranccsal lehet a kimenetet ideiglenes aktiválni, inaktiválni? köszönöm
Úgy tudnád megoldani az alacsony fogyasztást, hogy csak a mérés időtartamára kapcsolod be a fotóellenállás áramát meg az AVR-t is.
Lényegébe elküldöd POWER_DOWN módba, majd egy timer felébreszti. Ekkor egyik lábat bekapcsolod amire a fotóellenállás van kötve, másikon meg megméred. Elmenti az adatot és mehet is aludni megint. A kerti lámpába is van fotóellenállás ha jól tudom, az kapcsolja be este a led-et. A napelemet nem ismerem, de ha fényerősségre változtatja a feszültségét, akkor megteszi az is. Nem hiszem, hogy 5V fölé meggy, de mérd meg. Ha alatta van, akkor simán rákötheted az analóg bemenetre.
Köszönöm, hogy ez nekem nem jutott eszembe!
Hétvégén ki is próbálom, ha sikerül beszerezni egy lámpát.
Újabb bugyuta kérdéssel fordulok hozzátok.
A Topi féle programozót ültetem bele egy dobozba és a dobozra építek rá egy DIP20-as IC foglalatot. Terveim szerint ebben Attiny2313 és Attiny13 mikrokontrollereket fogok csak programozni. A kérdés az lenne, hogy árt-e egy ATtiny2313-nak, ha a 4-es lábát földre kötöm. Azért kérdés, mert a 8 lábú Attiny13-nak a 4-es lába kerül földre, egyébként a többi a foglalatba dugva oda kerül, ahol a 2313-on is van. 2313-on a 4-es láb a külső oszcillátoré lenne, de erre egyébként nincs szükségem. Tehát ez árthat neki? Mert akkor kénytelen vagyok ezt a lábat 2313 programozása esetén lekötni.
Szia!
Semmi baja nem lesz elvileg. Az lehet probléma, ha az ATtiny2313 külső kvarchoz van konfigurálva. Mivel ilyenkor kérdéses, hogy a belső oszcillátor mit szól, hozzá, ha földre kötöd. Természetesen ilyenkor nem tudnád amúgy sem programozni külső órajel vagy kvarc nélkül. De ha belső RC oszcillátorra van állítva az AVR akkor semmi gondot nem okoz, ha azt a lábat a földre húzod.
Üdv.
JTAG-et szeretnék beüzemelni. Már csináltam ilyet, eddig nem volt gond. Most viszont hibát dob az AVRStudio-s AVRProg. Pedig ugyanazt a boot loadert töltöttem rá, ami volt eddig is.
Természetesen kvarc nélküli esetre gondoltam. Mondjuk másként sem gáz, mert a programozó jumpereit úgyis kivezetem a dobozon kívülre dip kapcsolókhoz, de csak 4-es dip blokkom van, szóval a 3 jumper mellé már semmiből nem tart a negyedikre a 4-es lábon a föld tiltását tenni.
Köszönöm.
Van egy motorom aminek a végén van egy reed és egy mágnes amiben vannak +-+-+- pólusok. Ez így egy impulzus jeladó!
Egy atmega 64 procival számolom az impulzusokat INT alapon. Ha a motor kifele megy akkor hozzá adom az impulzust ha visszafele akkor elvesz egyet. Így megszámolja hogy egy motor milyen hosszú és mindíg tudja mikor hol van. a hiba akkor adódik, amikor a motor az alján van és az impulzusok szinte egyet se nőnnek de vissza fele húzásnál mindíg egyel kevesebbet számol. a motor végénél pedig ugyan ezt fordítva egyet többet. Ha egy tartományon belül mozgatom a motort a hiba halmozódik és így nem pontos az impulzusok száma ami egy végzetes hibához vezet. én arra gondolok hogy mondjuk a rising-nél a felfutó éleket figyelve ugye. 2 felfutó él között mozgok és a másodikat soha sem érem el így hozzá nem tud adni csak elvenni, ha a motor aljánál vagyok. elvileg nem szabadna ennek előfordulni. Az érdekelne hogy találkoztzatok e hasonló hibával, illetve számoltatok e már impulzust int alapon oda vissza adott tartományon belül? A gifr parancs ezen nem segítene? nekem a pontos impulzus szám nagyon fontos soha nem téveszthetek max évente 1-2-t ! Köszi. |
Bejelentkezés
Hirdetés |