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   63 / 178
(#) röntgen válasza zenetom hozzászólására (») Szept 19, 2015 /
 
Arra én is igényt tartanék....jól jönne egy beszédes magyarnyelvű anyag
(#) toto válasza röntgen hozzászólására (») Szept 20, 2015 /
 
Sajnos ez nem az a téma, aminél egy könyvben összefoglalják az egész csínját-bínját. Főleg nem magyarul. Én legalábbis még nem láttam ezt a könyvet.
Így maradnak a tutorial-ok, reference manual-ok, application note-ok, példaprogramok, és az ehhez hasonló fórumok.
(#) cpt.zoltan.simon válasza zenetom hozzászólására (») Szept 20, 2015 /
 
Keil uVision
"Industrial standard".
Feltelepíted és megy. Nincs barkácsolás, működik minden, nincs meglepetés. Vele az ARM-al foglalkozol, nem pedig az IDE-Toolchain kalapálásával.
(#) zenetom válasza cpt.zoltan.simon hozzászólására (») Szept 20, 2015 /
 
Ilyet nem egészen találtam, de a Keil az nem fizetős...?
(#) jefflynn válasza zenetom hozzászólására (») Szept 20, 2015 /
 
32KB-ig a Lite verzió ingyenes.
(#) zenetom válasza jefflynn hozzászólására (») Szept 20, 2015 /
 
Az azért elég karcsú, vagy sok minden belefér? Pl. egy webszerver?
(#) jefflynn válasza zenetom hozzászólására (») Szept 20, 2015 /
 
Nem, az gyakorlatilag semmire nem elég. Ok, ismerkedésre gyakorlásra igen, de munkára (főleg komolyabb CPU esetében) nem.
(#) toto válasza zenetom hozzászólására (») Szept 20, 2015 /
 
A Keil uVision azért nem került eddig szóba, mert már a kérdéskor ki lett zárva a "korlátos" IDE, no meg a "hosszútávra való tervezés" is azt jelentheti, hogy egyszer elfogy az a 32kB.
Keil-lel kezdtem, stabil, jó kis IDE. Azt gondoltam mint Bill Gates, hogy xy kB elég mindenre.
Csakhogy ha mondjuk include-olsz egy math libraryt, akkor kb. 10kB-tal megdobja a kód méretét (ez mondjuk GCC esetén -O0 optimalizálással, de Keil sem lehet sokkal jobb). Grafikus LCD esetén beraksz mondjuk pár karakterkészletet, és hip-hop beszól a Keil, hogy túllépted a korlátot. Egy webszerver helyfoglalásáról sajnos lövésem sincs.
(#) zenetom válasza toto hozzászólására (») Szept 20, 2015 /
 
Hát ezek alapján a 32kB semmire sem elég. Egyelőre maradok a CooCox-nál.
(#) rolandgw hozzászólása Szept 20, 2015 /
 
Bocs az információs kérdésemért.Látom,hogy az ST-k népszerűek ezen a téren.Az NXP-t pl. miért nem preferálják ennyire? Nem drágábbak és van egy 256k-ig free LPCXpresso IDE hozzá.
(#) vzoole válasza jefflynn hozzászólására (») Szept 20, 2015 /
 
Hát én már grafikus menürendszert is csináltam lcd-re 32kB-ból. Másik, hogy mindenre megvan a megoldás, így a méretkorlátra is.
(#) toto válasza rolandgw hozzászólására (») Szept 20, 2015 /
 
Amikor én néhány évvel ezelőtt elkezdtem hobbi szinten ARM mikrokontrollerrel foglalkozni, akkor körülnéztem, hogy melyik gyártónak vannak a legkönnyebben beszerezhető cuccai, amik nem csak a kontrollereket jelentik, hanem a programozót és a fejlesztő paneleket is. Én nem látok azóta sem ilyen olcsón ilyen választékot más gyártó esetében fejlesztő kitekből. Biztosan ugyanolyan jók az NXP kontrollerek is, de itthon van már egy marék STM32 IC-m és egy doboznyi fejlesztő panelem. Amíg ezekkel meg tudom oldani az adott feladatot, addig pénztárca- és energia-takarékosségból nem váltok.
Amíg pedig vannak ingyenes, jó és több kontrollermárkát is támogató IDE-k, addig nem akarnám magam korlátozni egy gyártóspecifikus IDE-vel (hátha egyszer mégis váltani kell )
(#) cpt.zoltan.simon válasza rolandgw hozzászólására (») Szept 20, 2015 /
 
Én pl NXP-t használok.
Jobb modulokat találtam hozzá: LPC4088, Cortex-M4

Igaz, ha az STM32-vel gyártanának ilyen all-in-one board-ot, akkor tuti csere lenne. De egyébként nem gáz a különbség, bár ezekhez az NXP modulokhoz opció a 32bit-es SDRAM, ez mindenképpen előnyük.
(#) Balázs hozzászólása Szept 27, 2015 /
 
Sziasztok!

STM32F4Discovery panelen próbálnám beüzemelni az UART-ot az alábbi kóddal:

  1. GPIO_InitTypeDef portInit;
  2.         __GPIOB_CLK_ENABLE();
  3.         portInit.Pin=GPIO_PIN_6|GPIO_PIN_7;
  4.         portInit.Mode=GPIO_MODE_AF_PP;
  5.         portInit.Pull=GPIO_NOPULL;
  6.         portInit.Speed=GPIO_SPEED_LOW;
  7.         portInit.Alternate=GPIO_AF7_USART1;
  8.         HAL_GPIO_Init(GPIOB,&portInit);
  9.         __USART1_CLK_ENABLE();
  10.         bluetoothUART.Instance=USART1;
  11.         bluetoothUART.Init.BaudRate=9600;
  12.         bluetoothUART.Init.WordLength=UART_WORDLENGTH_8B;
  13.         bluetoothUART.Init.StopBits=UART_STOPBITS_1;
  14.         bluetoothUART.Init.Parity=UART_PARITY_NONE;
  15.         bluetoothUART.Init.Mode=UART_MODE_TX_RX;
  16.         bluetoothUART.Init.HwFlowCtl=UART_HWCONTROL_NONE;
  17.         bluetoothUART.Init.OverSampling=UART_OVERSAMPLING_16;
  18.         HAL_UART_Init(&bluetoothUART);


Működik is szépen, csak éppen a baudrate nem jó. Oszcilloszkóppal mérve 9600 helyett 50000 bps az átviteli sebesség. Ha arányosan kisebb számot írok be (1843), akkor megkapom a kívánt 9600-as baudot, és tudok szépen beszélgetni a Bluetooth modulommal, de ez így akkor sincs rendben. Valószínűleg nem órajelprobléma, mert több időzítő és PWM modult is használok, azok helyes sebességgel mennek. Van esetleg valakinek ötlete?
(#) vzoole válasza Balázs hozzászólására (») Szept 27, 2015 /
 
Annyi ötletem van, hogy meg kéne nézni mi kerül a USART1->BRR regiszterbe. Abból már kiderül hogy mennyivel oszt le, és abból pedig, hogy mennyi az órajeled. Ezzel már el lehet indulni hibát keresni.
(#) Topi válasza Balázs hozzászólására (») Szept 27, 2015 /
 
Először VZoole mérését célszerű elvégezned, másodsorban pedig több mint valószínű, hogy amit kizártál, az lesz a probléma.
USART1 és USART6 PCLK2 forrásról jár, a többiek PCLK1-ről. Ezeket a köztes periféria órajeleket is ellenőrizd, hogy konfiguráltad, ott lesz a kutya elásva. Az, hogy a PWM megy, nem bizonyíték semmire.
(#) Balázs válasza Topi hozzászólására (») Szept 27, 2015 /
 
Köszönöm a javaslatokat mindkettőtöknek!

Az órajeleket kiírattam:
SYSCLK=168MHz
PCLK1=42MHz
PCLK2=84MHz

Ha a BaudRate-hez 9600-at írok, akkor BRR=1667. Ebből a baud 84MHz/(1667)=50.4kHz, vagyis tényleg kijön az, amit mértem. Vajon a HAL miért állítja be hibásan a BRR-t?
(#) Balázs válasza Balázs hozzászólására (») Szept 27, 2015 /
 
Utánaszámolva úgy tűnik, hogy a HAL 84 helyett 16 MHz-nek veszi a PCLK2 órajelet. Ami azért furcsa, mert belenéztem a forrásokba, és úgy látom, az UART inicializálásakor pontosan azzal a függvénnyel kéri le az órajelet (HAL_RCC_GetPCLK2Freq), mint amit én az előbb a kiíráshoz használtam, tehát elvileg jó eredményt kell kapnia.

  1. #define UART_BRR_SAMPLING16(_PCLK_, _BAUD_)            ((UART_DIVMANT_SAMPLING16((_PCLK_), (_BAUD_)) << 4)|(UART_DIVFRAQ_SAMPLING16((_PCLK_), (_BAUD_)) & 0x0F))
  2. ...
  3. ...
  4. ...
  5. huart->Instance->BRR = UART_BRR_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate);
A hozzászólás módosítva: Szept 27, 2015
(#) Balázs válasza Balázs hozzászólására (») Szept 27, 2015 /
 
Megoldódott a probléma. Új projektet generáltam Eclipse-ben, és - fogalmam sincs mitől, de - most jó.
(#) vzoole válasza Balázs hozzászólására (») Szept 28, 2015 /
 
Hát az eclipse fog még meglepetéseket okozni , nekem nem volt valami pozitív az élményem vele.
(#) Balázs válasza vzoole hozzászólására (») Szept 28, 2015 /
 
Valószínűleg igazad van, nekem sem először volt hasonló esetem az Eclipse-szel. De sajnos a többi ingyenes fejlesztőkörnyezetnek is vannak ilyen nyűgjei, fizetőset vagy kódméret limiteset pedig nem szeretnék.
(#) cpt.zoltan.simon válasza Balázs hozzászólására (») Szept 29, 2015 /
 
Meg lehetne próbálni a NetBeans-t. Én annó odáig eljutottam vele, hogy (Linux alatt), a GCC-ARM-GNU-NONE-EABI-val szépen együtt működött és fordított. Utána St-Link OpenOCD-vel hajtva és elvileg rendben is van.
Ezeknek a göncöknek számomra a legnagyobb hátránya hogy nagyon hiányzik/hiányos a regiszterek megjelenítése. Eclipse alá van egy kiegészítés ehhez, de szerintem NetBeans sokkal kezesebb, egyszerűbb. Nem védeni akarom mert Microchop szerintem egy szakadékba zuhan éppen, de a NetBeans az Eclipse helyett szerintem egy nagyon jó döntés volt.
Csak hogy lebeszéljelek az Eclipse alapokról.
(#) Balázs válasza cpt.zoltan.simon hozzászólására (») Szept 29, 2015 /
 
Köszönöm a javaslatot! Per pillanat némileg rá vagyok kényszerülve az Eclipse-re (nem egyedül fejlesztek), de mindenképp meg fogom nézni ezt a NetBeanst, eddig nem ismertem.
(#) jefflynn válasza jefflynn hozzászólására (») Okt 15, 2015 /
 
Válaszolok a saját, régi kérdésemre, hátha valakinek segítek vele a későbbiekben. A processzor NUC240 (Cortex M0), és így kell kiolvasni a veremből, hogy hol történt a WDT timeout. Nyilván előtte engedélyezni kell a WDT megszakítást.

  1. void WDT_IRQHandler(void) {
  2.   uint32_t addr;
  3.   addr = __get_MSP();
  4.   WDT_Address = *((uint32_t *) (addr+0x28));
  5.   .
  6.   .
  7.   .
  8. }
(#) ColoradoKid hozzászólása Okt 26, 2015 /
 
Sziasztok!

Szeretnék PC és MCU között kapcsolatot teremteni, és adatokat átvinni PC-re, vezérlő utasításokat pedig az MCU-ba. Mondjuk szeretnék csinálni egy saját EPROM égetőt. A kérdésem az lenne, hogy mi a célravezetőbb szakmai szemmel:
a) VCP kapcsolat létrehozása, majd pedig a PC oldalon egy kisebb SW írása, ami vezérli az MCU-t, írja/olvassa az adatokat VCP-n keresztül, vagy
b) VCP kapcsolat és FatFs használata, azaz az MCU rákapcsolódik a fájlrendszerre, és azzal operál, a PC-től csak a vezélést kapja VCP-n. Itt lenne is egy kérdés pluszban: lehetséges párhuzamosan használni a két csatornát ("class"-t)? Tehát az megoldható, hogy pl. terminalon adom ki a vezérlő utasításokat, és közben az MCU írja/olvassa a HDD-t?

Az a) esetben milyen programnyelvet érdemes választani, amivel könnyen hozzáférni a soros porthoz (GUI annyira nem lényeg most)? Pl. C/C++/C#/Java ?
(#) ColoradoKid válasza ColoradoKid hozzászólására (») Okt 26, 2015 /
 
Végiggondolva a b) verzió úgy nem is működik valószínűleg, ahogy gondoltam. Tehát eleve NTFS fájlrendszer van a PC-nél, másrészt, ahogy nézem, ez a FatFs API igazából mindenféle flash drive kezelésére van, ahol az MCU a host, nem pedig PC HDD kommunikációra.
Erősítsetek meg, úgy tűnik, marad a PC oldali szoftver készítés. A feladat ugye az lenne egyébként, hogy le kéne menteni a binary fájlt az adott EPROM-ról, hogy működjön offline is az égetés, ne csak azonnali (párhuzamos) másolással.
A hozzászólás módosítva: Okt 26, 2015
(#) vzoole válasza ColoradoKid hozzászólására (») Okt 26, 2015 /
 
Mi lenne, ha az egészből kihagynád a PC-t?
Lenne egy flash-ed, amibe elég sok eeprom képét lementhetnéd, és akármikor visszatölthetnéd.

PC esetén az a) változat a nyerő. Szerintem pc programot sem kell írnod, egy terminal program megteszi.
(#) icserny válasza ColoradoKid hozzászólására (») Okt 27, 2015 /
 
Ha USB vezérlővel ellátott mikrovezérlőről van szó, akkor c) változatként az USB HID device módot javaslom. Ehhez is írni kell egy alkalmazást a PC oldalon, akárcsak az a) esetben, de a HID kapcsolat robusztusabb, mint virtuális soros port.

A b) változatban nem kell hostnak lennie az MCU-nak, hanem a saját memóriájában (vagy az MCU-hoz kötött SD kártyán) kezelt fájlrendszert teszi elérhetővé a PC számára.

Kompozit eszköz is megvalósítható (pl. USB flash drive mód és VCP mód párhuzamosan).
(#) killbill válasza ColoradoKid hozzászólására (») Okt 27, 2015 /
 
Idézet:
„Az a) esetben milyen programnyelvet érdemes választani, amivel könnyen hozzáférni a soros porthoz”
Linux-on, Mac OS X-en pl. tökmindegy, mert a sorosvonal egy sima file, mondjuk /dev/ttyUSB0. Megnyitod és irod/olvasod. Persze a baudrate és egyéb beállításokhoz kellenek ioctl hívások, de C-ből nincs benne semmi különleges.
(#) icserny válasza ColoradoKid hozzászólására (») Okt 27, 2015 /
 
Idézet:
„Az a) esetben milyen programnyelvet érdemes választani”

Windows esetén C/C++, C#, Java vagy Processing egyaránt használható hozzá - amelyik neked szimpatikusabb...
A hozzászólás módosítva: Okt 27, 2015
Következő: »»   63 / 178
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