Fórum témák
» Több friss téma |
Sziasztok!
Úgy döntöttem, hogy megrendelek egy STM32F407 vagy 429 Discovery boardot és ha időm engedi suli mellett ismerkedésbe kezdek az ARMokkal. A suliban DSPket tanulunk jelenleg, Blackfin processzorral. Inkább csak elmélet, hogy idézzem a tanárt "...a filozófiát kell megértenünk, mert nincs idő, hogy a mélyére hatoljunk a dolgoknak." Úgy érzem 1,5 év múlva a "filozófia" kevés lesz. Észrevettem, hogy a programozás nem egyszerű, időigényes elsajátítani. Kérdésem tehát, hogy tudtok esetleg nekem ajánlani valamilyen irodalmat kezdésnek? Milyen fejlesztő programokat érdemes használni? A KEIL-el közelebbi barátságban vagyok. Vannak ettől jobb, ill. hasznosabb programok? Valakik használnak valamilyen "kókuszt" is, amit én nemismerek, de talán ingyenes. Egy ilyen programozói tudás STM processzoron mennyire hasznosítható más gyártók ARM processzorain? Köszönöm a válaszaitokat. Remélem megtanulom majd programozni őket.
- Joseph Yiu: The Definitive Guide to the ARM Cortex-M3 Bővebben: Link1
- The Insider's Guide To The STM32 ARM Based Microcontroller Bővebben: Link2 - Geoffrey Brown: Discovering the STM32 Microcontroller Bővebben: Link3 - Application Note 230: uVision Lab for the STM32F4 Discovery Board Bővebben: Link4
Köszönöm szépen.
![]()
Tudna valaki példát mutatni olyan struktúra létrehozására Keil-ben ahol nem char, short,long méretű, hanem adott bithosszúságú elemekből van összerakva?
Amit szeretnék: Az SD kártya CSD regisztere 128 bit hosszú, ám a következő hosszúságú elemekből adódik össze: 1,2,3,4,6,7,12 bit. Ezeket az elemeket szeretném létrehozni egy 128 bitnyi memória területen.
Bitfield, packed struct. 128 bitre meg 4*32 bites long tipus Vagy ahogy akarod, lasd a linken). Itt ir valamit a packed strukturakrol Keilre vonatkozoan.
Bővebben: Link A hozzászólás módosítva: Nov 18, 2013
Köszönöm, valami hasonlón indultam el én is. Most már csak az a részre kéne ráfeküdnöm hogy a hardveres "unused" biteket a saját struktúrámban hogy jelenítsem meg.
![]()
Ugy, hogy mondjuk dummy_1, dummy_2, satobbi neven hivod oket. De jo ha tudod, hogy a C szabvany nem garantalja, hogy a bitfiled-ek hogyan lesznek a valosagban osszerakva, ezert aztan nem tul szerencses dolog valos HW regiszterek reprezentalasara. A mikrocsip csinalja ezt a pic-ek HW regisztereinek definialasara, de az mikrocsip, es csak a sajat forditojukkal garantalt a mukodese. Szoval arra akarok kilyukadni, hogy ha most megcsinalod, es mukodik, akkor semmi garancia nincs arra, hogy egy masik (akarcsak ujabb verzioju) forditoval is mukodni fog. Ha fogod az intet, shifteled balra 11-el, majd maszkolod ((1<<12)-1)-el, az mindig minden C forditon mukodni fog.
C11 szabvanybol: The order of allocation of bit-fields within a unit (high-order to low-order or low-order to high-order) is implementation-defined. The alignment of the addressable storage unit is unspecified.
Nem hardver regisztereket szeretnék újra leképezni, hiszen azok már eleve a header file-ban léteznek. Az SD kártyából bejön 128 bit, aminek van vagy 25 mezője változó szélességben, és ezt a 128 bitet szeretném "leválogatni".
Had kérdezzek még egyet, az én egyszerű stílusomba:
![]() Van egy struktúrám. Neve legyen "A" teljes hossza 32bit, benne egy 4 elemű byte-os tömb, melyek neve "Z". Csinálok egy másik változót neve B, ami 32 bit (tehát fizikailag "takarhatja" az A nevű struktúrát, s egy union-al "keresztetem "A" struktúrát "B" változóval. Akkor ha a B-be azt írom hogy 0x12345678, akkor tulajdonképpen A.Z[0] = 0x12, A.Z[1] = 0x34, A.Z[2] = 0x56, A.Z[3] = 0x78 ?
Az SD kartya CSD regiszteret ebben a kontextusban nevezhetnenk akar HW regiszternek is, de ha nem, akkor is jo. De nem is ez a lenyeg. A kerdes az, hogy igy akarod tarolni a CSD-bol kinyert informaciot, vagy arra keresed a megoldast, hogy a 128 bites CSD-t hogyan szedd szet a 25 mezore. Mert utobbira nem javaslom a bitfield-et. Mert a CSD adott sorrendben tarolja a bitmezoket, a C
struct { int egyik : 20; int masik : 11; int harmadik : 7; }; pedig C forditotol fuggoen teszi ugyanezt. Nem vagyok benne biztos, de emlekeim szerint abban a 128 bitben vannak olyan mezok is, amik 32 bit hatarokon is atlognak, azt meg szinte biztos, hogy bitfield muvelettel nem fogja neked a C fordito megoldani. A szabvany szerint nem kotelessege. Ha arra akarod hasznalni, hogy a huszonot mezot egy szep kupacba osszeszedd kesobbi tarolas celjabol, akkor meg megint nem javasolnam a bitfield-et, mert azon kivul, hogy RAM-ot sporolsz vele (10 byteot?), csak a kod lesz tole hosszabb. Akkor inkabb egy sima struktura.
Igen: arra keresem a megoldást hogy hogy szedjem szét. Igen, átlógnak egyes elemek a 32 bites sávokon. A lényeg hogy az LPC amikor megkapja a 4x32bit RESPONSE-t a kártya CSD regiszterét, akkor ezt nekem le kellene válogatni. Ahogy a fent is írtam, az lenne a legjobb hogy írok 4x, egy memória területre, és ugyan az a memória terület már egyébként egy bitenként definiált struktúra is lenne egyben valahogy úgy mint egy másik nézőpont.
De ezek szerint a szétszedést nekem kell megoldani prociból léptetéssel, maszkolással.
Hat ez eppen attol fugg, hogy az adott processzor Big endian vagy Little endian. A Cortex-M3 az speciel Little endian, azaz a 32 bites szo legalso helyierteku byte-jat teszi az alacsonyabb cimre, tehat a:
union { struct { char Z[4]; } A; int B; } x; x.B = 0x12345678; utan az x.A.Z[0] = 0x78, x.A.Z[1]=0x56, stb.
Igen, az átlógó mezők miatt szinte biztosan neked kell megoldani shiftelgetésekkel, maszkolásokkal. Ez tipikusan az a valami, amire makrókat szokás definiálni.
Idézet: Csak ennek nem sok ertelme, mert egyszerubb lenne egy 0-t irni helyette. Jobbra shiftelve inkabb... „Ha fogod az intet, shifteled balra 11-el, majd maszkolod ((1<<12)-1)-el, az mindig minden C forditon mukodni fog.”
Sziasztok !
Valaki meg tudna mondani, hogy az stm32f4 discoveryn a systick (1 ms) miatt, egy ekkora koddal miert akad ki a DAC (discovery panelon levo) ? ( a check_encoder() -rel nincs baj, main-ban jol mukodik)
A hozzászólás módosítva: Dec 12, 2013
A problema oka: a DAC (I2S) IT nem tudta megszakitani a Systicket, a rossz konfig miatt.
Sziasztok!
Eddig nem foglalkoztam ARM processzorokkal, de most belefutottam egy problémába. STM32F103RBT6 mikrokontrollernek a 37. lábán kell motort PWM-el szabályozni. Ez a timer3 1. csatornája. Mivel az általam eddig használt kontrollerekéhez képest ennek nagyon bonyolult a timer-e, nem boldogultam vele. A dolog nagyon sürgős, így ha valaki tudna adni egy példakódot, nagyon hálás lennék. Később persze meg akarom érteni, meg át fogom olvasni a dokumentációját, de most erre nincs időm. Köszönöm! Dávid Ui.: Esetleg nem tudtok valami jó leírást magyarul (esetleg angolul), ami segítségével meg lehet tanulni ezt a processzorcsaládot, vagy úgy általában az ARM processzorokat használni? Idézet: Ebben a hozzászólásban ajánlottam néhányat. „Esetleg nem tudtok valami jó leírást magyarul (esetleg angolul), ami segítségével meg lehet tanulni ezt a processzorcsaládot, vagy úgy általában az ARM processzorokat használni?”
Sziasztok!
Milyen olvasmányokat ajánlotok egy embernek aki ismeri a c és a c++ nyelvet, és ismeri a 8 bites chipek programozását is? ![]() Milyen eszközöket vásároljak hozzá? Hogy érdemes fejleszteni? Programozóval 1szem chip programozásával, vagy mikrokontrollerrel kezdjem? esetleg kit? Nagyon köszi! Dávid
Idézet: Mindez nagymértékben azoktól az okoktól és meggondolásoktól függ, amelyek téged ebbe a topikba vezettek. Tudniillik a C/C++ és a 8-bites mikrovezérlők ismeretéből nem következik az, hogy az ARM mikrovezérlőkkel is meg kell ismerkedned. Ha van valami konkrét cél, vagy megfontolás, akkor bizonyára az a követendő utat is megszabja.„Milyen olvasmányokat ajánlotok egy embernek aki ismeri a c és a c++ nyelvet, és ismeri a 8 bites chipek programozását is? Milyen eszközöket vásároljak hozzá?” Mindenesetre sokféle gyártó sokféle terméke szóba jöhet, mindegyiknek van előnye/hátránya. Ha szabadon döntesz, akkor érdemes a fősodor mentén haladani (az elterjedtebb gyártmányokat választani, amelyekhez sok példa és támogatás van). Megfontolandó szempont lehet (ha szabad a döntés) a "fontolva haladás", az egyszerűbbtől a bonyolultabb felé (ismerkedéshez egyszerűbb a Cortex-M0, később jöhet a Cortex-M3 és M4F). Érdekes színfolt a palettán a Cypress PSoC 4, és PSoC5 LP mikrovezérlő családja, amelyek a Cortex-M0, illetve Cortex-M3 CPU-n kívül univerzális digitális (PLD) és analóg modulokat is tartalmaznak, így a fejlesztés első lépéseként azt kell megtervezni, hogy az adott alkalmazáshoz milyen perifériák legyenek kialakítva a mikrovezérlő tokban. A starter kit-ek előnye az, hogy programozót/debuggert is kapsz velük, ami egyébként igen költséges lenne, hacsak nem egy (illegális) kínai klónt veszel meg. A hozzászólás módosítva: Dec 15, 2013
Oh, nagyon köszi!
Ezen a fórumon kicsit később valaki ezt ajánlotta valakinek kezdésnek: Breadboard vezetékkel kilóra az EBAY-ről: Breadboard Programozó: Ulink2 Processzor:STM32F407, vagy STM32F207 Nekem egyenlőre most nincs semmiféle megbizatásom, tanulói szándékkal szeretnék nekiállni. Avr-ben sok robotot csináltam már kissebb nagyobb sikerrel ![]() Tehát amik konkrétan érdekelnének és el szeretnék jutni pár hónapon belül: - komunikáció buszokon keresztül - out-input kezelés - tft kezelés képek stb. - sd kártya - ha lehet net Egyébként LINUX ismereteim elég mélyek, már saját webszervert is írtam C és C++ nyelven, tehát itt leginkább az eszköz megfelelő kezeléséhez kellenének infók. Pl.: hogyan világítsak vele ledet, analóg és digitális jelek stb. Nagyon hálás lennék ha tudnátok ebben segíteni esetleg online könyvet linkelni! Köszönöm Dávid
Szerintem az a valaki a fórumból én voltam, legalábbis én tuti (szó szerint) deszkán és breadboard-on nyomom.
![]() Az STM azért jó, mert nagyon jó a dokumentációja. 1.5 év STM32 után (is) kínszenvedés volt NXP-re átállni (csak a beépített TFT vezérlője, és az SDRAM miatt tettem. Azóta kijött az STM32F429 ami már szintén bír ezekkel, tehát lehet neked az jó lehet kezdésnek. Igazából hogy M0, vagy M3 a mag, nekem teljesen mindegy volt, eddig csak és kizárólag a megszakítás kezelésben került elő. A fent említett konkrét típusnak van egy Discovery Board-ja, mindennel együtt olyan 6000Ft körül van, ha lyukra is futsz vele (az ARM-al), sokat akkor se buktál szerintem, később tuti lesz aki átveszi tőled. Ha az STM mellett döntesz, akkor van egy két cucc számodra, de ez már PM. ![]()
Ja igen, te voltál
![]() Ott a 14. fórumoldalon, írtad. Te töltötted fel a képet arról a class produkciódról ![]() Gart. hozzá! Köszi a segítséget! Dávid
Szia!
Ha kell TFT kezelés, akkor mindenképp olyan kontrollert lenne használni, amiben van közvetlen RGB meghajtás. Szerintem a külső kontrollerrel megáldott kijelzők eléggé korlátosak, illetve drágábbak. (Persze van ellenpélda is, pl.: FTDI FT800) Kb átfutottam a piacot és a legtöbb gyártónak van TFT vezérlős chipje. Csak a legtöbb valamiben hibázik... pl nem lehet beszerezni, vagy max csak 48MHz-en megy, vagy nincs benne SDRAM vezérlő, vagy a microchip gyártja ![]() Másik kritérium az SDRAM vezérlő, mert azért minimum 2 framebuffer nem árt. Nagyobb kijelzőknél ha SRAM-ba gondolkozol, akkor eléggé el lehet szaladni árban. SDRAM-nál ez nem gond, csak pár száz Forint. Két szimpatikus alternatívát találtam: NXP LPC 1788 (Cortex M3 maggal) utódja LPC 4088 (Cortex M4 maggal). Hátránya talán annyi, hogy alig találni beszállítót, nem túl jól támogatott, és csak 208 lábas tokban tudja kezelni az kijelzőt. Ez akkor lehet hátrány, ha csak egy egyszerű TFT-s kütyüt akarsz és abba is be kell építeni ezt a nagy IC-t. Még hátránynak említeném, hogy nem lehet olyan jól mozogni a családon belül, kevés a különböző típus. És viszonylag drágább is. Nincs gyári demo panelja, habár van egy nagyon jó "utángyártott": LPC1788-CORE Előnye, hogy "régi" és már többen is ismerik. Ha kérdésed van jobban, többen tudunk segíteni. Másik alternatíva az ST gyártmánya: STM32F429 Hátránya, hogy szinte még meleg, annyira új. Emiatt kevés a támogatottság. Ja és nincs benne eeprom ![]() Előnyei: -Két réteget tud kezelni plusz egy háttér színt is. Ezek között átmeneteket is tud csinálni (alpha blending) hardveresen. -Virtuális kép, azaz a tárolt képed nagyobb lehet, mint amit meg tudsz jeleníteni. Így egyszerűen lehet scrollozni is. -144 és 208 lábas tokban is van TFT vezérlő. -Olcsó gyári demo board TFT kijelzővel: STM32F429 DISCOVERY Ezen már rajta van a programozó, debud áramkör is, igazi plug (install) and play. -2MB flash memória van benne Sorolhatnám még... Én most kezdtem el ismerkedni vele, és tetszik. Még nagy előny az ST-nél, hogy nagy a kontroller választék. A párszáz forintos M0-ás mag is van, amit hiányoltam az NXP-nél. Ráadásul nagyon megegyeznek a belső felépítések, könnyű a különböző magokon belül ugrálni. Én ezt javasolnám. Ha kérdésed van ezzel kapcsolatban, akkor megpróbálok válaszolni, már minimális tapasztalattal rendelkezem ![]() ui.: Zoli beelőzött ![]() A hozzászólás módosítva: Dec 16, 2013
Idézet: Ne viccelj! Az LPC1114 (amire a Joseph Yiu: The Definitive Guide to the ARM Cortex-M0 könyv is alapoz talán nem NXP Cortex-M0? Vagy az LPC800-as sorozat? „Még nagy előny az ST-nél, hogy nagy a kontroller választék. A párszáz forintos M0-ás mag is van, amit hiányoltam az NXP-nél.”
Idézet: Szerintem a Jlink univerzálisabban használható. „Programozó: Ulink2”
Kicsit rosszul fogalmaztam... Nem az NXP M0-ás magot hiányoltam...
Úgy értettem, hogy az ST M0-ás magjai könnyebben és olcsóbban beszerezhetőek. De az is lehet, hogy csak én tapasztaltam így, esetleg nem kerestem eleget. A hozzászólás módosítva: Dec 16, 2013
Szerintem kétfelé érdemes választani a feladatot, nem jó egyben megoldani, a profik, az ipar is így csinálja:
van szoftveres mérnök (Linux, C, Python, felhasználói felület író) és van hardveres mérnök (PC, Raspberry Pi, Cypress PSoC, STM Discovery board, mikrovezérlők), akik szorosan együttdolgoznak és a másikra mutogatnak, amikor probléma van ![]() A kompromisszum fájó: mikrovezérlőknél küszködni kell az alap hardverekkel (USB, ethernet rémálom), DE órajel szinten programozod-látod a hardvert, Raspberrynél a hardver (mindegyik, akár TFT is) csak a kész meghajtó program pársoros installálása, DE nem látsz a működésük mélyére. Én Raspberry Pi vagy tablet + kicsi mikrovezérlő vagy okos szenzor duóban látom a megoldást. A Raspberry az olcsósága, az Android vagy Windows mobil a mindenki zsebében ott lévő hardver miatt egyre nagyobb jelentőségű (persze ezek is egyre olcsóbbak). Hiánypótló cikk ezügyben: pic_avr_vezérlése_android_telefonnal. Raspberry Pi: Olcsó (11ezer forint), komplett számítógép Linux-szal (a legsokoldalúbb-legjobb szoftver + fejlesztői környezet), néhány Wattos fogyasztással, ethernettel, 700 MHz órajellel (tuningolható), 256 Mbájt RAM-mal, SD kártya foglalattal, HDMI ÉS analóg monitor kimenettel, analóg hang kimenettel, 2 darab USB-vel, hardver portkivezetésekkel (ezt hogy oldod meg féláron pl STM Discovery board-dal a 2MB RAMjával? tippelek: vért izzadva, inkább sehogy). Tablet (Android vagy Windows mobil): Előnye, hogy tartalmaz akkumulátort, TFT-t is, WLAN-t, billentyűzetet, (akár még: GSM, GPS, infra port), komplett, olcsó hardver, melyhez etherneten-bluetooth-USB-n keresztül illeszthetsz hardvert, hozzáférhető a szoftver fejlesztői környezet. Akár néhány éve is csak reméltük, hogy 10ezer forint környékén olyan komplett hardvert vehetünk és a zsebünkben hordunk (persze +50ezerért ma is van mini PC), mint 20 éve az asztali-, 30+ éve a szuperszámítógépek voltak. Az első számítógépemért két havi átlagkeresetet fizettek a szüleim és 4 MHz-es (nem Giga) proci hajtotta (ZX Spektrum, melyhez fekete-fehér tv-nk volt ![]() Azt se feledjük: 12-szer a Holdra léptünk számítógép nélkül, papír-ceruza-logarléc-rádió segítséggel. A hozzászólás módosítva: Dec 16, 2013
Nomeg: olyan olcsó lett a hardver, hogy nem éri meg csupasz magot venni kísérletezésre-tanulásra. Mennyi idő, energia és pénz kell bármely 200 lábú mikrovezérlőből egy darab céláramkör+programozó+próbapanel legyártására (nyilván 10ezer darab feletti tétel sokkal olcsóbb lenne)?
cpt.zoltan.simon kollégának igaza van: az STM Discovery Board-ja, mindennel együtt olyan nettó 6000 Ft körül van, amit csak a sokszorosáért tudnánk előállítani és a szoftver fejlesztési költséghez meg a megismerésükhöz szükséges órák százaihoz (ezreihez) képest bagatell tétel. És mégis szoftveresen-hardveresen alap gondokkal küzd, amiről ő bőséggel írt és tapasztalt (lásd TFT illesztés, háttérszín, scrollozás)... Miután programoztál Linuxon, Neked ezek gondot okoznak PC-n? További napi problémák: multitasking, megszakításkezelés, ethernet-távoli elérés... Kimaradt szenzorként: Nuvoton NuTiny családja.
Akkor te melyik ARM-es cuccot ajánlod nekem? ha nem STM Discovery Board.
Persze a legegyszerűbb biztosan az lenne, hogy veszek egy Raspery-t. De én az alapokat szeretném megtanulni, hiszen gyakorlatilag küllönbség sem lenne a Pi és a saját Linuxos laptopom programozása között ![]() |
Bejelentkezés
Hirdetés |