Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   72 / 177
(#) rolandgw válasza ZsoltyFM hozzászólására (») Aug 12, 2016 /
 
Egy kis olvasnivaló .Reference, programming manuals. Nem kis falat az Arduino után.Kitartás
(#) ZsoltyFM válasza rolandgw hozzászólására (») Aug 12, 2016 /
 
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.
(#) kapu48 válasza ZsoltyFM hozzászólására (») Aug 12, 2016 /
 
Én meg értelek!
De úszni sem a mélyvízben szokás tanulni!
(#) ZsoltyFM válasza kapu48 hozzászólására (») Aug 12, 2016 /
 
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.
(#) kameleon2 válasza ZsoltyFM hozzászólására (») Aug 12, 2016 /
 
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
(#) ZsoltyFM válasza kameleon2 hozzászólására (») Aug 12, 2016 /
 
Én meg inkább javaslom hogy az ilyen vagy ehhez hasonló javaslataidat tartsd meg magadnak!
(#) kameleon2 válasza ZsoltyFM hozzászólására (») Aug 12, 2016 /
 
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.
(#) ZsoltyFM válasza kameleon2 hozzászólására (») Aug 12, 2016 /
 
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.
(#) kameleon2 válasza ZsoltyFM hozzászólására (») Aug 12, 2016 /
 
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.
(#) ZsoltyFM válasza kameleon2 hozzászólására (») Aug 12, 2016 /
 
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.
(#) kameleon2 válasza ZsoltyFM hozzászólására (») Aug 13, 2016 /
 
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.
(#) icserny válasza ZsoltyFM hozzászólására (») Aug 13, 2016 / 1
 
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
(#) ZsoltyFM válasza icserny hozzászólására (») Aug 13, 2016 /
 
Köszönöm! Nemsokára körülnézek ott.
(#) ZsoltyFM hozzászólása 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
(#) ZsoltyFM válasza icserny hozzászólására (») Aug 13, 2016 /
 
SIKERÜLT!!! Működik a KEIL. LED villog.

  1. while (1)
  2.   {
  3.   /* USER CODE END WHILE */
  4.  
  5.                 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
  6.                 HAL_Delay(1000);
  7.                
  8.                 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
  9.                 HAL_Delay(1000);
  10.  
  11.   /* USER CODE BEGIN 3 */
  12.  
  13.   }


Ezzel a bonyolult kóddal.
(#) Balázs válasza ZsoltyFM hozzászólására (») Aug 13, 2016 /
 
Sőt, még meg lehet felezni a hosszát: van HAL_GPIO_TogglePin függvény is.
(#) cpt.zoltan.simon válasza ZsoltyFM hozzászólására (») Aug 14, 2016 /
 
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
(#) ZsoltyFM válasza cpt.zoltan.simon hozzászólására (») Aug 14, 2016 / 1
 
Tudom hogy a háttérben ez már nem ilyen egyszerű hanem valami ilyesmi mint ami itt látható:

Bővebben: Link
(#) icserny válasza ZsoltyFM hozzászólására (») Aug 15, 2016 /
 
Idézet:
„hanem valami ilyesmi”
Nem, dehogy! Az csak egy másik HAL...

Inkább ehhez hasonlókra gondolj (ez ugyan nem STM32, de most lényegtelen):
  1. // solid state relay connected to PD5
  2.  
  3. #define GPIO_PORTD_DATA_R       (*((volatile unsigned long *)0x400073FC))
  4. #define GPIO_PORTD_DIR_R        (*((volatile unsigned long *)0x40007400))
  5. #define GPIO_PORTD_AFSEL_R      (*((volatile unsigned long *)0x40007420))
  6. #define GPIO_PORTD_DEN_R        (*((volatile unsigned long *)0x4000751C))
  7. #define PD5                     (*((volatile unsigned long *)0x40007080))
  8. #define SYSCTL_RCGC2_R          (*((volatile unsigned long *)0x400FE108))
  9. #define SYSCTL_RCGC2_GPIOD      0x00000008  // port D Clock Gating Control
  10.  
  11. // Make PD5 an output and enable digital I/O
  12. SSR_Init(void){ volatile unsigned long delay;
  13.   SYSCTL_RCGC2_R |= 0x00000008;  // 1) activate clock for Port D
  14.   delay = SYSCTL_RCGC2_R;        // allow time for clock to start
  15.   GPIO_PORTD_DIR_R |= 0x20;      // 2) set direction register
  16.   GPIO_PORTD_AFSEL_R &= ~0x20;   // 3) regular port function
  17.   GPIO_PORTD_DEN_R |= 0x20;      // 4) enable digital port
  18. }
  19. // Make PD5 high
  20. void SSR_On(void){
  21.   PD5 = 0x20;
  22. //  GPIO_PORTD_DATA_R |= 0x20;
  23. }
  24. // Make PD5 low
  25. void SSR_Off(void){
  26.   PD5 = 0x00;
  27. //  GPIO_PORTD_DATA_R &= ~0x20;
  28. }


A "#define" sorok elmaradhatnak, azok benne lehetnek a mikrovezérlő gyárilag kiadott fejléc állományában.
(#) cpt.zoltan.simon válasza ZsoltyFM hozzászólására (») Aug 15, 2016 /
 
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.
(#) csatti2 válasza ZsoltyFM hozzászólására (») Aug 15, 2016 /
 
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.
(#) rolandgw válasza cpt.zoltan.simon hozzászólására (») Aug 15, 2016 /
 
Szerintem attól még nem CMSIS, hogy az eszköz specifikus header-eket,system,startup felhasználja.A CubeMX, SPL is ezt teszi.
(#) cpt.zoltan.simon válasza rolandgw hozzászólására (») Aug 15, 2016 /
 
Igen, igen, felületesen néztem csak át. Később rájöttem hogy az "még" nem CMSIS.
(#) ZsoltyFM válasza csatti2 hozzászólására (») Aug 15, 2016 1 /
 
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.
(#) kapu48 hozzászólása Aug 16, 2016 /
 
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
(#) cimopata hozzászólása Aug 16, 2016 /
 
Ü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.
(#) cpt.zoltan.simon válasza cimopata hozzászólására (») Aug 17, 2016 /
 
Miért akarod gyorsítani? Mi más feladat lenne ezalatt?
(#) cimopata válasza cpt.zoltan.simon hozzászólására (») Aug 17, 2016 /
 
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.
(#) kapu48 válasza cimopata hozzászólására (») Aug 17, 2016 /
 
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?
(#) Balázs hozzászólása Aug 17, 2016 /
 
Sziasztok!

Van egy bájtokból álló tömböm, amit 32 bites szóhatárra kellene illeszteni, ezért így deklaráltam:
  1. uint8_t buffer[BUF_SIZE] __attribute__((aligned(4)));

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.
Következő: »»   72 / 177
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem