Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1166 / 1319
(#) cua válasza watt hozzászólására (») Feb 22, 2014 /
 
Természetesen van más tokozásban is, ezekkel csak arra utaltam, hogy profi felhasználókra (is) gondoltak. 9x9mm/128pin azért nem semmi
(#) VSzabi hozzászólása Feb 22, 2014 /
 
Sziasztok!
Segítségeteket szeretném kérni a problémám megoldásához. A piccolo alapján, PIC14K50-nel csináltam egy relépanelt áram és fesz méréssel.
A pic minden lábhoz van funkció rendelve. B6 B7 C4 C5 digit kimenetek a relék ki be kapcsolásához.
A többi AN4-AN11 analóg bemenet az áram és fesz méréshez. A ref fesz. 1,024V így az átszámítással nem kell foglalkozni (1024/1023).
A relék 14V-ot kapcsolgatnak ezért 1:15 feszosztót tettem a bemenetre. 4-es eltolással szeretném megkapni a mért feszt. A digitális kimenetekkel nincs gondom a reléket tudom kapcsolgatni de az analóg nem úgy működik ahogy én szeretném. Valamiért ha kikapcsolok egy relét akkor 0 értéket kapok, ez jó is, de eközben megváltozik egy másik csatornán mért érték amit a pc fele küld, amin nem is változtattam.
Amit még tapasztaltam, az a kisebb értékek 0-nak jelennek meg. Ha a küldés előtt megnövelem a konverzió eredményét, szorzással vagy eltolással, akkor valamit átküld. Csatoltan a main.

A decimális átváltás nem egészen világos. Esetleg ha ezt valaki elmagyarázná nagyon megköszönném.
Ebben a függvényben van definiálva. A tömb és a modulo művelet amit szeretnék érteni, hogy hogyan hajtódik végre.
void outdec(long data, unsigned int ndigits) {
static char sign, s[12];
unsigned int i;
i=0; sign='+';
if(data<0) { sign='-'; data = -data;}
do {
s[i]=data%10 + '0';
data=data/10;
i++;
if(i==ndigits) {s[i]='.'; i++;}
} while(data>0);
_user_putc(sign);
do{
_user_putc(s[--i]);
} while(i);
}
(#) icserny válasza VSzabi hozzászólására (») Feb 22, 2014 /
 
Idézet:
„A decimális átváltás nem egészen világos.”
Az outdec() függvény feltételezi, hogy valamilyen kisebb egységben tárolod az eredményt. Például feszültségmérésnél mV-okban, hőmérésnél tizedfokokban. Ez teszi lehetővé, hogy egész típusú változóban (előjeles, 32 bites!) tárolhassunk minden értékes jegyet.

A kiíratásnál pedig megmondjuk, hogy hány tizedesjegyet "vágjunk le", hogy a nagyobb eygséget kapjunk. Pl. mV -> V esetén 3-at, tizedfok -> fok esetén 1-et.

Ha nem sürget az idő, én felszorzás helyett megfelelő számú mérés összeadását javaslom. Így végeredményben sok mérés átlagát küldöd ki, ami stabilabb eredményt ad.
(#) watt válasza cua hozzászólására (») Feb 22, 2014 /
 
Én már alig várom. A baj az, hogy ha normál feladat van, arra jó a 18F, a következő lépcső a TFT RGB grafika 800x480, vagy a High Speed USB, vagy a normális Ethernet, amire nincs jó megoldás PIC vonalon, az MZ lenne az...
(#) potyo válasza watt hozzászólására (») Feb 22, 2014 /
 
Elárulod, hogy mi az a feladat, amire nem elég a PIC32MX, de elég lenne a PIC32MZ?
A hozzászólás módosítva: Feb 22, 2014
(#) watt válasza potyo hozzászólására (») Feb 22, 2014 /
 
HighSpeed USB pl. De egy TFT-t se lehet vele kényelmesen meghajtani, ami 800x480-as... A 330MIPS talán jobban elég.
Arról nem is beszélve, hogy a flash cell endurance 10k és nem 1000!
(#) kly válasza watt hozzászólására (») Feb 22, 2014 /
 
Így van. Én is benevezek egyre az új RGB V3 propeller clock fejlesztésnél.
Egyébként elég jól megszivattak mert a régi MX340F512H-val véletlenül egyik fajta sem lábkompatibilis,cserébe kaptam remap-ot (kár hogy a táplábakat nem lehet)

Köszönöm Microchip én is szeretlek..........
A hozzászólás módosítva: Feb 22, 2014
(#) Attila86 hozzászólása Feb 23, 2014 /
 
Írtam (írok) egy programot. Ha debuggolom a PICkit3-mal akkor működik az áramkör gyönyörűen. Viszont ha átváltok az MPLAB-ban programozási módba majd beleégetem a szoftvert akkor nem csinál semmit sem a PIC. Még egy egyszerű LED-et sem tudok így bekapcsolni míg ugyan ez debuggerben viszont megy. Mi lehet a gond? (MPLAB IDE 8.89, PICkit3, PIC18F4685)
(#) watt válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
MCLR hogyan van bekötve? (De megint valami olyasmi lesz, amire mi az életbe nem jövünk rá ennyi infóból...)
(#) Attila86 válasza watt hozzászólására (») Feb 23, 2014 /
 
Így van bekötve:
A hozzászólás módosítva: Feb 23, 2014
(#) nedudgi válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
A projektet újrafordítottad Release módban?
(#) Attila86 válasza nedudgi hozzászólására (») Feb 23, 2014 /
 
Igen, persze.
(#) icserny válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
A rajz szerint az MCRL láb (RE3) nincs felhúzva!
(#) Attila86 válasza icserny hozzászólására (») Feb 23, 2014 /
 
Igen, de semelyik eddigi mikrovezérlős áramkörömnél sem volt és azok mégis mentek.
Most nézem, ez esetleg gond lehet?
"config MCLRE = ON"
(#) ktamas66 válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Igen, gond .
Ha OFF-ra teszed akkor meg ha visszamész Debug módba panaszkodni fog és felajánlja, hogy kikapcsolja.
A hozzászólás módosítva: Feb 23, 2014
(#) Attila86 válasza ktamas66 hozzászólására (») Feb 23, 2014 /
 
Hopsz.
(#) icserny válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Idézet:
„Igen, de semelyik eddigi mikrovezérlős áramkörömnél sem volt ...”

Mibe telik berakni egy 10 kOhmos ellenállást az MCLR és a VDD közé?
(#) Attila86 válasza icserny hozzászólására (») Feb 23, 2014 /
 
Rengeteg helyet foglal! (Ne nevess! ) De tényleg, sokszor annyira kevés hely van a nyákon hogy az ilyenekkel is spórolni kell. Na meg a végleges áramkörben úgy sem kell mert letiltom az MCLR-t és kész.
(#) potyo válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Idézet:
„Na meg a végleges áramkörben úgy sem kell mert letiltom az MCLR-t és kész.”


És azt megnézted már, hogy az mclr lábon van-e belül felhúzó, vagy majd néhány hét múlva jön a következő kérdés, hogy miért resetel az áramkör véletlenszerűen, amikor elmész az asztal mellett?
(#) Attila86 válasza potyo hozzászólására (») Feb 23, 2014 /
 
Konkrétan a most használt mikrovezérlőben (PIC18F4685) nincs belső felhúzó ellenállás az MCLR lábon. A nálam általánosságban használt PIC18F25K80-ban viszont van.
(#) watt válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
És le van tiltva a programban?
(#) Attila86 válasza watt hozzászólására (») Feb 23, 2014 /
 
Igen.
(#) watt válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Nem olvastam a korábiakat az oldalváltás miatt, akkor még sem volt letiltva programból...
De mindenféleképpen kell oda a 10k, ez alapvető dolog, ha csak nincs belső...
A hozzászólás módosítva: Feb 23, 2014
(#) potyo válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Azt hol látod, hogy a 18F25K80-ban van belső felhúzó az MCLR lábon?
(#) Attila86 válasza potyo hozzászólására (») Feb 23, 2014 /
 
PADCGF1, REPU
(#) potyo válasza Attila86 hozzászólására (») Feb 23, 2014 /
 
Azt bekapcsolhatod, de ahhoz először el kell indulnia a kódnak! Ha valami szivárgóáram elhúzza felfelé a lábat kívülről, és programozás módban tartja a kontrollert, akkor el sem indul a kód benne, így be sem tudja kapcsolni a felhúzást a lábon, hogy aztán már stabilan tartsa a potenciálját.
(#) VSzabi válasza icserny hozzászólására (») Feb 24, 2014 /
 
Köszönöm a gyors választ!
Megpróbálom összehozni a pillanatnyi és az átlag kijelzést is.
Még érdekelne a decimális átváltás és mitől függ, hogy hány elemű a tömb.
(Gory CDC cikkében is van hasonló átalakítás (binár-decimál) de ott sem találtam konkrét leírást az átalakítás folyamatáról.
for(i=4;i>0;i--)
{
tempString[i] = (((char)(temp._word % 10)) & 0x0F) | 0x30;
temp._word /= 10;
}//end for)

Átírtam egyszer az outdec-et unsigned int-re mert 0-16 voltnál nem kell többet kiírni, ez pedig millivoltba és binárisan sem nagyobb mint 11 bit. Próbáltam visszaírni, de azóta a fordító nem engedi vissza long-ra.
void outdec(unsigned int data, unsigned int ndigits) -> void outdec(long data, unsigned int ndigits)
Error [1109] type mismatch in redeclaration of 'outdec'
Nekem kell egyáltalán long?
Volt márt majdnem pontos is a mérés de addig javítottam míg jelen pillanatban csak a reléket tudom kapcsolni, a küldött értékek helyett csak +0 jelenik meg.
(#) icserny válasza VSzabi hozzászólására (») Feb 25, 2014 /
 
Idézet:
„Error [1109] type mismatch in redeclaration of 'outdec'”
Ha egynél több helyen deklaráltad, akkor csak szinkronban változtathatsz rajta, erre figyelmeztet a fordító.
(#) kly hozzászólása Feb 25, 2014 /
 
Sziasztok

Erre :
  1. unsigned int _EEDATA(2) fooArrayInDataEE[]={
  2. ((40*256)+96)((142*256)+213) ,((4*256)+0)    ,((0*256)+170)  ,((1*256)+1),0x0102     ,       0x0000}


Miért kapom ezt:
Idézet:
„main.c:106:21: warning: integer overflow in expression”


Egyébként kiszámolja az értéket és hibátlanul beírja a FLASH-be de nem értem miért reklamál.
(#) usane válasza kly hozzászólására (») Feb 25, 2014 /
 
Ez inkább a C topikba illene.
Mindegyik mátrix elembe tegyél legalább egy tényezőhöz Unsigned jelzőt.
pl: ((40U*256)+96).
A hozzászólás módosítva: Feb 25, 2014
Következő: »»   1166 / 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