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   171 / 176
(#) kameleon2 válasza dB_Thunder hozzászólására (») Márc 16, 2023 /
 
Én vettem mikroszkópot, rátettem egy 19-es monitorra, de használhatatlan volt, mert másfelé nyúl a kezem, mint ahová nézek. Nem tudtam megszokni. Állandóan eltévedtem. Inkább elajándékoztam.
(#) dB_Thunder válasza kameleon2 hozzászólására (») Márc 16, 2023 /
 
Meg kell tanulni, mint a tükörből hegesztést!
(#) vargham válasza kameleon2 hozzászólására (») Márc 17, 2023 / 1
 
Arduino tényleg egyszerű is. Angolul meg már bárminek a megtanulásához érdemes tudni. Úgy is mondhatjuk, hogy az olvasás mellett most már az angol nyelv is előfeltétele, hogy tanulni tudj. Ami amúgy nem baj.
(#) Gafly válasza vargham hozzászólására (») Márc 17, 2023 / 2
 
Igazad van, én is mérhetetlenül fel vagyok háborodva, hogy már nem kell nyelvvizsga sem a diplomához.
Szerintem már a felvételihez is kellene, legalább emelt szintű érettségi (mérnöki pályán természetesen angol).
(#) kameleon2 válasza vargham hozzászólására (») Márc 17, 2023 /
 
A nyelvtanulás az esetemben nem egyszerű. Bár Óvoda után a magyaron kívül oroszul és németül is jól beszéltem, olvastam, de egy gyerekkori agyhártyagyulladás elintézte a rövid távú memóriámat. 7-ben 5-ös voltam oroszból, de 8-ra már csak éppenhogy átcsúsztam. Folyamatosan igyekszem karbantartani, egy élet munkájával, de a szótanulás szinte reménytelen. Van angol kifejezés, amit ismerek, tudom a jelentését, de képtelen vagyok emlékezni rá akkor is, ha 1000x használtam. Úgyhogy igen - elvárható lenne - de esetemben nem megy. Ha menne, már régen külföldre költöztem volna, nem itt kínlódnék.
(#) Jonni válasza kameleon2 hozzászólására (») Márc 17, 2023 / 1
 
Amúgy ha az angolt csak a programozáshoz akarod használni akkor nem is kell túl sokat tanulni, de ha a leirásokhoz is , az más tészta. Amúgy nagyot fejlödött a google forditó már jobban fordit mint 5-10 éve (oroszul én is el olvasok bármit de hogy mit jelent ne kérdezd )
(#) cua válasza kameleon2 hozzászólására (») Márc 17, 2023 / 1
 
En 46 eves voltam amikor nekialltam angolul tanulni. (dokumentaciot tudtam olvasni, de annak nem sok koze van a beszelt angolhoz). Igaz en elesben tanultam
(#) Gafly válasza Jonni hozzászólására (») Márc 18, 2023 /
 
Azért a gépi fordítás mögött is nagyon sok meló van. Például oda kell tenni az adott nyelvre jellemző dolgokat, meg a szakterületre vonatkozó adatbázist is az MI számára.
Persze igazán ezt az emberi fordításra is el lehet/kell mondani.
Jó példa, a múltkor dicsekedtek nálunk, hogy egészen jó próbálkozások vannak a "többnyelvű" dokumentációra. Még a bemutató alatt az egyik Technical Writer kolléga bedobott egy saját dokumentációból szövegdarabot, kiválasztotta a célnyelvként a magyart.
Vicces lett, mert az informatikában teljesen alap stateful-vs-stateless kifejezést szépen lefordította "terhes vagy hajléktalan"-ra.
Egyébként a maga nemében tökéletes a szótár szerinti fordítás, csak itt értelmetlen (csapkodtuk a térdünket a nevetéstől).
Nem ez a szövegkörnyezet volt, és meg is jött a válasz, hogy magyar adatbázissal nincsen rendesen feltöltve, mert a magyar nagyon kicsi és jelentéktelen részhalmaz, az általános adatbázist alkalmazta...
(#) Jonni válasza Gafly hozzászólására (») Márc 18, 2023 /
 
Nem tökéletes de aki nem tud angolul annak nagy segitség
(#) Gafly válasza Jonni hozzászólására (») Márc 18, 2023 /
 
Egyébként kétségtelenül ez a jövő, sok helyen már kinyomtatva is elismerik, például: Ez a leírás gépi fordítással készült.
Akinek nem tetszik, az meg olvassa el eredetiben, vagy szótárazza ki magának.
Például a múlt hétig én sem tudtam hogy a "süpürge" porszívót (is) jelent törökül (bár rájöhettem volna, mert eléggé logikus).
(#) don_peter hozzászólása Márc 25, 2023 /
 
Srácok, STM-re C nyelven írok egy programot és belefutottam egy (számomra) érdekes megoldásba.
Még pedig egy 2 dimenziós tömböt szeretnék pointerként egy függvénynek átadni, majd az pedig feltölti adatokkal. Hogy tudom ezt jól megoldani?

Kérdéses tömb:
  1. uint8_t SaveData[7][3] = {
  2.                 {20, 8, 1},
  3.                 {21, 7, 2},
  4.                 {22, 9, 5},
  5.                 {23, 25, 10},
  6.                 {24, 26, 16},
  7.                 {25, 18, 6},
  8.                 {26, 16, 3}
  9. };

Majd ezt szeretném átadni egy függvénynek, mutatom, prototípus:
  1. void FlashReadDatas(uint8_t **adat);

És maga a rutin:
  1. void FlashReadDatas(uint8_t **adat)
  2. {
  3.         for(int i=0; i<7; i++)
  4.         {
  5.                 for(int x=0; x<3; x++)
  6.                 {
  7.                         adat[i][x] = (uint8_t)Read(Addr);
  8.                         if(adat[i][x] == 0xFF) adat[i][x] = 0;
  9.                 }
  10.         }
  11. }

A rutin lefut, de mikor a tömböt feltöltené, akkor hibára fut az MCU.
Valszeg típus problémája van, vagy a pointer megadása nem jó. Köszi előre is.

Használat lemaradt:
  1. FlashReadDatas(SaveData);
A hozzászólás módosítva: Márc 25, 2023
(#) sdrlab válasza don_peter hozzászólására (») Márc 25, 2023 /
 
Első ránézésre felesleges a dupla csillag! Te címet adsz át, az eddig egy sima mutató! Hogy függvényen belül ezzel a címmel mit kezdesz, az már magánügy....
(#) don_peter válasza sdrlab hozzászólására (») Márc 25, 2023 /
 
Ha egy csillaggal adom meg a következő hiba érkezik:
Idézet:
„subscripted value is neither array nor pointer nor vector”
(#) sdrlab válasza don_peter hozzászólására (») Márc 25, 2023 /
 
Alakítsd át hozzá sima egy dimenziós tömbbé. Majd a függvényen belül oda castolod ezt a címet, ahová akarod...vagy csak simán mutatón keresztül használod továbbra is!
(#) don_peter válasza sdrlab hozzászólására (») Márc 25, 2023 /
 
Őőőő, pont az lenne a lényeg, hogy többdimenziós tömbként, hogy tudom szépen megoldani a feladatot. Nem akarom a tömböt módosítani, azt csak át akarom adni a függvénynek. Más módokon, pl enum, vagy struct-ként meg tudom oldani, de tömbként érdekesebb a dolog.
Erre nincs valami megoldás?
(#) sdrlab válasza don_peter hozzászólására (») Márc 25, 2023 /
 
Ez mennyivel bonyolultabb így?
  1. uint8_t SaveData[] = {
  2.                     20, 8, 1,
  3.                     21, 7, 2,
  4.                     22, 9, 5,
  5.                     23, 25, 10,
  6.                     24, 26, 16,
  7.                     25, 18, 6,
  8.                     26, 16, 3
  9.     };
  10.  
  11.     void FlashReadDatas(uint8_t *adat);
  12.  
  13.     void FlashReadDatas(uint8_t *adat)
  14.     {
  15.             for(int i=0; i<7; i++)
  16.             {
  17.                     for(int x=0; x<3; x++)
  18.                     {
  19.                             adat[i*3+x] = i*3+x;
  20.                     }
  21.             }
  22.     }
A hozzászólás módosítva: Márc 25, 2023
(#) sdrlab válasza don_peter hozzászólására (») Márc 25, 2023 / 1
 
De ha mindenáron ragaszkodsz a 2 dimenziós ábrázoláshoz, hívhatod pl így is...
  1. void FlashReadDatas(uint8_t adat[][3])
(#) don_peter válasza sdrlab hozzászólására (») Márc 25, 2023 /
 
Nyilván ez így működik. De kíváncsi voltam a több dimenzió esetében hogy lehet normálisban megoldani a kérdéses feladatot. A szeparáció miatt jobb lenne a többdimenziós, főként mert azért sokkal több adat lenne.
(#) don_peter válasza sdrlab hozzászólására (») Márc 25, 2023 /
 
Ez szerintem nem jó megoldás, mert így nem pointerként hivatkozik a tömbre és ebben az esetben nem írja felül a tömb értékeit, ha csak nem globális változóként nem adom meg a tömbömet, akkor meg sokkal egyszerűbb megoldása is lenne rá.
(#) sdrlab válasza don_peter hozzászólására (») Márc 25, 2023 /
 
Hát ha globális tömbként a címét adja át, akkor lokálisként miért lenne ez másképp?
(#) don_peter válasza sdrlab hozzászólására (») Márc 25, 2023 /
 

Köszi, lehet még is jó lesz ez a megoldás. Megnézem élesben hogy viselkedik..
Köszi.
(#) benjami válasza don_peter hozzászólására (») Márc 26, 2023 /
 
Így jól működik:
  1. typedef struct
  2. {
  3.   uint8_t d8[7][3];
  4. }tSaveData;
  5.  
  6. tSaveData SaveData =
  7. {
  8.   {
  9.     {20, 8, 1},
  10.     {21, 7, 2},
  11.     {22, 9, 5},
  12.     {23, 25, 10},
  13.     {24, 26, 16},
  14.     {25, 18, 6},
  15.     {26, 16, 3}
  16.   }
  17. };
  18.  
  19. void FlashReadDatas(tSaveData * adat)
  20. {
  21.   for(int i=0; i<7; i++)
  22.   {
  23.     for(int x=0; x<3; x++)
  24.     {
  25.       adat->d8[i][x] = (uint8_t)Read(Addr);
  26.       if(adat->d8[i][x] == 0xFF)
  27.         adat->d8[i][x] = 0;
  28.     }
  29.   }
  30. }
  31.  
  32. void main(void)
  33. {
  34.   FlashReadDatas(&SaveData);
  35. }

Ami fura, hogy amikor a typedef-nél csak simán a két dimenziós tömböt adtam meg struct nélkül, akkor nem jól működött.
(#) don_peter válasza benjami hozzászólására (») Márc 28, 2023 /
 
Igen, itt említettem is, hogy enum és struct-tal meg tudom oldani, de valamiért normál tömbként nem akart működni. Végül amit sdrlab javasolt, azzal oldottam meg a dolgot, de a struct megoldás is szép és letisztult lenne. Köszi.
(#) szitko hozzászólása Ápr 7, 2023 /
 
Sziasztok.

F103C8 -nál két uart-ot használok (tesztelgetem őket). Mindkét uart megszakításban fogad adatokak.
A kérdésem az lenne, hogy a két soros vonal tud egyszerre adatokat fogadni?
A CubeIde-be az USART1-nek állítottam priorítást. Az a fontossabb.
(#) don_peter válasza szitko hozzászólására (») Ápr 8, 2023 /
 
Szerintem olyan nincs hogy egyszerre, ha csak nem szándékosan így idéznéd elő két független eszközről küldve a jelet. Mindig van kis eltérés és szerintem elég ahhoz, hogy te úgy érzékeld, hogy egyszerre tudja kezelni az eszköz..
(#) vargham válasza don_peter hozzászólására (») Ápr 8, 2023 /
 
Amíg a soros bufferben van hely, addig egyszerre.
Ha DMA-val használja, akkor is egyszerre, míg van hely a DMA bufferben.
A perifériák önállóan, a CPU-tól függetlenül működnek, ahogy a DMA is.
(#) AxaGame hozzászólása Ápr 8, 2023 /
 
Sziasztok!

Viszonylagosan kezdő vagyok arm témában. Bevallom a CudeIde és a CubeMx tudott pár meglepetést okozni számomra. Eddig előbb-utóbb megfejettem a működést, de most falba ütköztem, úgy érzem.
Frissítettem a két programot, és most nem tudom lefordítani a projektet.
A kép szerinti fatal error üzenetet adja a rendszer, mert nem talál meg néhány include állományt.

Ha megnézem a fa struktúrában a jelzéseket, akkor a kis piros jelölések mutatják a problémás elemeket.
Az is látszódik, hogy a Drivers/CMSIS tag alá sok olyan dolgot is betett, amelyet én nem is kértem, vagy legalábbis nem volt szándékos.

Egy korábbi fa nézetet is befotóztam, amely mutatja a jelentős különbséget.

Kérdésem a hosszabb bevezető után:
a.) Hogy a manóban lehet kikapcsolni az MX-ben vagy az IDE-ban ezt a sok felesleges kód generálást, amely akár a DSP-haz, RTOS2-höz tartozik? Ezeket én biztosan nem fogom most használni. Szerintem.

b.) Ha nem lehet kikapcsolni, akkor mit kell telepíteni a gépre még, hogy megfelelő include állományok megtalálhatók legyenek?

Köszönöm figyelmet!
Zoli
(#) benjami válasza AxaGame hozzászólására (») Ápr 8, 2023 /
 
Most akkor a CubeMX-et, vagy a CubeIDE-t használod? Csak azért, mert a CubeMX arra való, ha nem a CubeIDE-be szeretnél dolgozni, hanem mondjuk a Keil vagy más egyéb fejlesztői környezetben. Ha a CubeIDE-t használod, akkor meg elegendő ő egymagában. Akármelyikről is van szó, a felesleges dolgokat kapcsold ki a Cube részen (pl. a freertos-t).
(#) vargham válasza benjami hozzászólására (») Ápr 8, 2023 /
 
Ez nem így van.
A CubeMX az projekt (MCU) konfigurátor és kódgenerátor.
A CubeIDE pedig integrált fejlesztőeszköz.
A CubeMX tud CubeIDE projektet generálni, amit ez utóbbival nyitsz meg.
A CubeIDE meg tudja jeleníteni a saját felhasználói felületén a CubeMX-et, de attól az még egy külön szoftver.
(#) vargham válasza AxaGame hozzászólására (») Ápr 8, 2023 /
 
Ha nincs benne semmi titkos, akkor töltsd fel valahová az IOC projektet.
Következő: »»   171 / 176
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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