Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Igen tényleg oda való.
Idézet: „((40U*256)+96)” Működik , soha nem jöttem volna rá ,hogy a fordító nem tudja magától mekkora az X*Y. Köszi
A 142*256=36352 nem fér bele az alapértelmezett signed integerbe, amivel a fordító a sima beírt számokat kezeli. Nem a 40*256-ra warningolt, bár lehet, hogy az esélyt is latolgatta...
Értem amit írsz. Csak az nem fér bele a fejembe hogyha van két szám amit fordítás előtt összeszorzok akkor annak miért kell default méret. Hiszen egy default méret nem befolyásolja az eredményt.
Én azt gondolnám hogy a szorzatnak van egy eredménye és az vagy belefér a definiált változóba vagy nem.Persze ha nagyobb lenne az eredmény mint amit definiáltam (unsigned int) akkor megérteném hogy reklamál.
Nem tudom milyen fordítót használsz de ez az egész C-nek egy marhasága. Ha nem adsz meg a műveletben egy tagnak ilyen specifikációt akkor csak utána akarja ráhúzni az unsigned-et vagy valami ilyesmi már nem emlélszem, ráadásul angolul olvastam anno.A signed intbe meg ahogy watt is írta nem fér bele.
A hozzászólás módosítva: Feb 25, 2014
Van valami szabály a típuskonverzióra. Talán ahhoz van valami köze, de már én sem emlékszem pontosan mi az ok. De a C már csak ilyen, elég kötött. De én szeretem a kötöttségét, mert ha minden warning eltűnik, akkor nyugodt vagyok. Addig meg küzdök.
Sziasztok!
dsPIC33Fj256GP710 mikrokontrollerrel ismerkedek, de van egy kis problémám az UART-nál . if(U2STAbits.URXDA == 1) { U2TXREG = U2RXREG; reg = U2RXREG; LcdText[y]=reg; LcdProcess(); y++; } Küldök egy karaktert neki, vissza is küldi, de az LCD kijelzőre 4 byte-os FIFO miatt csak 4 küldött karakterrel később írja ki az első küldött karaktert. Hogy tudnám kiolvasni rögtön a FIFO-ból? Esetleg lehet maszkolni valahogy a FIFO-t, hogy csak 1 byte-os legyen? Köszi: Gábor.
Bár soha nem használtam ilyet, de kizárt, hogy a FIFO-t bármikor ne lehessen kiolvasni...
Közbe rájöttem, LCD függvénnyel volt a baj, de köszi a választ.
A
helzett inkább
kellene használni. Az előbbi két karaktert vesz ki a bufferből.
Emlékeztek még a tris és az option utasításokra? Nagyon jól használhatók az Enhanced Mid-Range kontrollereknél. Bármilyen érték is van a BSR (Bank Select Register) -ben, az utasítások a TRIS illetve az OPTION_REG regiszterbe töltik a W tartalmát. A tris 0x05 a TRISA-ba, a tris 0x06 a TRISB-be, a tris 0x05 a TRISA-ba.
Hogyan kellene megváltoztatni a decimális kiíratást hogy kiírjon 0-val kezdődőt is pl. 0.275 ?
do { s[i]=data%10+ '0'; data /=10; i++; if(i==ndigits) {s[i]='.'; i++;} } while(data>0); Idézet: „Hogyan kellene megváltoztatni a decimális kiíratást hogy kiírjon 0-val kezdődőt is pl. 0.275 ?” Valahogy így!
Bocs, ez momentán MSp430-hoz és szoftveres UART kimenethez készült, de a lényeget biztosan ki tudod hámozni belőle! A lényeg a leállásí feltétel kibővítése. Akkor állunk le, ha már egyik feltétel se teljesül, azaz a kiírandó szám "elfogyott" és a tizedesjegy előtt legalább egy számjegyet már kiírtunk.
Köszönöm!
Kiegészítettem a második feltétellel, most azt írja ki amit akartam
Idáig a "PICkit3 programmer" nevű program 1.0.0-ás verzióját használtam programok beégetésére. Most láttam hogy van ennek egy új verziója, a 3.10 (Bővebben: Link). Letöltöttem és feltelepítettem, de nem ismerte fel a PICkit3-at, azt írta hogy frissíteni kell a bootloaderjét. Rányomtam hogy frissítse ami meg is történt, azóta gyönyörűen felismeri a programozót. Viszont most meg így az MPLAB (MPLAB IDE v8.89) nem hajlandó felismerni. Gondolom az MPLAB-ban is kellene frissítenem valamit, valahol...
A kérdésem az hogy mit és hol? Amúgy tök jó ez az új program, ebben már végre nem kell kijelölnöm a mikrovezérlő típusát mert felismeri magától. Mint anno a PICkit2 is tette. A hozzászólás módosítva: Márc 8, 2014
Félek, hogy csak az X-el fog működni, de lehet, hogy tévedek...
Na hát attól én is félek! Megpróbálom még hogy felrakom az MPLAB IDE 8.92-t, hátha azzal jó.
Idézet: „Most láttam hogy van ennek egy új verziója, a 3.10...” Nem, az nem a "PICkit3 programmer" nevű program továbbfejlesztése, hanem egyszerűen a PICkit3 Scripting Host egy PICkit2 -szerűséget csinál belőle a firmware lecserélésével (minden hibájával). Csak azokat a típusokat tudod vele kezelni, amiket a PICkit2 a Pk2DeviceFile 1.62.14 -gyel. A letöltött firmware nem kompatibilis az MpLab -bal és az MpLbaX -el. Ezzel a programmal lehet visszaállítani a kompatibilis firmware -t. Ugye emlékszünk még, hogy minden kontroller család váltáskor firmware csere zajlik és a PIC24FJ256GB106 program memóriájának írási száma korlátozott: Cell Endurance 10000. A hozzászólás módosítva: Márc 8, 2014
Akkor viszont inkább visszateszem az eredeti firmware-t. Gondolom ezt a "PICkit3 programmer 1.0.0" fogja megtenni nekem.
Idézet: „Ugye emlékszünk még, hogy minden kontroller család váltáskor firmware csere zajlik és a PIC24FJ256GB106 program memóriájának írási száma korlátozott: Cell Endurance 10000.” Igen ezt tudom jól. Gondolom a PIC18F* egy családnak számít, szóval eddig egyszer lett írva a PICkit3-mam programmemóriája úgyhogy még van 9999 alkalom. Ugyanis én csak PIC18F-ekre fejlesztek.
PICkit3 Scripting Host tudja visszatenni.
Igen, a PICkit3 programmer 1.0.0 nem találja a PICkit3-mat. Viszont ezt a PICkit3 Scripting Host-ot hol találom? (A gugli most nem jött be.)
Most installáltad, az állította át a firmware -t. Itt.
Találtam benne egy olyan menüpontot hogy átkapcsolás MPLAB-módba vagy valami hasonló. Arra rányomtam és utána már megismerte az MPLAB! Mondjuk ki is írta hogy újabb a firmeware a PICkit3-mon aztán leokéztam és utána ha jól értettem az MPLAB maga visszatöltötte rá a régi firmware-t. (Már csak 9998. )
Üdv. Lenne egy 4x20-as kijelzőm azon gondolkoztam hogy ha 4 bites üzemmód helyett 8 bitesben kötném be és programoznám be akkor elvileg a megjelenítés frissítési sebessége gyorsabbnak kell ,hogy legyen? Vagy tévedek ezzel? Csak azért jár ilyenen az agyam mert van egy épített műszerem ami elég sok mindent ír ki real time és ha lehet még ezzel is szeretném gyorsítani az egész műszert.
A hozzászólás módosítva: Márc 9, 2014
Valamivel, gyorsabb, de a különbség elég minimális. Az általam közzétett LCD driverhez csináltam CPU használat mérő programot, az eredményt táblázatba tettem (a mérést éppen AVR-el csináltam, de az eltérés PIC-el is hasonló volt).
Sziasztok!
PIC24E output compare moduljával nem boldogulok. A feladat az volna, hogy egy (TMR3) számlálót külső események léptetnek, és amikor ez a számláló x állásba kerül, utána y idővel H -állapotba kéne küldeni egy kimeneti lábat, majd mikor a számláló k állásba, az után z idővel L-állapotba a lábat. Az idők nagyon kicsik, us-os nagyságrendbe esnek, és pontosnak is kellene maradnia, ezért kell az OC modult használnom. Addig jutottam, hogy ha TMR3 x állásban van, az megszakítást okoz, és akkor feltöltöm OC1R és OC1RS regisztereket y és k értékkel, valamint elindítom OC1TMR -t. Amikor OC1TMR = y , akkor a kimeneti láb H lesz, na de ilyenkor meg kéne állítani (lehet hogy törölni is) OC1TMR-t, és csak TMR3 = k megszakításkor újraindítani. De fogalmam sincs hogy melyik az az üzemmódja OC -modulnak, amiben ezt a legegyszerűbben tudná, és hogy konfiguráljam OC-t. Eleve a kettős komparálás is zavar, hogy OCxR regiszerekből csak sync vagy trigger események hatására kerül át az adat a valódi comparator bufferekbe. PIC24E OC module
DsPic gyári példa forráskódjában találtam az alábbi részleteket:
Mik ezek a fordító által is felismerhetetlen psvaccess és movpag mnemonic -ok?
Nem is tudtam, hogy van ilyen...
Minden bizonnyal az EMAC1SA0, EMAC1SA1, EMACSA2 regiszterekben érdemes keresni.
Jó tudni, én is azt hittem, hogy nincs beléjük írva gyárilag MAC cím...
assembly parancsok
psv access Bővebben: Link 12. oldal movpag... Bővebben: Link 40. oldal A hozzászólás módosítva: Márc 14, 2014
|
Bejelentkezés
Hirdetés |