Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1167 / 1319
(#) kly válasza usane hozzászólására (») Feb 25, 2014 /
 
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
(#) watt válasza kly hozzászólására (») Feb 25, 2014 /
 
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...
(#) kly válasza watt hozzászólására (») Feb 25, 2014 /
 
É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.
(#) usane válasza kly hozzászólására (») Feb 25, 2014 /
 
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
(#) watt válasza kly hozzászólására (») 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.
(#) Kiss Gábor hozzászólása Feb 25, 2014 /
 
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.
(#) watt válasza Kiss Gábor hozzászólására (») Feb 25, 2014 /
 
Bár soha nem használtam ilyet, de kizárt, hogy a FIFO-t bármikor ne lehessen kiolvasni...
(#) Kiss Gábor válasza watt hozzászólására (») Feb 25, 2014 /
 
Közbe rájöttem, LCD függvénnyel volt a baj, de köszi a választ.
(#) Hp41C válasza Kiss Gábor hozzászólására (») Feb 25, 2014 /
 
A
  1. U2TXREG = U2RXREG;
  2. reg = U2RXREG;

helzett inkább
  1. reg = U2RXREG;
  2. U2TXREG = reg;

kellene használni. Az előbbi két karaktert vesz ki a bufferből.
(#) Hp41C hozzászólása Feb 27, 2014 /
 
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.
(#) VSzabi válasza icserny hozzászólására (») Feb 27, 2014 /
 
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);
(#) icserny válasza VSzabi hozzászólására (») Feb 27, 2014 /
 
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!
  1. /**------------------------------------------------------------
  2.  * Decimális kiíratás adott számú tizedesjegyre.
  3.  *-------------------------------------------------------------
  4.  * data - a kiírandó szám (előjelesen)
  5.  * ndigits - a kiírandó tizedesek száma
  6.  */
  7. void sw_uart_outdec(int32_t data, uint8_t ndigits) {
  8.   static char sign, s[12];
  9.   uint8_t i;
  10.   i=0; sign=' ';
  11.   if(data<0) { sign='-'; data = -data;}
  12.     do {
  13.       s[i]=data%10 + '0';
  14.       data=data/10;
  15.       i++;
  16.       if(i==ndigits) {s[i]='.'; i++;}
  17.     } while(data > 0 || i < ndigits+2);  //<--itt a lényeg!
  18.     sw_uart_putc(sign);
  19.     do {
  20.       sw_uart_putc(s[--i]);
  21.     } while(i);
  22. }


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.
(#) VSzabi válasza icserny hozzászólására (») Feb 28, 2014 /
 
Köszönöm!
Kiegészítettem a második feltétellel, most azt írja ki amit akartam
(#) Attila86 hozzászólása Márc 8, 2014 /
 
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
(#) watt válasza Attila86 hozzászólására (») Márc 8, 2014 /
 
Félek, hogy csak az X-el fog működni, de lehet, hogy tévedek...
(#) Attila86 válasza watt hozzászólására (») Márc 8, 2014 /
 
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ó.
(#) Hp41C válasza Attila86 hozzászólására (») Márc 8, 2014 /
 
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
(#) Attila86 válasza Hp41C hozzászólására (») 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.
(#) Hp41C válasza Attila86 hozzászólására (») Márc 8, 2014 /
 
PICkit3 Scripting Host tudja visszatenni.
(#) Attila86 válasza Hp41C hozzászólására (») Márc 8, 2014 /
 
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.)
(#) Hp41C válasza Attila86 hozzászólására (») Márc 8, 2014 /
 
Most installáltad, az állította át a firmware -t. Itt.
(#) Attila86 válasza Hp41C hozzászólására (») Márc 9, 2014 /
 
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. )
(#) janimester hozzászólása Márc 9, 2014 /
 
Ü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
(#) benjami válasza janimester hozzászólására (») 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).

cpu-used.jpg
    
(#) AZoli hozzászólása Márc 9, 2014 /
 
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
(#) cassis hozzászólása Márc 10, 2014 /
 
DsPic gyári példa forráskódjában találtam az alábbi részleteket:

  1. .ifndef __dsPIC33E  
  2.         psvaccess  w7              ; enable PSV bit in CORCON
  3.         mov     w3,PSVPAG               ; load PSVPAG with program
  4.                                         ;space page offset
  5. .else
  6.         movpag w3,DSRPAG            ; set DSRPAG to PSV page


Mik ezek a fordító által is felismerhetetlen psvaccess és movpag mnemonic -ok?
(#) GPeti1977 hozzászólása Márc 11, 2014 /
 
PIC32MX...-ből hogyan lehet kiolvasni a MAC címet?
(#) icserny válasza GPeti1977 hozzászólására (») Márc 11, 2014 /
 
Nem is tudtam, hogy van ilyen...
Minden bizonnyal az EMAC1SA0, EMAC1SA1, EMACSA2 regiszterekben érdemes keresni.
(#) potyo válasza icserny hozzászólására (») Márc 11, 2014 /
 
Jó tudni, én is azt hittem, hogy nincs beléjük írva gyárilag MAC cím...
(#) Saggitarius válasza cassis hozzászólására (») Márc 14, 2014 /
 
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
Következő: »»   1167 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem