Fórum témák
» Több friss téma |
Egy kis olvasnivaló .Reference, programming manuals. Nem kis falat az Arduino után.Kitartás
Valahogy én is úgy érzem hogy ez egy kicsit keményebb dió. Angol tudásom sajnos igencsak szegényes és így eléggé gondban leszek. Azért köszönöm.
Én meg értelek!
De úszni sem a mélyvízben szokás tanulni!
Ez így igaz! Már az is nagy előrelépés lenne ha egy nem webes fejlesztőkörnyezetből lefordított kódot fel tudnák tölteni ami mondjuk csak egy led-et villogtat. De sajnos még idáig sem jutottam el. Valahogy az én modulomat nem tudom összekapcsolni sem az IAR sem a KEIL programmal.
Ha idáig eljutnák innentől fogva már lehetne továbblépni a tanulás útján. Visszatérve a magra sajnos nem igazán találok egy kiterjedtebb magyar leírást ami alapján valamilyen képet kaphatnák az ARM Cortex M4 -ről.
Ha villanyszerelő vagy inkább javaslom a PicoPLC-t. Létrában programozhatod a chipet. Azaz elfordítod 90 fokkal az egyvonalas áramúttervedet és kész a program
Én meg inkább javaslom hogy az ilyen vagy ehhez hasonló javaslataidat tartsd meg magadnak!
Villanyszerelő alapismeretekkel, elektronikai elemek és idegen nyelv ismerete nélkül akarsz programozni? Nem a legegyszerűbb megoldást választottad. Félreértettél - nem ledegradálni akartalak, csak lebeszélni. Én magam is több olyan megoldást készítettem, ami kifejezetten villanyszerelőknek szól. Ettől még nem keverném a két dolgot ilyen bátran. Holott jómagam 1988 óta a villamosiparban dolgozom, így műszerészként és információrendszer szervezőként értek a villanyszereléshez. Azaz éppen fordítva ülök a lovon, mint te.
Ezeket például én programoztam:
https://www.youtube.com/channel/UC8Tzp7MIs7KIfeUX3n718PQ Bár papírom nincs róla de elektronikai áramkörök építéséből és javításából is van némi tapasztalatom.
Nem a papír a lényeg. Sok sikert! Az ARM-mel meg fog gyűlni a bajod. Csak azért merem ezt mondani mert ezen fejlesztünk. Nem tudom meg fog-e térülni a számodra a befektetett munka? Szórakozásnak meg elég drága.
Jelenleg ez inkább csak szórakozás, otthoni időtöltés. Abban biztos voltam hogy nem egyszerű móka.
De igen csábító volt. Hasznosabb gép előtti időtöltés mint közösségi oldalakat bámulni.
Ez igaz. Csak annyi jó környezet van, amihez kapsz ingyenes szoftvereket, támogatást, példaprogramokat. De nyilván megvan az okod, miért erre gondoltál.
Keil: ezen az oldalon gyűjtötték össze a legfontosabb tudnivalókat. A Quick Start Guide (Gyors kezdés útmutatója) és a Getting Started (Kezdő lépések) c. dokumentumok írják le számodra az elinduláshoz a teeendőket.
Ha még nem programoztál ARM Cortex-M mikrovezérlőt, akkor nem biztos, hogy ezzel kellene kezdeni, hanem valami kevésbé bonyolult felépítésűvel (ARM Cortex-M0). De ezt csak tekintsd szubjektív magánvéleménynek... A hozzászólás módosítva: Aug 13, 2016
Nos akkor leírom hogy miért is gondoltam én úgy hogy ez kell nekem.
Volt nekem egy olyan elképzelésem hogy belső ethernet hálózaton keresztül küldjek át hangot egyik helyről a másikra UDP csomagokkal. Méghozzá 192KHz -s mintavételen 24bit -felbontással tömörítetlenül. Úgy gondoltam hogy két ilyen modullal, és két Wiznet W5500-es ethernet-vezérlővel ez megoldható lenne. Az elképzelés hogy felélesztem a modulokban az i2s audió buszt dma vezérelten. Az i2s buszt probléma nélkül tudom illeszteni bármihez. A stabil szinkronizáció kialakításához meg az rtp média stream protokollból venném az ötletet. A példakódokból gondoltam kilesni hogy hogyan alkalmazzák ezeket a perifériákat és az alapján kezdenék neki összefaragni a kódot. Elvileg szerintem az összeállítás már alkalmas lenne a feladatra. A hozzászólás módosítva: Aug 13, 2016
SIKERÜLT!!! Működik a KEIL. LED villog.
Ezzel a bonyolult kóddal.
Sőt, még meg lehet felezni a hosszát: van HAL_GPIO_TogglePin függvény is.
Zsír!
Most csináld meg bare-metal-ban, csak hogy értsd mit csinál az a HAL-GPIO-Write. Meg előtte a konfigurálás
Tudom hogy a háttérben ez már nem ilyen egyszerű hanem valami ilyesmi mint ami itt látható:
Bővebben: Link Idézet: Nem, dehogy! Az csak egy másik HAL...„hanem valami ilyesmi” Inkább ehhez hasonlókra gondolj (ez ugyan nem STM32, de most lényegtelen):
A "#define" sorok elmaradhatnak, azok benne lehetnek a mikrovezérlő gyárilag kiadott fejléc állományában.
Nem. Amit most linkeltél az a CMSIS ami egy következő réteg a HAL fölött.
Amit én írtam az meg alatta van. Amikor szipla értékadással közvetlenül a regisztereket írod, mindenféle csiribi-csiribá nélkül.
Amit először linkeltél az a most erőltettetett CubeHAL cucc, amire a másodikként linkelt SPL HAL-t akarják lecserélni (az új F7-es sorozatot nem is adják már ki SPL-el). A gond a CubeHAL-al, hogy még mindig sok benne a bug, van hozzá viszont egy STM32CubeMX nevű alkalmazás, amit mindenképp próbálj ki. Arra találták ki, hogy cube HAL-os inicializációs kódot generálhass vele, viszont nagyon jól látszanak benne a különböző perifériák ütközései, és már azelőtt kiszűrheted az esetleges problémákat, hogy egy sor kódot írtál volna. Emellett arra is jó, hogy megtervezd az órajel konfigurációidat, van egy jól átlátható tervező oldala erre a célra.
A direkt regiszter piszkálgatást felesleges erőltetni a legtöbb helyen. Elég csak akkor ha tényleg időkritikus kódot írsz valahol. A konfigurációknál (ami jóval durvábban fog kinézni, mint egy Arduinonál) sokkal átláthatóbb lesz a kód, ha valamilyen HAL-t használsz (kezdésnek jó az SPL). Tanulásnak egyébként jó ötlet, ha megnézed mi van az SPL utasítások mögött, egyből regiszterírásokat fogsz találni, amiket összehasonlíthatsz a kézikönyvvel.
Szerintem attól még nem CMSIS, hogy az eszköz specifikus header-eket,system,startup felhasználja.A CubeMX, SPL is ezt teszi.
Igen, igen, felületesen néztem csak át. Később rájöttem hogy az "még" nem CMSIS.
Az én led villogtató teszt programom is úgy készült hogy a STM32CubeMX -el előkonfigurált kódot Nyitottam meg a KEIL -el. Aztán kerestem példakódot hogy hogyan is használható a beépített függvénykönyvtár által az a kimenet amin a LED ül.
Régen próbálkoztam ASM -ben PIC16F628 -at programozni de nem nagyon tetszett az áttekinthetetlenség miatt. Aztán kezdtem el tanulgatni a c programnyelvet. Természetesen az sosem baj ha valaki jobban ismeri az eszköz regisztereit, de nagyon sokféle eszköz létezik. Ne keljen már mindent ismerni ha csak mondjuk egy LED -et szeretnék működtetni. Elég akkor mélyebbre ásni ha tényleg feltétlenül muszáj. Ha autót szeretnék vezetni sem kell pontosan ismernem hogyan épül fel a motor. Dolgozzanak rajta a fejlesztők hogy legyen olyan függvénykönyvtár amivel könnyen használhatóvá válnak a perifériák. Ebben a rohanó világban nem érünk rá. Ezért született meg a STM32CubeMX -is.
Ha a timer tulcsordulások = prescalerVal, és a timers 16 bites, és 2 megszakítás között pörgetjük.
Hogyan kapjuk meg az órajelek számát helyesen?: tick = prescalerVal * 0xffff + timersVal vagy: tick = prescalerVal * (0xffff + 1) + timersVal
Üdv.
STM32F030-al játszok próbálom gyorsítani a programot lefaragni ahol lehet. 2 timer fut TIM1 és TIM17 mindegyik interrupttal. Jelenleg a HAL könyvtárakat használom számomra viszonylag egyszerű Kérdésem, hogy lehet e ezen faragni és gyorsabbat írni? A csatolt képen látszik hogy mikor aktív a megszakítás igazából semmit nem csinál hanem csak megszakít majd amikor visszatér folytatja a kimenet billegtetését, de látszik belőle, hogy 4-5us elmegy vele. 48Mhz-en megy ez azért 190 órajel kicsit sokallom.
Miért akarod gyorsítani? Mi más feladat lenne ezalatt?
Ezek azok az idők amik művelet nélküli megszakítások. Osztani szorozni fogok és az jelentősen elnyújtja a dolgokat. Valami ilyesmit találtam hogy a megszakítás végrehajtási ideje 12+ ciklus ez pedig jóval több, ezért gondoltam hogy akkor lehetne még faragni ezen.
A HAL megszakításokon mindig lehet faragni!
Mert borzasztóan pazarlóan bánna benne a proci idővel, és a memoriával! Szerintem az egész nem ilyen amatőr környezetbe való! Ha vannak benne külső rutin hívások? Azokat kel elsősorban megszüntetni. Lehetőleg mindent elkel végezni a megszakításban. Esetleg ha láthatnánk azokat a rutinokat?
Sziasztok!
Van egy bájtokból álló tömböm, amit 32 bites szóhatárra kellene illeszteni, ezért így deklaráltam:
De azt mondja a fordító (stm32f7, arm-none-eabi-gcc), hogy az aligned attribútumot nem veszi figyelembe (warning: attribute ignored). Van valakinek ötlete, mi lehet a baj? Azért lenne fontos, mert be van kapcsolva az adat cache, és a buffert DMA tölti fel, ezért olvasás előtt érvényteleníteni kell a cache-t, viszont csak szóhatárra illesztett címre lehet meghívni az SCB_InvalidateDCache_by_Addr függvényt. |
Bejelentkezés
Hirdetés |