Fórum témák
» Több friss téma |
A programot dobd már fel, úgy könnyebb lesz segíteni.
Működő g2231-es Capture modul, megszakítással, Icserny féle SW_UART-tal. csatolt file. Idézet: „Működés közben is lehet figyelni az egyes regiszterek változását?” Az esetek 99%-ban IAR-t használok, de még ilyen opcióval nem találkoztam. Megállítod a prg. futást, és megnézed a regisztert.
Köszi a segítséget. Megpróbálom majd kicsit átírni amit küldtél, hátha.
16 MHz-en futó MSP430G2553-mal mi a tapasztalat? Nálam az ADC-vel mért értékek nagyon ugrálnak az 1 MHz-en futó korábbi programokhoz képest (10-17 LSB a korábbi 1-2 LSB helyett). Van valakinek jobb beállítása az ADC-hez? Vagy ennyire megnő a belső zaj, és nincs mit tenni?
LSB? Mármint 1-2 abszolút értéknyi ugrálás helyett 10-17 abszolút értéknyi ugrálást látsz?
(Ez olyan 4 LSB talán.) Nekem nem tűnt fel, hogy nagyon ugrálna az ADC értéke 16 MHz-en, bár most nem tudnám megmondani, mekkora volt a szórás - igaz, ott végül több mérés átlagát vettem. Az sem kizárt, hogy zajosabb a tápod a kelleténél - ez most a Launchpad egyébként? Egyébiránt valószínűsítem, hogy az órajeled növelésével a konverziód ideje lerövidült, ezért bizonytalanabb az 1 MHz-es állapothoz képest. Esetleg próbáld megváltoztatni az ADC órajelforrását, ill. ehhez (ezekhez) tartozó osztó értékeit (ADC10DIVx; ADC10SSELx). Ha jól gondolom, így vissza tudod nyerni az eddigi stabilitást. Szerk.: Family User's Guide 555-ös oldalán ír ezekről a regiszterekről. A hozzászólás módosítva: Nov 25, 2013
Igen, Launchpad kártyáról van szó.
Az ADC saját órajelét használom (a kb. 5 MHz-es ADC10CLK órajelet), az (elvileg) független a CPU órajelétől, tehát (elvileg) nem rövidült a konverziós idő.
A kazánvezérlőmben 2db TC1047A van.
Az AD konverzió beállításom, ADC saját órajel, 16x Sample and Hold time, 2.5V ref., interrupt, és többszörös konverzió (64). Egy mérés után, mind a 64 érték/mérés azonos volt. Többszöri mérések után is csak 2-3 abszolút értékkülönbség volt. Ehhez hozzá kell tenni, a TC1047A közvetlen kimenetén egy 470ohm -os ellenállás van, ezt követően ~50cm vezeték, a g2553-as közvetlen bemenetén egy 1k/100nF RC tag van. Ja, és a g2553-as 32PIN QFN tokozású! Lehet, hogy ebben a tokozásban pontosabb az ADC?
Nekem is volt hasonló gondom, kb teljesen hasonló eredményekkel. A nagy eltérést talán az okozta, hogy 16 MHz-en sokkal zajosabb a CPU, mint 1 MHz-en. Viszont, ha az ADC alatt ki van kapcsolva a CPU akkor az ugrálás visszaállt 1-2 LSB-re, 16MHz órajel mellett is. 1MHz-en nem volt különbség, hogy a CPU ki vagy be van kapcsolva, ott 1-2 LSB volt az ugrálás.
Egyébként valami ilyesmit írtam én. P2.1-en lenne a négyszög, amit mérni szeretnék.
A hozzászólás módosítva: Nov 26, 2013
Beállítod a "TACCTL0" -át, azaz a Timer A1 Capture/Compare 0. csatornáját, és a P2.1-en, azaz "CCI1A"-n várod a jelet. Ez így nem jó!
TA1CCR0 = CCI0A = TA1.0 = pl. P2.0 pin. TA1CCR1 = CCI1A = TA1.1 = pl. P2.1 pin. De azért nézd meg az adatlapot, mert lehet, hogy ismét rosszul emlékszem, tévedek!!!
És a többi rendben volna szerinted? Mert már mindenfélét próbáltam..... Egyébként a 2553-as adatlapjában mindennek benne kellene lennie, ami kell nekem? Van esetleg még más információt tartalmazó pdf erről a mikrovezérlőről?
Ha csak a piros és a zöld ledet akarod villogtatni, akkor szerintem a Timer beállítási hiba kivételével jó. A P2.1 beállítást elég egyszer megcsinálni. (használd a "Kód" gombot, ha kódot raksz be)
Idézet: „Van esetleg még más információt tartalmazó pdf erről a mikrovezérlőről?” F.U.G
Mi a sz@..ért írja ezt ki nekem az IAR? (Bocsánat, már az ideg beszél belőlem)
Idézet: „Warning[Pe1053]: conversion from integer to smaller pointer D:\Msp430_and_all_Msp\Projektek\MSP430F5529\Flash_bank1\main.c 51” A f5529-es mintapéldái alapján, a Bank1-be szeretnék írni word típusú értékeket.
Kipróbáltam "char, int, long" típussal is, de mindig a fenti figyelmeztetést kapom. Lefuttattam a programot, és teleírta az SFR-t mindenféle zagyvasággal, illetve a "data" változó tartalmával. (Remélem nem nyírtam ke ezzel az MCU-t.)
Próbáltam a CCS v5.5-el az f5529 flash bank1-et írni a mintaprogram alapján, a 0x10000 címtől. Sikertelenül. A hiba dettó mint az IAR-al.
Böngésztem a netet, és arra jutottam, hogy vagy én vagyok ennyire tudatlan, vagy más még nem próbálta a flash2 írását, vagy mindenkinél minden rendben van. Na mindegy... Tehát a lényeg. Ha valaki szeretné az f5529 flash memóriáját írni a 0x10000 címtől, akkor ne felejtse el, IAR esetén átkapcsolni a projekt "Options...->General Options->Data Model->Large" opciót. A CCS-nél is hasonló opciót kell keresni. Így már lehet a flash bank1-be írni "char, uint" típusú változókat a WRT paranccsal, és long típust a BLWRT paranccsal. Egyébként a flash és az info memória írás, olvasás, törlés, sokkal rugalmasabb mint a g2xxx sorozatnál. Idézet: Ha nem hexában írod, már tegnap észrevehettük volna, hogy ez már a 64 K-s (16 bites címzés felső határán) túl van. De nem esett le a húszfilléres, s úgy láttam, hogy mindent a gyári mintaprogramhoz hasonlóan csinálsz.„a 0x10000 címtől” Idézet: Én még nem próbáltam ilyet. „vagy más még nem próbálta a flash2 írását” Idézet: „Ha nem hexában írod,” Igen, tudom, elég kusza a fogalmazásom, és sok esetben eléggé helytelen. Idézet: „s úgy láttam, hogy mindent a gyári mintaprogramhoz hasonlóan csinálsz.” Miután az adatlapban, és a 55xx FUG-ban sem találtam megoldást a problémámra, kínomban letöltöttem a gyári mintaalkalmazásokat, remélve, hogy a csomagban lesz flash írással kapcsolatos program. Van, három is. Az info memory írással nem is volt gond, de a 64k-s bank/flash írás egy kicsit kiakasztott. Pláne az akasztott ki, amikor ma olvasva az IAR help-jét rájöttem, hogy egy kattintással megoldódott minden, és nem a programban van a hiba. Egyébként hasznosak a gyári programok, mert az órajel beállítást az adatlapból és a FUG-ból oldottam meg, és a PMM modulban olyan hülyeségeket kapcsolgattam, hogy csoda, hogy egyáltalán megy/ment 25MHz-en a mikrovezérlő.
Nem volt semmi baj a fogalmazással. A nullákat kellett volna csak megszámolnom, mert "szóképes olvasással" 0x1000-nek olvastam.
Az a baj, hogy az IAR is majdnem így értelmezte (0x00-nak nézte), ezért írta tele az SFR-t, amiből újrafordítás után sem tűntek el a beírt adatok. Most keresem, hogy tudom eme hibámat helyreállítani, de itt is eléggé kusza az út.
A korábban jelzett ADC "ugrálásra" nem találtam jobb megoldást, mint a sok (16 - 32 - 64) mérést és átlagolást. Az itt bemutatott 4_adc_multi_ref1 programom 16 MHz-en futtatva is elfogadható eredményt ad, bár a gyakorlati alkalmazásokhoz nem a legszerencsésebb egy változó tömb bevezetése.
Most az Energia wiring_analog.c forrásállományába azt barmoltam bele, hogy az ADC egyetlen változóba összegzi az eredményeket (minden konverzió szoftveres újraindításával). Nagyjából így néz ki a módosított függvény:
Ha nem osztod le ~1MHz-re az ADC órajelét, rosszak voltak az eredmények? Vagy más oka van az osztásnak?
A leosztást nem én raktam bele, az így volt (van) eredetileg is. Még nem volt időm megnézni, hogy annak van-e hatása. Mindenesetre az adatlap szerint ADC10SR = 0 esetén 0.45 - 6.3 MHz közötti órajel megfelel, tehát nem várható nagy különbség.
Sziasztok!
Lenne egy kérdésem. Az Energia fejlesztő platform a megírt program lefordítása után megadja a lefordított kód méretét. Az IAR fejlesztő platformban hol tudom megnézni a lefordított kód méretét?
Ha a Project/Options menüben a Linker kategória List lapján pipát teszel a Generate Linker Listing opcióhoz, akkor a generált .map állomány végén találod meg a keresett információt.
MS430f5529.
A 2x64k-s flash memória részt (Flash2), újraírás előtt törölni kell? Ha a gyári mintát követem és a
kóddal törlöm a memóriát, akkor összeomlik a program. Az összeomlást az okozza, hogy a törlésnél megadott címen túl/előtt is töröl a törlési függvény, és nem tudom, hogy miért. A törlést a 0x10000 címtől kezdené, de az alábbi két sort is törli ami valószínűleg a program része. Ennek még nem néztem utána.
Próbáltam felülíratni az adatokat, amiket simán felülírt, de nem tudom, hogy ez jó-e így, vagy vacakoljak a törlési funkcióval? Idézet: Esetleg ott van a Reset és interupt vektorok táblázata. „az alábbi két sort is törli ami valószínűleg a program része.”
Igen, már megtaláltam. A 0xfffe-ff a reset (4400), a 0xffe0-tól van az USCIB0 és az USCIA0 megszakítás vektor.
De az még mindig rejtély, hogy miért törli ezeket a címeket.
Üdv Mindenkinek!
TCS230-as színérzékelővel volt már dolga valakinek? Sajnos csak arduinos mintát találtam, és energiában (lábkiosztás módosításával) nem hajlandó lefordulni se. Még másfél hónappal ezelőtt rendeltem csak úgy próba cseresznye módon, jó mókának tűnt, de frekvencia kimenete van, és az ilyen még magas nekem egyenlőre (frekimérés msp430-al). Ha sikerül használni a modult akkor valamire jó lesz a kis robot autón, ha nem akkor 1500Ft ellenében elvihető.
Készítettem két UART bluetooth modult LMX9838-as IC-vel. Mindkét modul hibátlanul kommunikál a számítógéppel, UART-on és bluetoothon keresztül is. Viszont amikor a két modul van egymással kapcsolatban akkor zavaros az átvitt adat. Sebességek, és minden egyéb jónak tűnik. (a soros port a launchpadon keresztül van, de ez nem hiszem hogy fontos.) Valakinek van ötlete miért van ez?
Szín érzékelős probléma megoldva jó pár óra fejfájás után (rémes hogy milyen egyszerű). Működik szépen, csak nekem egyenlőre semmi haszna. Maradt a bluetooth-os nyavaja, amivel viszont semmire nem jutottam.
Az Energia tone(pin, frequency, duration) függvénye nem a harmadik (opcionális) paraméterrel megadott ideig muzsikál, hanem csak annak feléig. Ebben viselkedése eltér az Arduino-tól, tehát inkompatibilitás. Akit ez zavar, hozzám hasonlóan kijavíthatja a Tone.cpp forrásállományban (energia-01010E0010/hardware/msp430/cores/msp430 mappában).
A hibás sor:
Helyes így néz ki:
|
Bejelentkezés
Hirdetés |