Fórum témák
» Több friss téma |
Köszi, le is mentettem..
Remélem segítségemre lesz..
Van: Csak a powermcu cuccait használom. Hibátlanok.
NOR Flash-nek ott a helye alul. Csak nincs beforrasztva. Az én 2xx-es panelemen A22-ig vannak a cím lábak. Nem valamelyik Port-ra hanem kb az egyetlen lehetséges lábra ami fogadni tudja. Az STM-nek nagyon jó a dokumentációja. Annál jobb nem kell. Én mondjuk Bare-Metal-ba progizom, számomra egyszerűbb mint külön még CMSIS-t tanulni. A JTAG neked ott ki van építve, szerintem használd azt. Persze lehet SWD-ben is programozni, de jelenleg nem használ(hat)sz annyi lábat hogy már onnan is bogarászni kelljen. Esetleg töltsd már fel a kapcsolási rajzát amit kaptál kérlek mert nekem csak 2xx és 4xx van. Íme az enyém mellékletben. Ja és azért is csodálkozom a hiányázó NOR Flash lábaidról, mert a 2xx is 144 lábú ugyan ezen a board-on és ahogy írtam A22-ig vannak a cím lábak betervezve. Másik tanács. Használj SD kártyát a gyorsabb SDIO módban. Inicializálás, olvasás már megy tökéletesen. Írásával még nem volt időm foglalkozni.
A 100lábúnál (STM32F103VCT6) nincs meg az alsó fix 16cím bit kivezetése.
A 144-lábúnál meg van (56lábú NOR-t fel is forrasztottam), de én a kész projektemnél nem ezt a 144-est, hanem a az STM32F103VCT6 100 lábú kisebb MCU-t akarom használni. Nem teljesen ez van nekem a fejlesztő panelen, de ennél nem találtam jobb rajzot. A hozzászólás módosítva: Ápr 27, 2016
Vágom. Oks, én csak 144 lábúakat használtam, vagy nagyobbakat.
Ha sikerül megcsinálni a NAND Driver-t az érdekelne engem is. De nem CMSIS-el. Egyesek itt a MikroE cuccot használják, én speciel Keil-re esküszöm. SRAM-ot a Keil gyári file-okkal életre keltheted egy sorral.
Ez aktivál egy külön részt a system_stm32f2xx.c file-ban. Én 512k SRAM-ot használtam/használok, arra figyelj hogy a file csak A17-ig inicializálja az address lábakat (256k-ig), így nekem külön kellett még hozzátennem az A18-at.
Nem igazán értem egyelőre mit írsz, de a NOR Flash-re már rég kész a program.
Alapból ismeri az IAR környezet. 128Mbit-et ken vág 2-3utasítással. Csak gondolom a 100lábú kisebb ARM-nél az alsó 16 címbitet majd nekem kell konfigurálnom.
Az hogy ismeri, és az hogy működik az két külön dolog. Kipróbáltad már?
Én mindent az alapoktól írok, nem használok beépített rutinokat. Nem ismerem az IAR környezetet.
Persze, élesben tesztelgetem.
USB-vel csatlakozom és írom Flasht. Az olvasás sokkal gyorsabban megy. Én még csak most kezdtem el pár napja nézegetni, szóval még tanulnom kell..
Értem. És ebben hol van IAR, meg Cortex-M akárhány?
Ez konzolba épített NOR flash chip hekkeléséhez van. Mert nem látom a kapcsolatot.
Ez csak a teszt ami a sebességet és a beírást mutatja..
Vagy mit szeretnél még látni?
Semmit. Láttam ott egy 5 betűs rövidítést amit mindennél jobban utálok: CMSIS.
Sajnos én még ennyire nem értek hozzá, nem tudom egyelőre mi mit jelent pontosan.
Pár nap alatt ezeket a dolgokat nehéz kitapasztalni.. Nekem ezt mondták, hogy ez az egyik legjobb fejlesztő, persze nem ingyenes.
Majd belejössz!
Vagy nem
Lehet maradok PIC-nél, mert abban már van tapasztalatom.. Ez az ARM dolog meg még várat magára, majd talán ha lesz valaki akivel tudok róla beszélgetni, lehet majd előveszem megint.. A hozzászólás módosítva: Ápr 28, 2016
Felejtsd el a PIC-et.
Kezdésképp villants fel egy led-et. Ha jól emlékszem a tiéden is a PF6 porton figyel a LED ott az USB csati mellett:
Jaa ezeken túl vagyok.
Most jönne az, hogy át kellene ültetnem a programot a kistestvérre, STM32F103VCT6-ra. A gond ott kezdődik, hogy még nem tudtam kihámozni, hogy NOR flash alsó 16címbiteket, hogy tudom megoldani, mivel az hiányzik a kisebb lábszám miatt.. (bár gondolom más lábakra kell átkonfigurálni, de nincs olyan PORT amelyen elférne a hiányzó 16bit) Aztán jönne az interrupt, wake-up funkció és SPI. Nem is kevés dolog ez Arról nem is beszélve, hogy még soha nem használtam ilyen MCU-t, nem tudom mire kell oda figyelni, melyik lábat kell fixen felhúzni, lehúzni és milyen alap körítés kell az MCU körül. Bár tán ez utóbbi lenne a legkevesebb kihámozni, mert egy két kapcsolás elárulja.
Interrupt relatív egyszerű.
Az interrupt-otkat az NVIC ISER[0..3] regiszterekben engedélyezed. Interrupt Set Enable Register. Az adatlap alapján pl az ADON interrupt az ISER[0] 18-as bitje. Ezt a chip users manual-ban ellenőrizheted.
Az ehhez tartozó interrupt hhandler-em így néz ki.
Az egyes interrupt handlerek pontos nevét megtalálod az egyik "gyári" include file-ban.
És itt is ARM-nél, van olyan alap szabály amit mindig érdemes betartani?
A PIC-nél van egy sárga szövegdohoz, ahol le vannak írva, hogy pl: Idézet: „- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni! - A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni. - Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre. - Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani. - Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.” Itt is vannak ilyen alap dolgok?
Az ARM egy processzorcsalad neve (tobbek kozt). Semmi koze nincs VDD-hez vagy MCLR-hez. ARM alapu mikrokontroller vagy ezer féle. Sot, ARM processzorbol is van egy csomo, pl. ARM7TDMI, Cortex-M0, Cortex-M3, hogy csak a gyakoribbakat emlitsem.
De egyebkent a fenti "okossagok" nagy resze igaz minden digitalis aramkorre. Minden tap labat be kell kotni, hidegitoket kell tenni kozvetlenul a tap labakhoz. A telefontolto dolog h@lyeseg, az MCLR es XT/HS kerdes meg PIC specifikus.
Üdv!
Látom mostanában és STM32-es ARM alapú boardokról is szó van itt, ezért fel merek tenni ezzel kapcsolatos kérdést. Írtam egy programot STM32 F4 Discovery boardra, amiben frekvencia mérés történik. A program tökéletesen működik, így átírtam a programot a szükséges változtatásokkal, STM32F103C8-as boardra is. A program ez esetben is tökéletesen működik, viszont a méréshez használt bemenet utóbbi esetben 20mA-t vesz fel, ami baj és a F4-es kártyánál (0 mA megy a bemeneten) nem fordult elő. Van ötletetek, hogy mi lehet a gond?
Üdv.
Van egy időzítőm amihez szeretném időzíteni az ADC mintavételt. A baj az hogy amikor a Timer interrupt hardveresen meghívódik akkor megtörténik az ADC mintavétel viszont az a függvény nem tud visszatérni az eredménnyel és a main függvényben nem látom az eredményt. Ezt onnan tudom hogy az ADC parancsot berakva a main fügvénybe adja az adatokat szépen. Hogyan tudom ezt megoldani? Amikor a timer interrupt fut az ADC-vel bele kéne írni egy direkt regiszterbe? Segítségeteket kérném. Egész pontosan 10us-ra lesz hangolva a timer és úgy mentené az adatokat 900 adatot utána váltok csatornát gyorsan begyűjtene még 5 másik adatok a másik csatornáról és kezdődne előről. Egyébként STM32F030 IC-t használok ha kell be tudom rakni a kódot.
Erről van szó, ha kirakom main-be akkor megy:
Lenyegeben ez a megoldas, miszerint az ADC eredmenyet beteszed egy valtozoba, amit a main-ed tud olvasni. De azert valamit nem ertek. 10us-onkent jon a timer interrupt? Mert akkor eleg bator dolog meg varakozo ciklust is beletenni. Azt mondjuk amugy sem szokas megszakitasba, de 100kHz megszakitasba vegkepp nem. Ennel sokkal jobb eredmenyt kapsz, ha a timer interrupt elejen kiolvasod az ADC-t, majd ujbol elinditod a merest. Ennek az lesz az eredmenye, hogy minden meresi eredmenyt csak 10us kesessel fogsz megkapni, viszont nem fogja a processzor ido 80%-at elvinni ez az egesz. Ami azt illeti, a 10us megszakitas ezen a processzoron amugy is necces.
Az ARM a cég neve. A Cortex-M0,M1,M3,M7 a mag, a szűken vett CPU, az NVIC-el (megszakítás kezelő áramkör), stb stb.
Az ARM-tól a magot egy félvezető gyártó pl a te esetedben az ST Micro licenszeli, és megépíti a saját mikrokontrollerét. A perifériákat SPI, UART, S(D)RAM, TFT vezérlőket a mag 32bites (AHB, APB) buszára már ők teszik fel. Így lesz az ST-nek a Cortex M3 családja az STM32F2xx, ugyan ez az NXP nevű cégnek pl LPC17xx Ezeket a cuccokat - és ez szigorúan az én véleményem - nem érdemes chip-ben venni. Ugyanis olyan pici plugin board-ban mint a tiéd, 4 rétegű áramkörön, pl az SDRAM miatt (STM32F429, LPC1788), nagy sebességű tervezést igényel, és sokkal olcsóbban meg tudod venni modulként, minden ami kell rajta van, semmivel nem kell foglalkoznod, 5V-ot adsz neki és már megy is. Ha mégis valami kisebbet veszel amin semmi gyors nincs kívül mint most én majd TSSOP20-as tokkal egy STM32F103-at, akkor a mellékelt kapcsolási rajzból ki tudod szedni a lényeges részeket. Föld-táp, Kvarc nem fontos bentről is megy, AVDD-AVSS szintén látható a rajzodon, és kb ennyi.
Nem. eredetileg nem volt benne semmi várakozás csak próbáltam már mindent.
Végképp nem értem mi történik ugyanis kiszedtem már szinte mindent ami nem kell. Csak akkor hajlandó kiírni az adatokat ha benne hagyom a 4. sor HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); parancsot. Ha kiveszem akkor 000-t ír a kijelző. Ha visszarakom akkor szépen írja a 330-000 közti értékeket amit az ADC-nek adok a potival. Érthetetlen mi köze a kettőnek egymáshoz. Ráadásul az még nem is a célpanel hanem egy nagyobb processzorral egy NUCLEO. A kis célpanel még ennyit sem csinál mivel ott bonyolódik már a program és nem jutottam el odáig hogy valamennyire működjön.
A hozzászólás módosítva: Ápr 28, 2016
Én úgy csinálnám - mert ADC tudja - hogy Timer indítja a konverziót, amikor a konverzió kész, az ADC interrupt meg olvassa. Semmi szoftveres várakozás. Az ADC leírásában trigger néven találod ezt a módszert.
A 900 adathoz annyit hogy: Én azt csinálnám hogy 512, 1024 stb mennyiségű mérést végeznék. Nyílván azért mérsz sokat hogy utána átlagolj. Ebben az esetben az osztás csak 9-10 léptetés balra lenne, nem pedig egy relatív időigényes decimális osztás. A másik: Mondjuk digitalizálsz 12 biten. Az eredménynek van további 20 bitje (32bites változóról beszélünk). Én valahol az eredmény 20-31 bitje "magasságában" üzemeltetném a számlálót (nem külön változóban) és akkor tudnád azt is hogy hány konverzió volt.
Az 1000 úgy jön ki hogy a PWM vezérlés 10msec periódussal megy. Ezt felosztom 10us re a timerrel és mérek kb 990db-ot majd a maradék 10usec alatt vagy amennyi kell mérem a maradék 5 bemenetet amit nem kell nagy sebességgel mérni csak néha( pl poti)
Ennél a 990 mérésnél az ADC folyamatosan menne és csak 10u-kénz kiolvasnám az adat regisztert. Az nem tart semeddig. Az 1000 db értéket viszonylag gyorsan dolgozná fel ugyanis elsőnek csak összeadom őket és mihelyst a minták száma eléri a maximumot akkor végzek osztást. Szerintem ez nem nagy időveszteség. Igazából mindegy is nem ragaszkodom ehhez a megoldáshoz csak az így nekem egyszerű megoldani. Nem is ezzel van a baj hanem mint írtam nem gazán akar működni a program. A hozzászólás módosítva: Ápr 28, 2016
A CMSIS csupa rejtély...
Micsoda?
|
Bejelentkezés
Hirdetés |