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
Tisztelt Fórumtársak!
Problémám akadt egy AVR Dragonnal, melyet itt vettem a HEStore-ban, de nem akarják garanciálisan javítani, mert beforrasztottam olyan csatlakozókat, melyek itt, a gyári specifikációban is szerepelnek. Írtam nekik, hogy itt is fel van tüntetve ez a fajta módosítás, de azt válaszolták, hogy elveszett és kész, hiába szerepel ott, hogy lehet. Konkrétan ezt írták: Idézet: „Köszönjük megtisztelő válaszlevelét, továbbítottam azt illetékes kollégám felé, aki a következő választ adta: " A termékben módosítás lett végrehajtva és az, hogy az Atmel oldalán példa jelzi a műveletet nem jelenti azt, hogy ilyen esetben a termék nem veszíti el a rá vonatkozó garanciát." Ebben az esetben, így továbbra sem tudjuk a termék garanciális ügyintézését érvényesíteni.” Kérném a segítségeteket, hogy mit lehetne tenni, hogy garanciálisan javítsanak/cseréljenek? Előre is köszönöm! Idézet: Ezzel semmi baj nincs, kiveve, hogy ez egy vegtelen ciklus, hiszen egyszerre nem lehet 1 es 5 is ugyanannak valtozonak az erteke. Egyebkent meg a kerdes onmagaban hibas, mert nem irtad le, hogy a fordito mit mondott. Ha nem erted a hibauzenetet, akkor legalabb idezd, hatha mi ertjuk. „while((valtozo!=1) || (valtozo!=5))”
Amennyiben a meghibásodásnak nincs köze, a módosításhoz lehet futni egypár kört fogyasztóvédelem, műszaki szakértő, független vizsgálóállomás, de elég sok idő soha meg nem térülő költség stb.elmegy rá. Ha tudsz angolul írj az AVR-nek 20-30 email címre, hogy mi történt veled, küldenek annyit, hogy fel se tudod használni...
![]()
Én meg úgy látom, hogy itt Vagy kapcsolat van!
Nem pedig És! „while((valtozo!=1) || (valtozo!=5))”
De Morgan szerint
a „while((valtozo!=1) || (valtozo!=5))” megegyezik a „while(!((valtozo==1) && (valtozo==5))” azaz „while (!(false))” azaz „while (true)”
Elnézést, a fordító nem ír ki hibát, a 2. sor egyszerűen nem működik.
A keypad beolvasása 1-es vagy 2-es nyomógomb lenyomására van beprogramozva. Az 1.sorral működik, de nem tudom létrehozni azt a feltételt, ami 1-es vagy 5-ös nyomógombra is élne a többi nyomógombra nem. 1. sor: while((keypad<1)||(keypad>2)) //várunk amíg nem 1 v. 2. van lenyomva 2. sor: while((keypad!=1) || (keypad!=2)) A hozzászólás módosítva: Jún 29, 2015
A buta kérdéseire kapott válaszból tanul az ember!
![]()
Szerintem Topi lesz a Te embered, ő egy kicsit közelebb van a HE-hez és otthon van az AVR témában is. Ha mégsem akkor innen kérek elnézést.
A hozzászólás módosítva: Jún 29, 2015
Idézet: De mukodik, csak nem azt csinalja, amit te szeretnel. && kellene legyen benne es nem ||. Gondold vegig, hogy mit jelent! Ha nem 1 vagy nem 2 akkor kering onmagaban. Akarmilyen erteke van keypad-nak, a ket feltetel kozul az egyik teljesulni fog, ezert a vagy kapcsolat miatt mindig "igaz" lesz a feltetel. „a 2. sor egyszerűen nem működik.” A hozzászólás módosítva: Jún 29, 2015
Lehet van jobb megoldás, de ez működik:
Ez a rész természetesen uC függő (ez itt egy ATMEGA328p-re vonatkozott):
A hozzáférés az értékhez pedig:
Félő hogy nem fog működni mivel a driver úgy tűnik hogy saját tákolmány, azt nem szokás frissíteni újabb oprendszerre, szerintem Win7-re is csak bajosan menne fel.
Sziasztok! Jól sejtem, hogy ezt a foglalatot direktbe köthetem az AVR lábaira bármiféle szintillesztés nélkül?Bővebben: Link
Szia!
Én ugyan pont nem ezt a verziót használtam, de az működött minden további nélkül. Erre is rákerestem, és ezt írja: Support 5V/3.3V input. Úgyhogy szerintem igen.
Hogyan számíthatnám ki egy akkumulátor töltöttségi szintjét %-ban, (pl: 99.1%) ha az akku max töltöttségi szintje legyen 4,2V=100%, min töltöttségi szintje 2,8V=0%? Ha az ADC 10 bites, akkor 5V referencia esetén a felbontás: 5V/1024bit.
Kell level konverter, utána néztem.
1000 értéked nehezen lesz ebben a tartományban.
4.2-2.8/(5/1024)=287 ADC lépés. 2.8V=>573, 4.2=>860. 1. lépésben levonod az 573 offset-et, akkor lesz 0-286 értéked. Ezt megszorzod 100/287-el. Persze a "bemeneti érték < offset" dolgot le kell kezelni, ki-ki ahogy szokta...
Fuggetlenul a szamitas modjatol, nem minden akkumulator toltottsegi szintje merheto a kapocsfeszultsegbol. A legtobbnek nem linearisan csokken a feszultsege, raadasul fugghet egy csomo mastol is (hofok, akkumulator kora, terhelo aram). Persze sokszor eleg ez a modszer is, de ez is inkabb "1-5 pötty" jellegu meresre, mintsem 1 tizedes jegy pontossagu szazalekos meghatarozasra.
Főleg nem használható így egy lítium akku mérésére. 4,2V-ról hamar leesik kb 3,8V-ra, ott elég sokáig stagnál, majd a végén hirtelen elkezd esni a feszültsége. De itt jobban látható. Bővebben: Link
A hozzászólás módosítva: Júl 4, 2015
Lenne egy kérdésem. Adott egy Atmega32 proci. Ebben fut egy program, amiben van pár adat, amit áramtalanításkor eepromba kellene menteni. Viszont hogyan érdemes ezt elvégezni, milyen lehetőségek vannak erre? A mentéssel nincs gond, inkább arra lennék kíváncsi milyen módszerekkel lehet megoldani a feszültségmegszűnéskor a mentést. Ki, milyen módszerrel szokta detektálni ezt? ADC, komprátor, vagy valami más módszer esetleg?
Én ugy csinálom, hogy a program kezeli az eepromot, igy abban mindig az éppen használt adat van ( nem tudom te milyen adatokkal dolgozol). A tápbol nem igen fogsz idöben informáciot kapni, hogy megszünöben van, amire elindulna a mentés.
Esetleg lehetne rendszeres idöközökben elmenteni az adatokat.
Szia! Én tennék egy nagyobb kondit az avr táplábaihoz egy diódával, ìgy a táp megszűnése után még mehet kicsit az uC. Az egyik ext.int. lábat bekötnèm a dióda elé, lefutó élnèl (táp megszűnése) mentene az eepromba, majd kikapcsol. Én így próbálnám meg.
Autóba építek fedélzeti egységet, így a megtett km-t és elfogyasztott üzemanyagot akarom menteni egyenlőre. Ezek pedig szinte mindig változnak. Ha ezeket mindig menteném, amikor változik, akkor elég hamar az írási ciklus végére érne az eeprom.
Gondoltam én is hasonlóra, csak sajnos használatban van az összes külső megszakítás.
Ott másodpercek nem igen számitanak, igy elvben minden 10-20 másodpercben elmenthetnéd az éppen aktuális adatot és kész.
Egy másik megoldás hasonlo a rádioéhoz. 2 tápot használsz, az egyik folyamatos a másik meg a gyujtásrol jön. Ebben a rendszerben akkor mented el az adatokat, amikor megszünik a gyujtás, és teszed Stand-by-ba (sleep) az egész készüléket A hozzászólás módosítva: Júl 4, 2015
A dioda+elko az jo modszer, csak nem az 5V-ra kell tenni, hanem a 12-re. Igy eleg sokaig kapod az energiat az elkobol. Egy 5V-os stabilizator mondjuk 7V bemeno feszig stabilan adja az 5V-ot. 10V-rol 7V-ra eshet a fesz az elkon, azaz 3V esest engedsz meg. Legyen a fogyasztas 20mA. Teszel egy 2200µF kondit. Ezek utan dU = (i * t) / C => 5V = (20mA * t) / 2200µF => t = 330ms. Ennyi ido alatt eleg sok dolgot meg lehet csinalni. Az erzekelesnek meg a didoa elott figyeled a feszultseget egy egyszeru tranzisztorral, vagy barmivel. 11V-nal indul a mentes. De ettol fuggetlenul Massawa jol mondja, a kapcsolt es fix 12V betaplalas jobb. Pontosabban csak a fixrol taplalod, a kapcsoltat csak figyeled.
A hozzászólás módosítva: Júl 4, 2015
Nyilván van közöttük több (külsö IRQ), ami csak akkor ad jelet, ha megy a kocsi. Ha már nincs több ilyen bemeneted akkor használd valamelyiket egy timerrel.pl. ha 30 mp-g nem ad jelet, akkor mentsd el az adatokat.
|
Bejelentkezés
Hirdetés |