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
Ismeritek ezt az Arduino szimulátort? Próbálgattam, tetszik.
https://wokwi.com/
Ez jopofa, eleg jo dolgokat lehet osszerakni es tesztelni vele.
Kedves Fórumtársak!
A feladat olyan négyszögjelgenerátor készítése, melynek frekvenciaátfogása egyetlen potival 100 Hz-től 50 kHz-ig terjed, az elforgatás szögével lineárisan változik a frekvencia, és nem lehet benne kapcsolós sávváltás! A mellékelt 3 sor Arduino (szinte) tudja ezt, viszont a "tone" üzemmódjából adódóan a jel frekvenciája "csak majdnem" stabil... és ez a "majdnem" roppant idegesít... Három hete szinte éjt-nappallá téve kutatom a netet, de nem találtam olyan néhány sort, melyet szerény képességeimmel fel tudnék fogni, és még a feladatra is alkalmas. Nem kell, hogy PWM, meg LCD, meg csili-vili stb, csak adjon stabil négyszöget. Ebben kérem szépen a segítségeteket. Köszönettel; Tambi. A hozzászólás módosítva: Júl 8, 2022
A potméter legalább helikális? Még azzal együtt is eléggé "Mission impossible" a probléma...
Ha a tartományt csak 100 Hz-es pontossággal szeretnéd felosztani, a pl. 5V-os referenciádat 1 mV-os pontossággal kellene felosztani. A "sima" potenciométeren ez kb. 0,05 fokos "lépésnek" felel meg, de egy 10 fordulatú helipotnál is 0,7 fokos az eltérés. Hogyan fogod ezt beállítani? A referenciádnak van zaja, a potméternek van beállási pontatlansága, van zaja, nem csoda ha nem lesz stabil. Mellesleg milyen stabilitást szeretnél? Van valami, ami kijelzi, hogy mekkora a frekvencia, vagy csak a potméter a "kijelző"? Ha van kijelző, akkor én a potméter helyett két nyomógombot használnék. Fel-le, hosszan nyomva nagyobb lépésekkel, vagy gyorsabban lépegetve állítanám be a frekvenciát.
A potit ki kell hagyni, helyette enkóderrel tekergesd a frekit. Ekkora átfogást analóg módon nem lehet
Köszönöm kedves Kendre!
A valódi feladat cnc step/dir ac-szervomotor kísérleti, beépítés előtti (próba)mozgatása. A motor 1000 step/fordulat üzemmódban működik, így a megadott 100Hz-50kHz között 0,1 - 50 ford/sec sebességgel lesz járatható. Valójában teljesen mindegy, hogy 0,1 vagy 0,3, illetve 47 vagy 51 ford/sec-el fog járni, nincs jelentősége. Viszont kell tudni nagyon lassan, és "teljes gázon" is járatni anélkül, hogy bármilyen (át)kapcsolót alkalmaznánk, mivel az egy "rántást" generálna a motor illetve a mozgás üzemében. A beállítás pontatlansága kisebb gond, mintha 100Hz-től 50 kHz-ig 3600 fokot kellene tekerni a potin. Az Arduino-hoz rengeteg "felhasználókímélő", magamfajta laikusoknak íródott kész könyvtár van, bizonyára létezik olyan is, mely nem a tone-al hanem Timer-el oldja meg a feladatot anélkül, hogy belekeverné "a keresztannya térgyekalácsát" is... én eddig nem találtam, azért fordultam hozzátok. Előre is köszönöm!
Köszönöm, kedves Pipi!
Muszáj neki így működni... Legvégső esetben marad a tone, de ez csak a "nincs jobb" kategória...
Próbáld meg az analóg mérés okozta zajt ki szűrni átlagolással.
Valahogy így:
Bár a tone hang frekvenciák előállítására készült a felső határa elvileg 20KHz lehet!
Miért lenne bármilyen rángás... Szoftverből olyan gyorsulást/lassulást csinálsz amilyet akarsz, a bemenő kezelőszerv ebből a szempontból lényegtelen. Ha mindenépp poti akkor, mint írták átlagolj, dobd el az alsó biteket, akkor a mért érték kevésbé ugrál. Vagy tegyál két potit, mint a tákonon is van, egy durva és egy finom beállítást, ha mindkettőt "kevesebb" biten digitalizálod (pl csak 256), sokkal pontosabb lesz a végeredmény
Amennyiben ekkora átfogásra van szükség, talán egyszerűbb lenne sima keveréssel megoldani uC helyett...
Kell egy 1MHz-es fix (kvarc-)oszcillátor és egy feszültségvezérelt / potival szabályozható változtatható frekvenciájú 1.0001 - 1.05 MHz között. A két jelet keverni és átküldeni egy 100-200 kHz-es aluláteresztő szűrőn. A hozzászólás módosítva: Júl 11, 2022
Kedves Barátaim!
Köszönöm szépen mindenkinek a segítséget; hamar kiderült, hogy analóg vagyok egy digitális világban... Marad az 555 10n - 1k + 10k +1M, kimenetről visszacsatolva. Egyébként az AVR jeleit Rigol DS1054-el nézve meglepő módon a fentebb említett tone(13,f) függvény alkalmazása volt a legkevésbé instabilabb. Köszönöm még egyszer mindenkinek!
Egy kis orom-bodotta (legalabbis nekem) a mai naprol:
Olvastam mar ilyen-olyan kinlodasos, nem mukodos panaszokat es blogokat atmel mcu es Apple silicon talalkozasarol, ezert mar elore belenyugodtam, hogy az uj M1Pro chip-es macbook-om nem lesz alkalmas (egyelore) erre, majd marad a regi linux laptop hobby-ra, bar ruhellek ket geppel babralni. Aztan miutan bealllitottam ma mindent az uj szerzemenyen, gondoltam belecsapok a lecsoba, jojjon a CLion es a PlatformIO (amugy Pycharm-ot es WebStorm-ot hasznalok foallasban). Telepites (csont nelkul), teszt es voila. Semmi fennakadas, ment mint az agybavizeles. Erre persze verszemet kaptam, felraktam az avra es avrdude parost kulon is, lassuk mire megyek az attiny10 eseteben az assembler-el es a regota hasznalt Makefile-os munkamenettel: sima ugy, semmi fennakadas. Azt kell mondjam elegedett vagyok, ez nagyon kellemes meglepetes volt.
Sziasztok!
Egy kis segítség kellene. Egy AVR-be kellene egy .bin kiterjesztésű fájlt beégetni. Milyen égető szoftver kell hozzá? Hardver egy USBasp lenne.
Sziasztok!
Atmega162-ben van valamilyen program, gondolom bootloaderrel. Van e olyan megoldás amivel HARDVERESEN le lehetne tiltani a proci újra programozási lehetőségét??? Válaszokat előre is köszönöm!
Levágod az ISP lábakat.
"Előtte" egy fdti232 usb-uart van. Nem tudom, hogy az áramkor többi része használja e ezeket a misi-mosi lábakat ezért nem vagdosnék vakon !
Ezt bootloader dolgot sem értem, hogy lép be a proci programozási módba? ISP-n programoztam már, az világos, Arduinót is, de ott meg nem érdekelt eddig még, hogy mi megy végbe, és hogyan Az lenne az lényeg, hogy usb kábelen keresztül véletlen se lehessen firmware-t frissíteni! A hozzászólás módosítva: Aug 9, 2022
Idézet: „nem érdekelt eddig még, hogy mi megy végbe, és hogyan” Érdemes lenne utánanézned az AVR eszközök programozásának. Tisztázni kellene pár dolgot. Hogyan lehet programozni az eszközt? USB-n keresztül? Ezt szeretnéd megakadályozni? A legegyszerűbb törölni a bootloadert. Ha ez nem lehetséges, és nem kell másra az UART, akkor vágd el. A hozzászólás módosítva: Aug 9, 2022
Én nem szoktam Arduinot "elpocsékolni" fix céláramkörben, hanem beleírom a programot egy chipbe, és azt használom fel. Lehet neked is megoldás ez.
Ahhh..
Ez egy kész áramköz, nem Arduino!! Nem én csináltam, nem én programoztam, viszont szeretném hogyha más (én) se tudjon firmware-t frissíteni usb-n keresztül, a gyári hozzá járó szoftverével sem! Ha kell beleírom a frissítést az ISP porton keresztül. vargham! Az UART kell, azon keresztül beszélget a PC-vel Idézet: „Érdemes lenne utánanézned az AVR eszközök programozásának.” Ha van erre megoldás akkor igen! Van ajánlásod ehhez?? Valami érthető észosztás.. Nem tudom hogy ki lehet úgy venni a bootloadert, hogy a normálisan működjön tovább. Jó esetben **.hex ami elérhető... Azt nem tudom, hogy fizikálisan hogy lépteti a bootloader a uC-t programozás módba....
Szia!
Nos,a hw módosítás akár nagyon nyakatekert megoldás is lehet. Sok idő, energia. És nem is biztos, hogy szép lesz. Tudom, hogy ez volt a kérdésed, de talán van gyorsabb megoldás. A bootloader megoldása sokféle lehet. Talán nincs semmi extra benne. Ha ebből indulunk ki, akkor, első körben megnézném, hogy a BOOTRST (bootloader reset vector bit 233. oldalon) átállítás megoldja e a bootloader megkerülését. A chip már nem a boot címen indulna reset után, így el sem indul a bootloader programja.
Ez a bit olvasható, írható akkor is ha le van zárva a program kiolvasás ellen?
Ha elérhető a hex, akkor egyszerű: ISP-n tedd fel. Ezzel törlöd a bootloadert.
Ha a Lock bit byte -ban be van kapcsolva a védelem, akkor nem írhatóak a Fuse byte -ok.
Idézet: „The status of the Fuse bits is not affected by Chip Erase. Note that the Fuse bits are locked if Lock bit1 (LB1) is programmed. Program the Fuse bits before programming the Lock bits.” Első lépésben kiolvasod a Fuse és lock biteket. Ha pótolhatatlan vagy nagyon drága az eszköz, akkor az egész próbálkozás előtt, érdemes lehet kiszedni a chip-et és egy új, üressel próbálkozni. Így lesz egy visszaállítási lehetőséged. A bootrst bitet application reset -re állítod. Következő lépésben jöhet a teljes törlés(ha nem új chip-el csinálod). Mert csak teljes törléssel lehet visszaállítani a lock -ot. Utána, ahogy vargham is írta, a hex birtokában feltöltöd a firmware-t, majd beállítod a Fuse biteket. Remélhetőleg fog működni.
Egy LM75 -tel van gondom. Bascom-ban programozom. A probléma, hogy ha felmelegítem az ic-t és hagyom hülni akkor a hőmérséklet egyes pontokon nem lineárisan esik. pl. 29,5-29,0-28,5-28,0-29,0-28,5-28,0 ... érthetetlen! Ugyan ez van 32c foknál.
Volt már valakinek ilyen gondja ?
Tedd vizbe, vagy hűtőbordára, akkor is csinalja-e
Nem lehet, hogy túl sűrűn/gyorsan olvasod?
3mp-enként olvasom. Végul is nyákot melegítem, ztán figyelem.
Most reggel kipróbáltam ha a kezemmel melegítem és a hőmérséklet emelkedik akkor nem jelentkezik a probléma. Biztosan valami zavar lesz. Az adaptere gondolok. Egyébként ez egy próbaáramkör , a DS1307 -nek nem volt baja ettől a táptól.
Megoldódott a probléma. 4db 10 cm-es kábelen lóg az lm75 panelja. Levettem a 100nf-os szűrőkondit a tápról és jó lett. Igaz egy 100nf van a táp-ponton ahova be van kötve a panel. Kipróbáltam egy 1,5m-es gubanckábellel... Tökéletes.
|
Bejelentkezés
Hirdetés |