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
Valami ilyesmi:
Sziasztok!
Megnéztem az oldalon a "Nyolc Lábbal AVR IV" részt, és szeretném azt az akkutöltőt átalakítani hogy 12Vos akkut töltsön. Mielőtt hülyeséget csinálnék valaki megtudná mondani hogy miket kell kicserélni?
Azt hiszem ez annál komplexebb kérdés, mintsem hogy itt lehessen válaszolni. Kezdeném a helyedben azzal, hogy megnézném milyen töltési görbét (karakterisztikát) vár egy 12V-os akku. Egyáltalán, milyen akkut szeretnél te tölteni, savas ólom akkumulátort? Sorba kötök 10 db NiMH akkumulátort és máris 12V-os akksit kapok. Mindenesetre remélem kicsit utánanéztél a dolgoknak interneten.
De, hogy a kérdésedre válaszoljak is: Kell egy olyan táp, ami 12V-nál többre képes. Legyen mondjuk 15. A kapcsolás szerintem többnyire alkalmazható ezt leszámítva. Utána programozd le az egyik töltési karakterisztikát ami megfelel a tölteni kívánt akksinak és kész is.
A táp megvan hozzá Savas autó akkut kéne tölteni, igazából csak annyit kéne építeni a töltőbe hogy ha telivan akkor lekapcsol és kijelzi hogy feltöltött, meg olyan 2-3A-re le kéne szabályozni az áramot.
Ez nekem jó lenne úgy hogy az avr csak mér és megszakítja a töltést ha kész?
Nos, ez nem csak azért neccesebb mert más lehet a töltés karakterisztikája, hanem mert egy 12V-os akku 1-2 nagyságrenddel nagyobb áramokat vehet fel töltéskor. Látom hogy nem kispályázol, mert a 2-3A-es töltőáram egy kisebb autóakksi töltőárama! Kezdjük ott, hogy a cikkben foglalt töltő szabályzó része lineáris, azaz veszteséges! Magyarán elfűti a maradék feszültséget, ezért jól kell megválasztanod a bejövő tápot! Apropó, bejövő táp. Egy mezei dugasztáp főleg egy hagyományos trafóval szerelt típus nem fogja ezt neked elvinni! A szabályzóra visszatérve, hiába teszel be 5A-es LM1117-et, egy méretes hűtőborda, esetleg hűtőventi is kelleni fog!
Inkább kapcsolóüzemű típust választanék, és a helyedben nem is nagyon szórakoznék az építgetéssel. Helyette változtatható feszültségű típust tennék be, amin valahogy be lehet állítani a maximum áramot. Tehát ne a "leblokkolós" fajta legyen, hanem olyan ami túlterhelésnél a kimenő feszültséget csökkenti. Egy ilyen tápot vettem, max. kimenőárama 5A amit egy ellenálláscserével 3A-re csökkentettem, két másik ellenállást is kicseréltem mert a potival 11.5V-13.0V között lehetett váltani, egy kocsiakksihoz meg ugye 13.5-14.0V körüli töltőfesz kell ha a töltőáram már kisebb mint 3A... Télen így töltöttem kb. 20 óráig egy 80Ah-s Banner akksit, másnap -22°C-on a Skoda pöccre indult!
Sziasztok!
Most kezdtem el foglalkozni az avr-ekkel és az oldalon található avr-s minta példákat csinálgattam eddig. Viszont most egyénileg akartam dolgozni, egy nyomógombos alkalmazást akartam készíteni amivel egy ledet lehet ki és bekapcsolni. Az lenne a kérédsem hogy ennek hol tudnék utánna nézni vagy valaki segítene megvalósítani?
itt van egy cikk: Negyedik kísérlet: LED vezérlése nyomógombbal
Csak át kell írni avr-re, és kész... (watchdoggal nemkell foglalkozni, az a sor nem kell nekünk... _delay__cycles helyett
meg nem io430 és intrisics.h kell hanem
p1dir helyett meg pl B porton:
azért egy mert 2^0, és azért 8 mert 2^3=8, de persze akármit lehet írni oda, attól függ melyik bitre(lábra) kötöd a ledet...
Akar jo is lehet, nem ellenoriztem az aramkort. Viszont nem ertem minek akarsz AVR-t belekeverni, nem kell megszakitani a toltest, csak a toltofeszultseget kell korlatozni 13.2...13.8V-nal, valamint termeszetesen a maximalis aramot. A toltes pedig akkor van kesz, ha a toltoaram jelentosen lecsokkent, azaz ha nagyjabol 0.001*C20 korul van.
Mint ahogy mondtak, meg a disszipaciora figyelj. Ha ezeket betartod bajt nem csinalhatsz. [Szerk] Meg valami: Szokasosan C20/10 koruli arammal szoktak tolteni az akkumulatorokat, de akar C20 koruli arammal is lehet utantolteni. A gyorstoltok C20/4 arammal is mehetnek, de ott rovid idonkent kisutest is vegeznek. A gyorstoltes hatranya az, hogy nagyobb vesztesseggel tortenik a toltes, es nem lesz 100%-os(ha erdekel leirom a fizikai/kemiai hatteret), igy altalaban 6 gyorstoltes utan illik csinalni egy teljes ciklust.
engem is érdekelne a fizikai/kémiai háttér, ez érdekes ..
Szoval koztudomasu, hogy az olom-sav akkumulatorok egyik elektrodja szivacsos szerkezetu olom, a masik elektrodja olomoxid, valamint az elektrolitja kensav, amely az energiaatalakitasban aktivan reszt vesz, azaz koncentracioja valtozik a toltottsegi allapotnak megfeleloen. A kisuteskor az olom elektrod szulfat ionokat vesz fel es igy olomszulfat keletkezik, az olomoxidos elektrod szulfat iont es hidrogen ionokat vesz fel es igy ott is olomszulfat, valamint viz keletkezik. Mivel mindket elektrodon olomszulfat keletkezik igy ezt kettosszulfat-elmeletnek hivjak. Ez termeszetesen egy kicsit meghaladott elmelet, mamar ennek a modositot elmeletevel magyarazzak, ahol ez a folyamat tobb lepcsoben megy vegbe, ami szerint eloszor bazikus olomszulfatok keletkeznek, ami csak lassan alakul at olomszulfatta. A szulfatosodas is osszetett, mivel ket kulonbozo allapotu olomszulfat fordulhat elo: amorf es kristalyos. Eloszor amorf olomszulfat jon letre, ez az ami nekunk jo, mivel ez alkalmas arra, hogy tolteskor a forditott iranyu reakcioban reszt vegyen. Ha sokaig allni hagyjuk az akkumulatort, akkor ez az amorf olomszulfat elkezd kristalyosodni, es igy az akkumulator veglegesen veszit a kapacitasabol. Mivel az elektrodok porozus szerkezetuek, igy a reakciohoz a kensavnak bele kell diffundalnia. Ha a kisutes gyors, azaz nagy arammal tortenik, akkor az elektrolithoz kozeli feluleten olyan gyorsan alakul ki az amorf olomszulfat, hogy a porusokat lezarja, igy az elektrod belsejeben levo aktiv anyag mar nem tud resztvenni a reakcioban. Ez a kapacitasvesztes reverzibilis, amennyiben nem all ilyen allapotban nagyon sokaig az akkumulator es nem passzivalodik. Tolteskor a toltoaramot szinten a diffuzio sebessege korlatozza, de ilyenkor nem tortenik hasonlo gatlas. Emiatt van az, hogy feszultseggeneratoros tolteskor a kezdeti szakaszon a toltoaram nagyon nagy, majd rovid ido alatt leesik es egy erteknel normalizalodik, ugyanis ekkor csak az elektrodok feluleten levo olomszulfat alakul at gyorsan, a belso reszeknek a reakcioban torteno reszvetelet a diffuzio lassitja.
Na igy elsore "roviden" ennyit tudok mondani.
Üdv.!
Ezzel a kódrészlettel küzdök, valamiért nem működik, csak akkor, ha bentről adok értéket a szamhossz-nak. Tehát így nem jó:
Ez mitől lehet?
Hat ez igy sajnos nem eleg, a legjobb lenne, ha egy-egy dump-ot toltenel fel. Lehet akar optimizalasi problema, vagy stack beleer a valtozokba, stb.
Ennyire nem vagyok otthon ebben, mi az a dump? Az előzőből kifelejtettem, hogy ha visszaküldetem vele a szamhosszt, akkor 5-öt kapok, szóval olyan, mint ha jó lenne, csak nem tudja használni utána. Meg ha if-et teszek bele, hogy küldjön mondjuk egy b betűt, ha 5-tel egyenlő, és az is működik. Alapértelmezetten -Os volt beállítva, átállítottam -O1 -re, de nem változott semmi.
Most kipróbáltam úgy, hogy csak ebből áll a program, mellékelem is. (soros.h-ban csak a soros beállítások vannak, az nem hinném, hogy számít) Végülis ha elküldöm az m-et, azt kapom, hogy "1241/" az "12345" helyett. És azt is most nézem, hogy ha megcserélem a void után a két változót(először van a szamhossz), akkor meg csak "/" jeleket kapok a végtelenségig. Szóval már nagyon nem értem.
Ezt is most vettem észre: egy, és kétjegyű szám esetén rendesen működik, de onnantól megbolondul.
Szerintem kasztolási és/vagy stack túlcsordulásos probléma lehet.
Utánanéztem a pow() függvénynek: double értéket vár! Azaz double értékre kasztol, számol vele majd visszakasztolja int-é. Ennek hátrányait inkább nem sorolnám, lényeg hogy nálam le se fordult a kód a pow() használata miatt. Javaslom a pow() függvény kiváltását egy külön megírt szerzeménnyel, úgy menni fog:
Nagyon köszönöm, működik! Érdekes, hogy én is erre kezdtem gyanakodni, mert egy kis pihenés után kivettem belőle a pow-ot, és lényegileg így írtam át, és most készültem tesztelni azt is(úgy is működik, de ez a külön függvény még jobb is, köszönöm). Ráadásul így pow nélkül 1012byte-tal kisebb a kód, ami azért nem kevés(ez egyébként miért van?).
Sziasztok!
Épp most csinálok biciklire sebességmérőt és a számolást, vezérlést AVR-rel (atmega8) oldottam meg. Viszont az avr programozás nem sikerül. Hiba: Unable to enter programming mode. Verify interface settings, target power and connections to the target device. Severity:ERROR ComponentId:20100 StatusCode:1 ModuleName:TCF (TCF command: Device:startSession failed.) Failed to enter programming mode. ispEnterProgMode: Error status received: Got 0xc0, expected 0x00 AVRStudio 5.1.208-at használok. AVR Doper a programozóm. Már többször programoztam vele atmega8515-öt és még most is megy vele. Programozó kábel jól van bekötve. Válaszaitokat előre is köszönöm!
Mivel hardverbol lebegopontos szamitast nem tud vegezni, igy ezt emulalnia kell. Ezek az emulacios rutinok foglaljak el a sok helyet.
Ha 100-nal nagyobb kitevot hasznalsz, szerintem hasznalj inkabb intelligens hatvanyozast, mivel igy kb. 14-16 muvelettel elvegezheto.
Hello!
Saját tapasztalat: AVR Studio 5 - nem támodatja az AVR Doper-t! Égetéshez használj AVR Studio 4.18-4.19-et!
Köszi, kipróbálom.
De amúgy atmega8515-öt sikerül AVRStudio 5-tel programozni.
A napokban újra elővettem az AVR Doper forráskódját, némi finomhangolás érdekében. Illetve ATMega88-ra
is szeretném lefordítani, a konstrukció alapján ezt lehet. De sajnos sehogy nem akar összejönni a dolog. Amit eddig tettem: AVR Studio 4.19-be új projekt, forrásfájlok importálása, elérési utak hozzáadása(./usbdrv; ./) így mindenki lát mindenkit. A Makefile-t nem használom, helyette Project Options-ban adom meg: ATMega88 és 12MHz. Ez történik: A kód lefordul, és USB-re dugva a gép fel is ismeri az eszközt, beteszi a COM4 portra ahová egyébként a többi Dopert is tette a tesztek alatt. Azonban AVR Studio-val való csatlakozáskor megbolondul. A csatlakozás lassú, visszasír hogy a fw verzió 0.78xyz valami(8 vagy 10 számjegy), de a paraméter listát már nem tudja betölteni és innentől a programozó is süket, se kép se hang. Olyan is előfordult hogy AVR Toolchain-al lefordítva (project:conf.options:compiler rész) az AVR Studio fel sem ismeri(de a windows továbbra is COM4-be teszi), de WinAVR-el fordítva felismeri csak a fentebb már leírt jelenséget produkálja. Ha 20MHz kristállyal hajtom meg(és F_CPU=20000000) akkor a Windows szintén felismeri, AVR Studio nem... Még valami, ha a hardware.h-ban a DEBUG_OPTION részt nem teszem át 0-ba(alapértelmezésben 1) akkor a Windows sem ismeri fel a programozót, de még nem is szól miatta, mintha be se lenne dugva! Valaki megosztana velem egy már működő, leforduló AVR-Doper-es AVR Studio projektet(becsomagolva)?
Sziasztok!
Ez a programozó ugye jó Tiny 45-höz? Winavr kezeli ezt a programozót? Ha igen akkor a makefileban mit jelöljek be programozó típusának? A port gondolom usb.
Érdekes.
Feltételezem a legújabb elérhető avr-doper verzióval próbáltad (2008-11-27 linkelt kommentemben én még azt vettem alapul). Azt kipróbálnád kérlek, hogy atmega8-ra fordítva, hasonló eljárással mi lesz az eredménye. Illetve még egy kérdés: módosítottál bármit is a forrásban, vagy csak importáltád a studio 4.19-be, átállítottad atmega88-ra és kipróbáltad? Ha atmega8-ra fordítva winavr-rel mindennemű módosítás nélkül sem működik, akkor valami nem sikerült az importálásnál.
Kihagytad a linket.
Akkor azért nem kaptam választ. Én Ez az:
F01982 AVR USB USBasp ISP PRGMR Programmer,Firmware Loader USB For ...KK UFO Csatolom a makefilet a c fájlt és a hex fájlt. Tulajdonképpen a makefilet kéne megnézned jó e a c meg topi cikkéből származik, a hex meg a fordított.
Nem vagyok nagy avrdude guru (az avrdude a winavr csomag része, ezt hívja meg a makefile alapján a make program utasításod)
Amit linkeltél ott azt írja, hogy ez egy USBasp. Emiatt arra tippelek, hogy a következő sort írd át a makefile-ban:
itt
álljon Ezt a makefileod alapján tudtam meg, ahol azt írta, hogy: # Programming hardware # Type: avrdude -c ? # to get a full listing. Hogy a kettő kompatibilis-e. Arra hamar rájössz te is, hogy már tudod, hogy ennek a becses neve usbasp.
Az, de ott van az isp is és ha rákeresek a nevére ott is isp van és a winavr-be is isp van ami a legjobban hasonlít az asp-hoz.
|
Bejelentkezés
Hirdetés |