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
Akkor azt hiszem, én el voltam varázsolva. Gondoltam naívan, ha rányomok a Read/Write parancsra, akkor az SCL vezetéken megy az órajel és a proc átáll arra, aztán a MOSI dróton megy az adat, végül a MISO vonalon ellenőrzi, majd leáll az órajel...
Na akkor kezdhetem bedrótozni a prototípus panelt... Ha már itt tartunk, kérdeztem már két mások topicban is, de konkrét 100% -os biztonsággal senki nem tudott rá válaszolni.: Programozás erre van valakinek válasza?
A bootloader-ről nem tudok mondani semmit, de ha én elhasználom a reset lábat, akkor minden újraírás előtt, a fusebit doctoral nullázom az Attiny-t, ez 100%-os módszer.
Az Attiny85 RESET lábát hobbi programozásnál nincs értelme tiltani. Ha kevés a láb, beraksz egy Attiny84-et, nem sokkal nagyobb, mint a 85 és +6 IO pinje van.
Ettől függetlenül a RESET lábat szokták nyomógombnak használni Attiny85-ön. Az ADC működik akkor is, ha RESET vonal van PB5-re állítva. Ilyenkor a RESET feszültségét méred. VCC - [dióda + vele párhuzamosan nyomógomb] - RESET Amikor lenyomod a gombot, a RESET feszültsége 4.5V-ról 5V-ra emelkedik, ezt pedig ADC-vel mérni tudod. Ez a max, amit hobbi szinten érdemes Attiny85-tel kihozni. Szerintem nincs értelme a RESET láb kapcsolgatásával és HVSP-vel idétlenkedni. A hozzászólás módosítva: Okt 16, 2017
Lehet jobban jársz, ha te is törlöd HVSP-val az AVR-t, ha módosítani akarod a progit, mint ahogy mások ajánlották? A kész projektnél úgyis csak egyszer kell felprogramozni az AVR-t.
Ha a reset láb él, és ráteszem a hőmérő szenzor kimenetét, ami 22 foknál kb1 V alatti feszültséget ad ki, folyamatosan resetben tartja a procit, és el sem indul. Először meg is szívtam vele, mert a szenzor be volt forrasztva, és nem tudtam miért nem működik. A szenzor kiforrasztása után rögtön jól működött. Így úgy néz ki, a resetet mindenképp tiltani kell, és szimpla bemenetre állítani. Másik proci használata nem megoldás...
Mi a szenzorod? Mert ha valami passzív, akkor fordítva is be lehet tenni és akkor nem tartja RESET-ben a procot.
Néztem már az Alpha 8F328P (ATmega328P alternatíva) mikrovezérlőt.
Igazából újra az a forgatókönyv, hogy látják a kínaiak, hogy miért drága és mi hiányzik az ATmega328-ból, és fogják magukat és készítenek egy "klónt", ami olcsóbb, jobb és strapabíróbb. A klón sértő, mert jobb mint a klónozott. - DAC is van benne - 1.024 / 2.048 / 4.096V-os belső referencia fesz. - Deadtime-os PWM kiementek vannak - DSC - Max. 32 MHz ... De ha új mikrovezérlőre vágysz, inkább STM8-at javaslok.
Ez inkább már az ATXMEGA-ra hajaz, jó lenne, ha a DAC is lenne legalább 10 bit. A 12bit ADC nagyon szimpatikus meg a 32MHz. STM8-at is nézegettem, igazából nem láttam olyat benne, ami miatt át kellene nyargalni ATMEGA sorozatról. Program/fuse feltöltése érdekelt volna még, ha valaki már kikaparta a gesztenyét. Gondoltam, egy próbát megérne, megnyaggatni, mit is tud, mennyire pontos.
> De ha új mikrovezérlőre vágysz, inkább STM8-at javaslok.
Miért? Ha kicsi az ATmega328, akkor vannak sokkal nagyobb AVR-ek is, amikhez minden meglévő eszköz használható. Ha pedig más, akkor ma már inkább 32 bit, amik közül az ARM dominál, közülük az STM32 szériából vannak egészen olcsó darabok, kiváló szoftverkönyvtár, és fejlesztőeszköz (IDE, fordító) támogatással. Ha csak nem valami munka lenne, én nem kezdenék el ma egy 8 bites platform után megtanulni egy másik (elavult) 8 biteset.
Az STM8 bőven nem elavult, ez az információd nem tudom honnan származik, a Microchip-Atmel nem teljesen sikeres termékfúzió kapcsán még nagyobb erőre kapott mint bármikor.
STM8 sorozatgyártásra sokkal alkalmasabb mint az AVR. Sőt, HDMI CEC, CAN, LIN. Ezek STM8 felé billentik a mérleget. Persze a hobbi kategórián belül valóban nincs túl nagy különbség köztük, max annyi, hogy STM8 nincs DIP tokban, ennek is oka van. De tény, hogy, én is sorozatgyártásra több helyre inkább STM32F0-t terveztem be. De STM32-t most ne keverjük bele a nyolc bites diskurzusba szerintem, mert ott egy belépő Cortex-M0 is már bőven több, mint a legtöbb mainstream 8 bites. Mindamellett elkanyarodtunk a kérdező eredeti felvetésétől, tehát szerintem ezt ne itt tárgyaljuk meg. A hozzászólás módosítva: Okt 22, 2017
Adott egy ATMega328. A Timer1-en megvalósított 10ms-onkénti megszakításokkal szeretném szabályozni a timer0 és a timer2 PWM villogók frekvenciáját. Lehetséges ez?
Új AVR-ek jönnek az új Studio frissítés szerint:
– ATmega4808, ATmega4809 – ATtiny1614, ATtiny3214, ATtiny3216, ATtiny3217 Dokumentumot még nem találtam, a header-be lehet belenézni.
Köszönöm, sikerült is véghez vinni a tervemet. Igaz, némi guglizás is kellett hozzá meg találékonyság. Két pulzáló led villog eltérö frekvenciával, épp, mint a régi mentökön.
Örülök, hogy sikerült! Gratula! Nem hittem, hogy 4 betű ekkora segítség, de legyen így máskor is, és akkor jól fogsz haladni minden projekttel!
Üdv!
Ha valaki tudna AVR programozásról könyvet ajánlani, azt nagyon megköszönném!
Magyarrol nem tudok, nálam egy német vált be amikor ezzel kezdtem. Ez elérhetö angolul is a weben.
Igen, STM32 azért más dolog; ha találok valami új dolgot, ki szoktam próbálni (idő/kedv/ismerősök unszolósa arányában), ezért tapasztalatszerzés céljából próbáltam időt spórolni, ha valaki már sikerrel alkalmazta az LTG-t. Kipróbáltam én az STC 8051-et is, nagyon pörög, nem drága. STM32-t elkezdtem olvasni (apró tesztprogram TFT-re, kiderült, hogy a TFT driver IC hibás stb.) , csak kicsit zúgott a fejem a sok bittől/lehetőségtől (anno 10+ éve kinyomtattam a M128 doksit is (8cm) és végigolvastam, hogy tudjam, milyen lehetőségek vannak, no, STM32F407-nél már vakargattam a fejem), szóval az átállás 32-bitre azért nem olyan egyszerű, főleg, hogy az adott feladatok 90%-hoz ágyúval-verébre. (nem szoktam médialejátszót meg holdraszálló egységeket tervezni) ...és ahogy olvasom, ha valami nem akar működni, akkor igen csak össze kell szedni a lista tudását ("az xx bitet be kell kapcsolni ahhoz, hogy működjön, nem tudom miért, de csak így megy és a sorrend is számít"). Szóval nem ipari méretű tudás/költségoptimalizálás volt a kérdés, csak ki akartam próbálni és a kezdeti bénázásokat átugorni.
Ha elég a belépő szint, javaslom az LPC845-öt CortexM0+, nemrég adta ki az NXP. Olcsó, könnyen programozható, mindenféle kódgenerátor nélkül, kb. XMEGA nehézségű. Ingyenes IDE: MCUxpresso. Egyedül az SC Timer bonyolultabb periféria, Event/State 16/32 bit timer, de van hozzá Cookbook, State generátor
Ránézek arra is. Jahhh, XMEGA-nál 1 sort nem olvastam el a leírásban...most csúzlival az elkészült panelekkel lövöldözöm. Szóval mindig bele tudok nyúlni Az LPC-től egy ismerős óva intett, de valószínű, csak Ő is beleszaladt valami félreérthető dologba (régen volt, valami DMA huncutság). A 32-bitesekben egyelőre az nagyon tetszik, hogy nem spórolnak a RAM-mal, van adattükrözés, de még mindig várom a blokkelforgatást (hát ha egyszer valakinek eszébe jut beletervezni)
A community az kis túlzással nulla, pár kínai NXP-s kószál arra, illedelmesen megköszönik az érdeklődésed, jobb esetben adnak használható információt is. Szóval sok mindent úgy kell összevadászni, bár én M0+-nál tovább nem léptem.A 11u68 is jó sorozat.
Nézegettem STM8-at, más mint az STM32, viszont nem láttam értelmét megtanulni.
A fő problémám az volt, hogy kevésnek tűnt a memória, meg nem is tűnt annyira jónak a periféria készlete, hogy megtanuljam. Nem tűnt jobbnak egy Atmega328P-nél. Az STM32 megéri a fáradtságot, mert tényleg frankó. Nem biztos, hogy igazam van a dologban, de STM32 alatt a gcc nem mondható kimondottan helytakarékosnak. Ha valami 100 byte AVR alatt, akkor 200 byte lesz STM32 alatt. Lehet, hogy azért nagyobb a méret, mert 32 bites a proci, mindenesetre amikor a STM8S103F3P6 8k flash-ét láttam, akkor ugye: nincs az a... Persze lehet, hogy nincs igazam. A hozzászólás módosítva: Okt 26, 2017
Magyarul akad némi leírás a TAViR fórumon de az kevés. Èn német és angol könyvekböl, oldalakról és videókból tanulok. Persze az nagyon fontos, hogy ne csak bemásold a kódot és futtasd, hanem meg is értsed, majd saját magad is változtasd aztán jönnek majd a saját kódok. Közben minden tapasztalatom és megszerzett információm vezetem egy dokumentumban, ami már 44 oldalas. C#-ben programozok és néha síma mezei programozó magyar oldalakat is felkeresek, ha elakadok. Nekem többek között ez a könyv jött be a MAKE sorozatban.
Ha jól emlékszem te C++-ban programozol. C-vel jobb a helyzet, illetve használni kell az optimalizációkat is (viszont óvatosan, pl. a legerősebbnél elrontja az FSMC-s SRAM/LCD kezelést).
Az AVR nagyon jó választás az ATMega328p-vel bezárólag, ha annál nagyobb/gyorsabb kell akkor már inkább egy ARM alapú megoldás. Az ATXMega holtvágány, túl kevés és túl későn (és hozzátehetném, hogy túl drágán is).
Kedves AVR programozók!
Egy olyan problémám van, hogy egy napelem töltésvezérlőn levő ATMEGA8-16AU vezérlőből szeretném kiolvasni a programot, majd egy ugyanilyenre visszaégetni. Mivel nagyon-nagyon régen programoztam (még hallgatóként, 20 éve) hasonló eszközt, sajnos sok mindent elfelejtettem. Eszközöm jelenleg nincs ehhez. A kérdéseim emiatt: 1. Találtam egy STK500-as programozót (USB-s), ez ugye jó ehhez? Típus szerint igen, de gondoltam hátha valaki tud jobbat ajánlani. Megépíteni nem szeretném, jobban bízom a kipróbált dolgokban. 2. A nyákra rá van forrasztva a vezérlő, a kiolvasáshoz feltétlenül le kell szedni a helyéről? Ha nem kell, akkor az eredeti nyáknak kell a bemeneti tápot adnia, vagy feltétlenül a programozónak kell ezt megoldania? 3. Hogyan kell megoldani a programozó és a vezérlő összekötését? Pl. forrasszak a megfelelő lábakra egy-egy vezetéket és kössem össze a programozó megfelelő tüskéjével? Előre is köszönöm a segítséget! Üdvözlettel: olika76
Szia! Mielőtt válaszolok a kérdésekre, fontos, hogy a mikrovezérlő másolásvédett lehet, nem biztos, hogy ki fogod tudni olvasni a tartalmát. Az STK500 jó hozzá, usb esetén driver is fog kelleni, illetve valamilyen szoftver (avrdude, avr studio, stb.). A nyákról nem feltétlenül kell leszedni. Ha a programozó lábakat nem használja, vagy az elektronika nem terheli őket, akkor maradhat a panelon. A tápot bármelyik eszköz adhatja, de lehetőleg csak az egyik. Mivel az eszköz fogyasztása túlterhelheti az usb-t, inkább az eredeti nyák táplálja. Az összekötéshez ráforraszthatod a vezetékeket a panelre. Ha véletlenül foglalatban lévő dip tokos az IC, akkor viszont jobban jársz, ha kiveszed belőle.
> forrasszak a megfelelő lábakra egy-egy vezetéket
Ez egy jó terv. Egyáltalán nem biztos, hogy ki lehet olvasni a programot. Valószínűleg letiltotta a készítő. |
Bejelentkezés
Hirdetés |