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
Próbáld ki, hogy minden globális változót volatile-re módosítasz! Lesz vagy 16K a végeredmény.
![]() A volatile módosítót kizárólag akkor kell használni, ha a főprogram és az interrupt egyszerre használja a változót. Egyébként lassítod vele a kódot és a méretét növeled. A hozzászólás módosítva: Aug 28, 2013
Atmega8 MCU-val lehet egyszerre PWM jelet generálni, és T1-es lábát másik PWM méréshez használni?
Persze, a Timer2 is tud PWM-et, az ASSR regiszterrel és az aszinkron móddal ne foglalkozz...
A hozzászólás módosítva: Aug 28, 2013
Sziasztok!
Ma megjöttek a DS1820 érzékelők. Egészem pontosan DS18S20+ Ezen kód alapján indultam el: Bővebben: Link Az első gondom a következő volt: 21,68 °C helyett ő 2,168 °C mért. A következő kódrész módosításával jó lett:
Helyett:
Nem értem mert neten akár hol keresgéltem ilyen módosítással/problémával nem találkoztam. Jó ez így? A Read Power Supply (0xb4) mit jelent a parazita és a külső táplálás? Egyébként sokkal stabilabb mint az LM35 még 10m vezetéken is. ![]() Mi a különbség DS18B20 / DS18S20 / DS18S20+ között? Közben kipróbáltam negatív tartományban is, de ott nem mér jól. 127 °C ír ki -1..3 °C helyett. ??? A hozzászólás módosítva: Aug 29, 2013
Szia!
Amikor a kezedbe kapsz egy új (eddig számodra ismeretlen) alkatrészt akkor az első dolog amit tehetsz az, hogy letöltöd az adatlapját és részletesen áttanulmányozod! Ha mindhárom típusnak letöltötted volna az adatlapját akkor láttad volna a különbséget közöttük ![]() Nemrég foglalkoztam és is velül és ha jól emlékszem akkor a B jelzésű érzékenysége sokkal nagyobb, 12 bites felbontással mér ami 0.0625ºC-os lépéseket jelent, az S jelzésű csak 9 bites, ami 0.5ºC-ot jelent, a mérési pontossága mindkettőnek +/-0.5ºC. Tehát ha egyikkel mérsz 23.75ºC-ot és a másikkal 24.25ºC-ot de a valós hőmérsékelt 24ºC, akkor mind a kettő jól működik. Tudtommal ez az egyik legpontosabb közhasználatú hőmérő (vannak ennél sokkal pontosabb ipari szenzorok is). Mindezek mellett még a memória elrezndezése is különbözik (ugyanazon regiszterek más sorrendben vannak). A negatív tartományt úgy tudod egyszerűen kezelni, hogy figyeled az első biteket (ezek az előjelet tartalmazzák) és ha 1-esek (azaz negatív a hőmérséklet) akkor kettes komplemenst számítasz a kiolvasott értékekből majd úgy kezeled mintha pozitiv érték lenne, csak még mellé teszel egy '-' jelet ha ábrázolni akarod ![]()
DS18S20 ->DS1820 utódja, 1:1 csereszabatos. DE van pár új funkció:
- lekérdezem, hogy parazita vagy sem - ha várok az eredményre, akkor 9->12 bit fele eltolódik a kiolvasás pontossága. NEM kell beállítgatni. DS18B20 vs DS18S20 - más protokoll! (azaz a byte-k szervezése mást jelent) - más családkód Mind2 mérési pontossága 0.0625 (felbontás szerint), de lsd adatlap a relatív ill abszolút hibáról. E szerint 0.5 fok _abszolút_ pontosságúak! Bővebben a különbségek: 1Wire - a lap alján....
Igen. Csak más Timer-hez legyen a PWM (Timer0? vagy Timer2?) és máshoz a T1-es számláló (ez a Timer1-en van)
Sziasztok!
Segítsetek, tudom, hogy én vagyok béna, de már őszülök:
LCD-re kiírom a digit és decimal értékét külön-külön: 25 és 625 az eredmény. Ez oké. Majd "egybe gyúrom" a kettőt a fenti sprintf segítségével és az várom, hogy 25.6 jelenjen meg, de nem. 25.625 jelenik meg. Csinálhatok amit akarok a decimal-t nem hajlandó egy számjeggyel visszaadni. ![]() Mi a gond? [off] Tervem az is, hogy kerekítse a decimal értékét. Pl. 625 esetén 6 jelenjen meg, de 655 esetén már 7 jelenjen meg. Ez meg sem merem kérdezni, hogy hogyan kell megvalósítani ![]() A hozzászólás módosítva: Aug 30, 2013
[off]Igen. Így jó.
![]()
Itt a szám azt jelenti, hogy mennyi helyet foglaljon el mindenképp.
1 - tehát 1 karaktert mindig elfoglal. Ez így nem túl szemléletes, de... %3u esetén akkor is 3 helyet foglal el, ha a számod 1 számjegyből áll. A maradék helyet feltölti szóközzel.
Sziasztok!
Fordításkor miért kapom a következő két hibát: Idézet: „ ...\default/../ds_teszt.c:33: undefined reference to `therm_read_temperature' ...\default/../ds_teszt.c:36: undefined reference to `DS18X20_format_from_decicelsius' ” A fenti két függvény a ds1820.c file-ban van. Van egy ds1820.h file is amit a főprogramban (ds_teszt.c) be is húzok:
A ds1820.h file-ban ezek így szerepelnek:
Ennek ellenére az mondja, hogy nem definiált. AS4-et használok. Ugyan így használom az LCD-hez az eljátásokat. Azzal nincs semmi gond. Itt mi lehet a baj?
Megoldódott. A ds1820.c -ben egy '}' lezárás rossz helyen volt.
![]()
Nos van még egy amit nem bírok megoldani:
Adott egy programrész (függvény) ami számításokat és ellenőrzéseket végez. Ezek eredményét szeretném visszaadni a hívónak egy tömbben. Amit vissza szeretnék adni: - Logikai érték 0/1 - Mérés pontosság 1. int32_t - Mérés pontosság 2. int16_t Külön-külön visszatudom adni őket, de egy "csomagban" nem. Ebben kérném a segítséget.
Nos nem.
A %5u kiírja az integert és ha rövidebb, mint 5 karakter, akkor beszúr szóközöket. A %1-u ilyenformán értelmetlen, mert sosem szúr be szóközt, mert nincs 1 karakternél rövidebb szám. A hozzászólás módosítva: Szept 1, 2013
A megoldás a cím szerinti értékátadás:
Sziasztok
Egy char tömböt szeretnék megvizsgálni, de nem tudom hogyan.
Erre gondoltam de ez így nem működik. A hozzászólás módosítva: Szept 3, 2013
Persze, hogy nem működik. Nem adod meg, hogy a tömb melyik eleme kell, hogy valami legyen.
Ez mind a hat elemet összehasonlítja egy string-gel. A hozzászólás módosítva: Szept 4, 2013
Üdv, remélem jó helyre teszem fel a kérdésem, AVR-Doper programozót nemrégiben építettem meg (Hesote-os kittben). Most vágnék bele a programozásba, az ATtiny45-ös cikkben lévő 2 ledes villogót próbálnám megcsinálni, de a következő problémám van AVR Studio 4-ben a read signature gombra kattintva felugrik egy ISP mode error ablak, rákerestem a neten, de sajnos nem nagyon hozott eredményt egy megoldás sem amit találtam.
Esetleg valami ötlet?
A programozó nem látja a célIC-t.
- tápot kap? - 100n kerámakondi ott a tiny tápján? - programozólábakat nemn keverted össze? - reset +5 közt 4k7...10k a felhúzóellenállás?
Bocsi Én írtam rosszul uarton keresztül töltöm fel a tömböt
Így nézne ki a tömb és ezt szeretném vizsgálni ha tele van
Többször ellenőriztem, nincs összekeverve, táp van, a 100n is ott volt, reset-en nem volt ellenállás, betettem egy 4,7k-sat, de nem változott a helyzet.
Sziasztok!
Próbálom minél stabilabbá tenni a kódom, de bizonytalan vagyok magamban. Még mindig a DS18S20 szenzot nyúzom ami már szépen működik. A kódomban van egy while ami akkor ér véget, ha megtörtént a konverzió. Ez így nézett ki:
Ezzel az a gond, ha konverzió közben lehúztam az érzékelőt az AVR-ről (tesztelve, hogy mi történik, ha megszakad a vezeték) soha nem ért véget a ciklus tehát itt "megállt" az AVR. Ezt kiküszöbölendő módosítottam a kódot:
Így mindenképpen kilép. A 11000 tapasztalati érték és itt akad a gondom. Most 16 MHz -en ketyeg az AVR. Az x értéke függ a sebességtől? (Szerintem igen) Ezt, hogy kell korrektül kiszámolni? Mi van csak 1 MHz vagy 8 MHz az órajel esetleg 20 MHz? Úgy tapasztaltam ki az x értékét, hogy mikor végetért a while LCD-re kiírtam az értékét. -55 °C és +125°C között próbáltam. Lehűtöttem -55 °C -ra majd felmelegítettem +125°C-ra. Az x értéke annál kisebb volt minél melegebb volt és annál nagyobb minél hidegebb. -55 °C körül jött a kb. 11000 érték. A hozzászólás módosítva: Szept 5, 2013
Sziasztok!
Használok egy T-Bird 2-es panelt, amelyet Win XP x86 alól tökéletesen tudok programozni JTAG-en keresztül, azonban ugyanez Win 7 x64 alatt nem megy (Could not connect to JTAG ICE onUSB or port COM1 to COM4) Nyilávnvalóan más driver kell a két rendszer alá. Valaki találkozott már ezzel a problémával? Az AVR Studio 4.19-es, x86-os változata fut jelenleg. Létezik belőle x64-es változat is? Okozhatja ez a problémát? A válaszokat előre is köszönöm: palomatE
A drivert a www.ftdichip.com oldalról töltsd le.
Win7 x64 alatt akkor nem ment jól, ha BlueTooth + azon virtuális COM port élt. Valamint az eszközkezelőben nézd meg, hogy COM1...COM4 közt legyen a portszám (COM3-at néha nem bírja, ha van modem/előkészített modemcsatlakozás)
Sajnos még mindig nem alapvető, hogy x64-hez telepítsék a megfelelő 64Bites drivereket!
Nekem is 64 Bites a HW! Mégis Hagyományos (32 Bites) XP-t használok. Az idegesítő, állandóan jelentkező Eszközkezelő driver problémák miatt! ![]()
Jelenleg így néz ki az eszközkezelő. Elegendő, ha minden bluetoothtal kapcsolatos eszközt tiltok, vagy törölnöm is kell hozzá őket?
Fellelhetőek valahol a tisztességes x64-es driverek? Úgy tapasztaltam hogy az ftdichip.com oldalon az x86-os és az x64-es driverek is ugyanabban a zip-ben vannak, és bár a honlapon ketté van véve a két architektúra, valójában a két hivatkozás ugyanarra a fájlra mutat, amelyek letöltésük után bájtra megegyeznek.
Illetve mi a vélemény, ha VirtualBoxban futtatott Win XP x86 rendszeren tenném meg ezt? Elméletileg lehet egy USB portot, mint portot továbbítani a virtuális gép felé. Valaki csinált már ilyet? Tips & tricks?
![]() |
Bejelentkezés
Hirdetés |