Fórum témák
» Több friss téma |
Segíteni fog és köszönöm, de egyenlőre még nem jött össze ez az OpenOCD-s dolog. Írtam hozzá egy .cfg fájlt, ami szerintem jó, mert megtalálja a az összes TAP-ot, felismeri az ICEPICK-et és nem dob ki hibaüzenetet de még figyelmeztetést sem.
Most annyi a baj, hogy az IAR nem ugyanazokat az értékeket olvassa vissza amiket beleír az ARM-ba, de gyakran tiszta 0-át olvas vissza. Valamint, hogy nem tudja a procit HALT üzemmódba tenni. Foglalkozott már valaki az OpenOCD-vel, esetleg tudna segíteni a jó beállításokban?
Sziasztok!
Vettem tanulás céljára egy Olimex LPC-MT-2106 fejlesztő panelt és hozzá a ARM-USB-Tiny-H JTAG programozót és sikerült is beállítanom hozzá a cfg filet is. Az openocd is szépen elindult nem dobott errort az inditáskor, azomban amikor a IAR-t elinditom miután beállítottam a GDB-t is a következő hibát dobja ki (halt kiadása után és előtt is, ahogy a képen látszik ) és nem hajlandó futni a debbugger és nem is tölti be a programot. Valakinek valami tippje miért csinálja ezt?
Hali!
STM32-ben van valakinek bármi adata arról hogy az FSMC kontra SSD1963 használatához milyen FSMC regiszter beállításokat kellene használni? Nem akarok egyenlőre SRAM-ot használni, tehát csak a PCR4, SR4, PMEM4, PATT4, és ECCR regiszterekre lenne szükségem.
Hali!
Az alábbi dokumentumot találtam régebben, bár még nem ástam magam bele, de hátha hasznosnak találod. Bővebben: Link
Hi!
Ezt ismerem. Az a baj vele hogy sok a homály benne, ráadásul a hozzá tartozó ZIP fileban a CMSIS-t használja, ergó követhetetlen. Youtube alapján találtam ma egy Litván gyereket aki jól megcsinálta amit akarok, a vicc az hogy ő is CMSIS-t használ. Amikor mondtam neki hogy Register direct write, azt mondta kit érdekel meg fölösleges, merthogy az STM32F407 800x480 on 60FPS-t tud, és az FSMC-t lassítani kellett mert az SSD1963 nem birta követni... Szóval meg lehet csinálni CMSIS-es Standard Peripherial Library-kkel, de attól hogy "véletlen" működik sajna okosabb még nem leszek...
Ebben az esetben sajnos nem tudok segíteni, jómagam a kezdetektől a CMSIS könyvtárakkal programoztam. Mondjuk még most is kezdő vagyok
Nekem igazából a CMSIS egy nagy kavar. Biztos jó, meg szép, de ugyan annyit kell olvasni mintha a reference manual-t olvasnád, és ezek után még mindig nem tudod melyik regiszterbe mit ír.
A kérdést úgy tenném fel inkább: van itt olyan valaki akinek elsősorban FSMC, másodsorban FSMC+SSD1963 témában volt sikerélménye? A helyes beállítást vadászom. Bár lassan nagyon ott tartok hogy kell egy LA.
Egyenlőre feladtam az FSMC-t. Vakon nem lehet csinálni szóval várom hogy megjöjjön a Logikai Analizátorom.
Más: közben felakasztottam a GPS-em USART1-re. Tudom hogy működik, PIC32-vel már nagyon jól ment. Elkezdtem olvasni a megszakításokról, viszont nem egyértelmű: El tudná mondani valaki hogy ha tudom mi az hogy Interrupt akkor mi az Exceptions? És az STM32F2xx-nél hol van dokumentálva az Interrputs? Mert ami a Reference Manual-ban van az talán 10 oldal összesen...
Én az STM családot nem ismerem, de az Interrupt és az Exception között minden általam ismert CPU-nál az a különbség, hogy az Interruptot egy külső esemény kezdeményezi (érkezik egy jel, lejár egy timer, kiürül/megtelik egy periféria puffere), míg az Exception a CPU belső működéséből keletkezik (jellemzően utasítások végrehajtásából, mint pl. nullával osztás, nem valós címtartomány megcímzése).
Akkor ha jól értem:
Exception = Megszakítás a mag-ban Interrupt = Megszakítás a perifériákban?
Kb.
Az exceptiont inkább "hibára futásként" kéne elképzelni. Azaz a CPU valamilyen műveletet nem tud végrehajtani. A "valamilyen művelet" nem mindig köthető közvetlenül egy utasításhoz (de általában igen), mivel az exception rutinra ugrás maga is okozhat exceptiont.
Beállítottam az USART-ot. Jön adat a GPS-ből, és az RXNE bit is 1 azaz van bejövő adat.
Valaki pár utasítással meg tudná mutatni SOS-be hogy mit globálisan hogy kell engedélyezni az IT-t, és hogy néz ki az ISR rutin?
[code=c]
Ez a rövid assemblerkód (ARM-CPU) azt ellenőrzi, hogy egy megadott dátum valós-e vagy hibás. -input: hónap R1 ( hex értékben ) -input: nap R2 ( hex értékben ) -output: R3 ( 0=hiba ) Hiba akkor van, ha olyan dátumot adunk meg, ami nem fordulhat elő. -Pl.: xxxx.04.31, xxxx.02.30, xxxx.08.45, xxxx.34.12, stb. xxxx.02.29.-ét azért fogadja el jó dátumnak, mert amíg az év nem ismert, addig ez lehetséges. A programnak ezt a lehetőséget a későbbiekben tovább kell vizsgálnia. ( szökőév probléma ) A programot én ( weberlars.tata@gmail.com ) írtam, érdekessége, hogy -nem használ táblázatot a hónapokhoz tartozó maximális lehetséges napok számával, -nem használ sok IF-THEN kérdést, utasítást, -egy függvénnyel számítja ki a maximum lehetséges napokat. Így a program elég rövid. Ha valakinek lenne rövidebb megoldása, ötlete, úgy kérlek közöljétek velem. Nem fogok emiatt megsértődni. ... *0c e3522001 cmp r2,#0x1 ; nap=0 ? *10 23511001 cmpcs r1,#0x1 ; hónap=0 ? *14 2271300c rsbcss r3,r1,#0xc ; hónap>12 ? *18 202131a1 eorcs r3,r1,r1,lsr #0x3 ; kiszámítja maximum hány *1c 2383301e orcs r3,#0x1e ; napból állhat a hónap. *20 21533002 cmpcs r3,r2 ; több nap mint szabadna ? *24 03311002 teqeq r1,#0x2 ; február 30 ? *28 e3a33000 mov r3,#0x0 ; ha csak egyszer is igen *2c 9afffffe bls 0x2c ; akkor itt vége (r3=0 hiba) *30 eafffffe b 0x30 ; stop 0XE3522001 0X23511001 0X2271300C 0X202131A1 0X2383301E 0X21533002 0X03311002 0XE3A33000 0X9AFFFFFE 0XEAFFFFFE
Ha esetleg valaki Register Direct csinálja az ARM-ot Keil-ban akkor meglett a megoldás.
Keil csak akkor csinál egy funkcióból interrupt handlert ha: 1: A kezelő neve pontosan stimmel a startup file-ban lévő táblázattal, esetemben "USART1_IRQHandler" 2: A kezelő így néz ki: void USART1_IRQHandler (void) __irq { //blablabla }
Az a __irq szerintem nem nagyon kell oda. Anélkül is megy, legalábbis nekem eddig ment (Csupán nemrég kezdtem én is STM32-vel bíbelődni).
Nálam enélkül nem ment. Nem tudom miért, de amíg működik, nem is érdekel...
Közben kiderült a gond, az FSMC-vel. Ahogy az ábrán is látható, se a #CS, se az RS láb... Idézet: Nagyon is kell, mert anélkül nem lesz belőle megszakítás-kiszolgáló függvény.„Az a __irq szerintem nem nagyon kell oda.” Idézet: Bővebben: Link „Function Attributes for Hardware Support. The ARM C compiler provides function attributes that give you access to ARM hardware features. For example: __irq allows you to create interrupt service routines in C. __swi(id) allows you to invoke a software interrupt handler.”
Van bárkinek Low Level tapasztalata FSMC-vel?
3 adatot küldenék ki FSMC-vel. 0xB4, 0x0F, és 0x01. De : B4 helyett B0, és az adatok sorrendje se ok.
Meglettek a megoldások. Egy DATA láb elkötve, és FSMC teljesen szétkonfigurálva. Kiizzadva a rendes adatokat, működik a szerencsétlen. STM32F207ZGT6, 150MHz.
Fél hardveres a cucc, mert ugyan az adatokat az FSMC tolja ki, de abba bele szoftveres do-while tolja, szóval most már csak annyi van hogy SDRAM, abba bele egy 800x480 tömb, aztán a DMA mást se csináljon csak adja ki a tömböt FSMC-nek. Ha meg valaki valamit ki akar írni a képre az írjon a tömbbe.
STM32 + SDRAM? Megkérdezhetem hogyan?
Persze.
STM32F207ZGT6 Ebay modul Közben Level-2 optimalizációval a törlési idő 38ms-re esett vissza, ez 26FPS, ha jól számolom, még mindig do-while ciklussal etetve. Most már nagyon kíváncsi lettem hogy fog menni DMA-val. Valaki mondja már meg nekem hogy kell azt megcsinálni, hogy egy 384000 elemű adott nevű tömböt a memória egy adott helyére akarok tenni.
Sorry. SRAM! Hiába... SDRAM kézre áll
Mint említettem nálam megy anélkül is. Valószínűsítem, hogy a project-hez nem volt hozzáadva a startup_stm32f2xx.s nevezetű file. Ezt a project létrehozásánál megkérdezi az IDE, hogy hozzá akarjuk-e adni a project-hez, vagy sem. Nálam hozzá van adva a system_stm32f2xx.c file-val együtt.
Egyébként, ha minden igaz a 207-es max 120 MHz-en mehet.
Igaz. (Egyes) papírokon 120MHz, máshol 168 van írva. Itt az asztalomon stabil 150MHz-en, de futott már 168-al is. Egy Litván gyerek mondta neki a 407 ami papiron 168, stabilan megy 200on is.
hali!
Egy kis segítséget kérnék. Innolux AT070TN83 7" TFT-t használnék. A timing diagramjába beírtam az adatlap által közölt értékeket (1. melléklet). Nem megy a fejembe hogy hogy kell átkopizni ezeket az SSD1963 adatlapjában található timing diagrammra (2.melléklet) Mert a probléma a 3. képen látható...
Logikai Analizátor, milyen tipus?
Ebayről?
Amúgy mi lesz ebből ha kész lesz?
Logikai Anallizátor
STM32F207ZGT6 7" TFT A TFT nem teljesen ez, én akkor vettem amikor ennek még csak készült az érintő képernyős változata. Egy litván gyerekkel konzultálva, ma már az STM-et nem igy venném meg, mert pl az SRAM amit a kínai rápakolt 65ns-os, a srác viszont maga tette rá az SRAMot, a 8ns fajtából. Mindegy, ez jó lesz asztalon, és ha lassú, még mindig megrendelhetem ennek az "utódját", az STM32F407-et memók nélkül. Ez az egész jelenleg egy baromi drága GPS, mert annak van felprogramozva. Egyenlőre hobbi, de valószínűleg a kocsiba fog bemenni, egy csomó mindent helyettesítvén. A hibákat egyébként sikerült helyrehozni. Jelenleg 150MHz-en (120 helyett) DMA nélkül a képernyő törlés 38ms, egy 800x480 kép 49ms, de byte-os tömbből, szóval a do-while ciklusban van jó pár kivédhető dolog. Igaz most csak az volt a lényeg hogy a kép kerüljön ki, szépen egybe a kijelzőre.
Én is kérdezek akkor. Image2LCD szép tömböt csinál. A gondom az hogy a benne lévő tömb nem 16bites, így "rengeteget" kell matekolni, ahelyett hogy az ember csak szórná ki a tömb-adatokat. Tud valaki valamit ami a 8bites tömböt 16 bitessé rakja össze?
|
Bejelentkezés
Hirdetés |