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
OK. Köszi már énis rályöttem , csak nemtudom mi baja.
Idézet: „OK. Köszi már énis rályöttem , csak nemtudom mi baja.” Szerintem rosszul köthetted be, nézd át újra.
Én meg azt hittem, hogy sima hétköznapi boiler-ről beszélünk. Így persze más. Egy cirkó vezérléséhez is tökéletes a PIC és az AVR-is.
Sziasztok!
Jobban megnéztem, más gépre kötöttem rá, s ott nem vágta le a tápot. Viszont, megmértem mennyi V-t vesz fel és sajnos semennyit, ezért nem ismeri fel a gép :no: Viszont az én gépemnél még midnig lecsapja a tápot! Szerintetek?
Szerintunk nezd meg hol vana rovidzar, de ezt mar leirtuk!
Szia, nem azért mert értek hozzá, de talán most jövök a homályból.
Én jó ötletnetnek tartom, ha elkötelezed magad gyorsan valamelyik mellett. És abban mélledj el. Én az első két hónapot azzal töltöttem, hogy erre rájöjjek. A következő hónapot azzal töltöttem, hogy a különböző példa programokban meg tudjam különböztetni a stílusbeli, és a lényeges eltéréseket. pl.:
ugyanaz, csak nem minenkinek tetszik. Szerintem... (ha mégsem ugyanaz, írjátok meg, és tanulok belőle
Szerintem nemcsak nem ugyanaz, hanem hibás.
Ilyen operátort("< <") nem ismerek, véletlenül nem "<<" akart lenni? Ha igen: Az 1-es résznél a "dddd"-nek a "cccc"-edik bitjét nullázzuk ki. A 2-esnél "dddd" nem változik.
Köszi szépen, egyenlőre akkor ismerkedek a leírásokkal, megpróbálom értelmezni őket. Amint látom nem lesz egyszerű... Hamarosan jelentkezem! Tuti csak egyre több kérdésem lesz
Köszi mindenkinek!
Igazából nem nehéz, csak az operátorokat kell 1-szer megtanulni.
Ha dddd és cccc char, akkor ez történik: 1-es: fogod a "0b00000001"-et, balra shifteled cccc-szer. Így az 1-es a cccc-edik biten lesz. Ezt negálod a "~" jellel, azaz csupa 1-es lesz kivéve a cccc-edik bitet. Ha ezt össze-ÉS-eled a dddd-vel, akkor annak cccc-edik bitjét kinullázza, a többi változatlan marad. 2-es: a "0b00000000"-t hiába shifteled, továbbra is ugyanaz marad mert a shifteléskor belépő bitek nullások. Így a dddd-vel mindig 0b00000000-át VAGY-olsz össze, emiatt a dddd változatlan marad.
Meg annyit had tegyek hozza, hogy nemcsak az C-ben hasznalatos operatorokat kell megtanulni, hanem matekbol a logikai muveleteket, illetoleg a logikai muveletek igazsag tablazatait illik kivulrol fujni. 1x ubb, mint az 1x1
Szóval az opearátor valóbban "<<" akart lenni "< <"helyett, de beírva szép volt, de megjelenve szétesett. (valahol olvastam, hogy ez lehet, mert "valami"kódnak olvassa, és értelmezhetettlennek mutatja.)
Három javítás után maradtam a kérdéses változatnál. A többit még emésztem...>>>>
Sziasztok!
AVRStudioban szeretnék felprogramozni egy procit, de nem tudom csatlakoztatni az égetőmet, a Tools->Prog funkcióra pedig a "No supported board found! AVRprog version 1.40" hibaüzenetet kapom... Mi lehet a gond? Köszi! TÉÉÉNYLEEEG. Viszont tényleg láttam egy programban a 2.-es verziót és ránézésre egy kezdőnek logikusabbnak (szebbnek, könnyebben érthetőnek tűnt). Rá is kaptam, mint... Amúgy köszi hogy szántál a szájba rágásra időt. Tényleg segített.
Programozó csatlakozik?
Ha USB-s akkor látod az eszközkezelőben. Nem ütközik más eszközzel? Az enyém bluetooth eszközökkel ütközik ezért COM4-re állítom be. avrdude látja? Van vmi konzolparancs a lekérdezésére.
Idézet: „ugyanaz, csak nem minenkinek tetszik. Szerintem...” Szia! Ez nem így van, nézz utána a Bitwise Operátoroknak.
Ez semmilyen műveletet nem végez az 'a' változóval, ugyanis a függőleges "vonal" VAGY műveletet végez a jobb oldali értékkel. Tegyük fel, hogy 'a' értéke 0b00001111 azaz 15 decimálisan. Ha a 0.bitet akarjuk kikapcsolni a fenti művelettel, akkor ezt kapjuk: 0b00001111 0b00000000 VAGY ========== 0b00001111 azaz változatlanul 15 marad. viszont ha ezt a műveletet alkalmazzuk:
akkor a következő történik: tegyük fel, hogy 'a' egy 8bites változó (0...255), 'b' a változtandó bit számát adja meg. Maradjunk az előző példánál (a=15, b=0). Itt az 1-et balra shifteljük b értékkel, azaz 0-val toljuk balra (marad a helyén) így jobb oldali értékre ezt kapjuk: 0b00000001, ebből képezzük a komplemensét ~( ), amivel ezt kapjuk: 0b111111110, majd ezt az értéket össze Bitwise ÉS-eljük: 0b00001111 0b11111110 ÉS ========== 0b00001110 Ezzel elértük a célt, csak a 0.bit váltott 0-ra. A helyes szintaxis így ez lesz:
Hali.
Megakadtam. Sorba kötöttem egy 1n4148-at meg egy 10K-s ellenállást. Feszültségmérőként rákötöttem az egyik Adc lábra. A diódával szeretnék hőmérsékletet mérni. Tudom hogy az 5V-os referenciánál a lépcsőfeszültség kb 4,88 mV. A gond az hogy a szilíciumdióda nyitóirányú feszültsége °C-onként kb. 2 mV-tal változik. De az acd-m értéke csak 4,88mV-onként változik egyet. Hogy tudok így hőmérsékletet mérni ? ( Nem ebböl akarok precíziós hőmérőt csinálni, csak kísérletezem )
ugyanezt mondtam el én is kicsit rövidebben...
Kétségtelen, viszont részletezve jobban megérti más is
pl. alacsonyabb referenciafeszültség?
Elvileg mintha lenne belső 2.56V-os referencia fesz. Bár 1.0V vagy még kisebb kéne.
Rájöttem, hogy az IsoJtagIsp-m átállíthatom JTAG-ről ISP-re, így az egyik áramkör megy, a másiknál viszont verifynál hibát kapok... Gyanakodjak hardware hibára?
Ahha, jogos, csak azt nehezebb megoldani, jobban örültem volna ha szoftveresen megoldható, de látom már hogy nem, így tényleg alacsonyabb referencia kell. Megnézem a belsővel.
Köszi
Hopp, egy erase két írás között megoldja a problémát...
Már ezt is.
De még csak nem is egy közismert típust hamisítanak, hanem egy kevésbé ismertet.
A probléma itt már csak az, hogy a referenciánál nagyobb feszt nem tudok mérni, de mivel nekem a nyitófeszültséget kell mérnem, így nem megehetek a referenciával a dioda nyitófeszültsége alá.
Az ellenállás egyik lába a diódára kerül, másik a tápra?
Így mennyi a dióda nyitófeszültsége? Nemrég játszottam ilyenekkel, 600mV alatti értékeket mértem, ami jóval kisebb mint 2.56mV. Ha max. 100°C-os hőmérsékletet mérnél, akkor is csak legfeljebb 750mV lehet a nyitófesz! Az érzékenységet én növelném több dióda sorba kapcsolásával, mert akkor a fesz változás összeadódik! 2.56mV referenciafesznél 3 diódát sorba lehet kötni... Sőt, mondok mást is! Mi történik ha meghagyjuk az 5V-os referenciafeszt, és 6 darab diódát sorbakötsz? Így 12mV/°C lesz, ami jóval nagyobb mint a kontroller 4.88mV/div felbontása...
Ötlet: egy nem invertáló alapkapcsolás (alacsony offsettel rendelkező erősítővel). Pozitív bemenetre kötni a dióda/ellenállás osztópontját, negatívra egy táp-föld közötti fesz.osztó osztópontját és a kimeneti visszacsatoló ellenállást. A fesz.osztási arányt úgy kell számítani,hogy kb. 500mV köré essen. Konkrétan: a dióda nyitófeszültsége alá a legkisebb mérni kívánt hőmérsékleten. Ezt a delta feszt felerősítjük és ez mindig ott lesz a kimeneten (AD bemeneten). Erre az értékre majd szükség lesz a kalibráláshoz. Erősítésnek pedig a mérési tartomány szab határt. Pl.:nyitófesz:560mV (szobahőmérsékleten), ref.fesz:500mV, A= 25. Ekkor (560mV-500mV)*25=1,5V ez tartozik a 25C-hoz. 35C-nál 2V. Vagyis 50mV/C. Ez már nagyon kellemesen mérhető AD átalakítóval. (Esetleg nem árt egy aluláteresztő szűrő mert természetesen a zajt is erősítjük).
Miért nem mérsz máshogy hőmérsékletet?
A DS18B20 sokkal precízebb, mint egy dióda. |
Bejelentkezés
Hirdetés |