Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1005 / 1319
(#) icserny válasza matheattila hozzászólására (») Júl 25, 2011 /
 
Idézet:
„maximum annyit tehetsz rá amennyit az adatlapján ír, PIC18F2455 esetén ez 48MHz”
Nagy tévedés! Az adatlap szerint 24 MHz a legmagasabb frekvencia, amit HS vagy HSPLL üzemmódban ajánl. Ennél magasabb bemenő frekvenciáknál kizárólag EC vagy ECPLL módot ajánl az adatlap 2-3. táblázata.
(#) matheattila válasza icserny hozzászólására (») Júl 25, 2011 /
 
Tudom, de én egy szót se ejtettem a HS, HSPLL vagy EC, ECPLL -ről, csupán annyit mondtam, hogy az adatlap szerint max 48MHz-es órajellel működik és hogy ahhoz milyen kondi kellene
(#) watt válasza matheattila hozzászólására (») Júl 25, 2011 /
 
Szép ferdítés, de amit írtál nem erre utal.
(#) ndavid87 hozzászólása Júl 25, 2011 /
 
Sziasztok!

Pic16f877a-n szeretném használni spi és i2c modult felváltva.
Annyi lenne a feladat, hogy először i2c-n olvasok egy ic-t, majd átváltok spi-re. Ha szükséges akkor újra vissza i2c-re, írás, és megint vissza spi-re.
Megoldható ez?
Ha igen, mire kell figyelni átálláskor?
(#) icserny válasza matheattila hozzászólására (») Júl 25, 2011 /
 
Idézet:
„az adatlap szerint max 48MHz-es órajellel működik és hogy ahhoz milyen kondi kellene
A (külső) órajelhez nem kell kondi, csak a kristály rezonátorhoz. Abból pedig 24 MHz a legnagyobb frekvenciájú, amit az adatlap ajánl.
(#) watt válasza ndavid87 hozzászólására (») Júl 25, 2011 /
 
Én inkább egy szoftveres megoldást használnék a lassabb perifériára,
(#) ndavid87 válasza watt hozzászólására (») Júl 25, 2011 /
 
Ezt szerettem volna elkerülni, mert nem sikerült még működő i2c kezelő rutint írnom.
Kell viszont a gyors spi, így akkor megint nekiülök.
Köszönöm a gyors választ.
(#) krisztianAMG hozzászólása Júl 26, 2011 /
 
Sziasztok!

Nem ismertek valami megoldást az itt felvetett problémára?

Üdv Krisztián
(#) icserny válasza krisztianAMG hozzászólására (») Júl 26, 2011 /
 
A megoldás: tanulni,tanulni, tanulni. Anélkül még segíteni sem tudunk...
(#) erdoszoli hozzászólása Júl 26, 2011 /
 
Sziasztok,
megint lenne egy kérdésem felétek. Ezzel mi a probléma ? :
void DOGM_write_string(char *buffer)
{
while(*buffer) // Write data to LCD up to null
{
Delay10TCYx(4); // Wait while LCD is busy
DOGM_write(*buffer); // Write character to LCD
buffer++; // Increment buffer
}
return;
}

void DOGM_write(char data)
{
RS_bit=1;
switch(data)
{
case '\f': DOGM_clr(); // Kijelző törlés
break;

case '\n': DOGM_position(0,1); // Új sor
break;

default: byteout(data); // Karakterkiírás
break;
}
cursor++;
if(cursor>0x0F)
{
if(cursor<0x3F){DOGM_position(0,1);cursor=0x40;} //2.sor eleje
else if(cursor>0x4F)
{
DOGM_position(0,0);cursor=0; //1.sor eleje
}
}
RS_bit=0;
}

Ezt egy EADOGM162 -es COG kijelzőhöz írtam, és a szöveg kiíró része nem megy jól. Ha simán ezt a tesztet futtatom :
while(1)
{
DOGM_write(i);
delay_sec(1);
i++;
}
akkor szépen írkálja a karaktereket sorban , még az újsor és törlés karaktert is felismeri, de ha simán beirom hogy DOGM_write_string("Szevasz tavasz"); erre mindig mást ír ki , kb 2-3-4 karaktert de nem is betűket hanem valami furcsaságot. Tudtok valami támaszt adni ?
(#) icserny válasza erdoszoli hozzászólására (») Júl 26, 2011 /
 
Az alábbi sorban használt késleltetés túl rövid lehet!
  1. Delay10TCYx(4); // Wait while LCD is busy[/quote]
(#) erdoszoli válasza erdoszoli hozzászólására (») Júl 26, 2011 /
 
Oh , átírtam úgy hogy a szöveget beraktam egy karaktertömbbe, és így már kiírja:
....
char szoveg[]="Szevasz tavasz" ;
....
DOGM_write_string(szoveg);
....
A kérdésre viszont szívesen várnám a választ hogy miért nem ment?Sima LCD lib-nél az ilyen kiíratás ment.
(#) watt válasza ndavid87 hozzászólására (») Júl 26, 2011 /
 
Érdemes megnézni a C-fordítókban, mert van készen!
(#) icserny válasza erdoszoli hozzászólására (») Júl 26, 2011 /
 
Szövegkonstans kiíratásához a mutatót char *buffer helyett
const rom unsigned char *buffer-nek kellett volna deklarálni (ebből az unsigned nem kötelező...).

A char szoveg[]="Szevasz tavasz" ; sorral áttetted a szöveget a RAM-ba, így a char* típusú mutató eléri.
(#) helektro hozzászólása Júl 26, 2011 /
 
Vki a 18F sorozatban lévő UserId-t olvasta már ki programból (ill. programozta már)?

Nekem az alábbi nem működik:
  1. MOVLW   upper DEVICE_DATA
  2.     MOVWF   TBLPTRU
  3.     MOVLW   high DEVICE_DATA
  4.     MOVWF   TBLPTRH
  5.     MOVLW   low DEVICE_DATA
  6.     MOVWF   TBLPTRL
  7.  
  8.     MOVLW   0x08
  9.     MOVWF   _TEMP2_
  10. vmi_20
  11.     TBLRD*+
  12.     MOVF    TABLAT,W
  13.  
  14.     DECFSZ  _TEMP2_
  15.     BRA     vmi_20


A DEVICE_DATA a 0x200000 címre mutat és a TBLPTR-be jó cím is van.
(#) ndavid87 válasza watt hozzászólására (») Júl 26, 2011 /
 
A programot asm-ben írom, más programnyelvet nem nagyon ismerek.
Ebben az adatlapban láttam ilyen megoldást. Külön, külön működik mind az spi és az i2c modul, de együtt az i2c olvasás/írás után az spi már nem működik nálam.
Most félreraktam a dolgot, és nekiültem a szoftveres i2c-nek (az spi mennyivel egyszerűbb ).
Leginkább az a gond, hogy már régóta húzódik ez a munka, és szerettem volna minnél hamarabb befejezni.
Ha közben valakinek van tippje/tapasztalata két hardveres modul felváltva használatára azt szívesen venném.

watt: Még egyszer köszönöm a segítséget!
(#) watt válasza helektro hozzászólására (») Júl 26, 2011 /
 
Így a W-ben az utolsó ID marad csak. Egyébként jól csinálod, működnie kéne, az adatlap szerint.
(#) trudnai válasza helektro hozzászólására (») Júl 26, 2011 /
 
Es a W-t hova toltod be? Mas cimekrol tudsz olvasni? (Pl normal program terulet, Device ID ill Config bitek)
(#) icserny válasza helektro hozzászólására (») Júl 26, 2011 /
 
C18-ban próbálkoztam egyszer ilyesmivel. Nekem működött. A beírást PICkit2-vel csináltam, a linkelt program csupán kiolvassa a korábban beírt adatot.

A belinkelt programodban nem látom, hogy a beolvasott adatot elraknád vagy felhasználnád.
(#) helektro válasza icserny hozzászólására (») Júl 26, 2011 /
 
Tudom, hogy nem rakja el sehova, és elvileg a lefuttatása után csak az utolsó marad meg a w-ben.
Csak a lényeget akartam bemásolni.
Pickit3-al debugolva egy 18F24k22-t mindig 0-t kapok vissza, pedig elvileg be van írva a userid-ba az adat.
Más helyről tudok olvasni, pl. a program területről tblrd-vel.
Ill. ha el is tárolom az adatokat, ott mindig 0 jelenik meg.

Ide a készülék sorozatszámát akartam tenni, mert nagyobb darabszámba fogok készüléket gyártani és a program kódot levédem, és ez egy egyszerű módja lett volna a készülék sorszámának tárolására.
(#) Hp41C válasza helektro hozzászólására (») Júl 26, 2011 /
 
Szia!

Ha a programtárat "levéded", akkor a programbóli olvasását engedélyezned kell. Ld. cogfig regiszterek EBTRx bitek...
Az EECON1 regiszer EEPGD bitjét 0-ra állítod?
(#) helektro válasza Hp41C hozzászólására (») Júl 26, 2011 /
 
Egyelőre semmi sincs levédve, szabadon olvasható, írható minden. De így sem megy.
Az a baj, hogy a neten sem találok olyan asm kódot, ahol leírnák, hogy ez így működik. Mindenhol csak az van, hogy így működnie kell, meg a doksiban ez, meg az van...
Úgy tűnik, mintha senki sem használná ezt a funkciót.
(#) watt válasza helektro hozzászólására (») Júl 26, 2011 /
 
Én is csak a PIC írása/olvasása közben használom a WPB-ben, de az elvileg ugyanazokat a program utasításokat hajtja végre a PIC-ben, mint amit te is használsz. Ha lesz időm megnézem, nekem megy-e!
(#) icserny válasza helektro hozzászólására (») Júl 26, 2011 /
 
A PICKit2 a saját programjával megmutatja a UserID-t. Ott ellenőrizheted.

Én a HID bootloaderrel úgy jártam, hogy beírtam a UserID-t, a PICkit2 mutatta. Azután az első bootloader használat után ki is törölte... Módosítani kelett, hogy ugyan ne törölje már ki, ha semmi köze hozzá.
(#) kalmangabi hozzászólása Júl 27, 2011 /
 
Üdv!

A kérdésem a következő:
Egy 16f871es PICnél mitől lehet az, hogy ha az ADCvel ha csak egy csatornát kezelek akkor tökéletesen működik, de ha többet (2) akkor egy bizonyos szintnél nem megy lejjebb a mért érték?
(#) icserny válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Próbáltál már csatornaváltás után hosszabb ideig várni? Mekkora a bemenő jelek forrásának az impedanciája (ellenállása)?

A mérés csak akkor lesz jó, ha a csatornaváltás és a konverzió indítása között eltelt adatgyűjtési időben az ADC mintavevő-tartó egységének kondenzátora beáll a mérendő feszültségre.
(#) kalmangabi válasza icserny hozzászólására (») Júl 27, 2011 /
 
A feszültségforrás egy 47Ks poti.
Akkor is ezt csinálja ha minkét ch 0V on van.
(#) icserny válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Idézet:
„A feszültségforrás egy 47Ks poti.”
Ez így nem felel meg az adatlapban leírt követelményeknek. Legalább egy kondenzátort tegyél utána (az ADC bemenetekre).
Idézet:
„Akkor is ezt csinálja ha minkét ch 0V on van.”
Zajt szed fel a bemenet, vagy a beállítás rossz.

Az adatlap előírja, hogy az adatgyűjtési idő (Tacq) és a konverziós időegység (Tad) milyen határok között lehet. Ezeket betartod?
(#) trudnai válasza kalmangabi hozzászólására (») Júl 27, 2011 /
 
Idézet:
„A feszültségforrás egy 47Ks poti.”


Hogy lehet a feszultseg bemenet egy poti? Ebbol honnan tudjuk azt hogyan kototted be?

Azert talaltak ki a kapcsolasi rajzot, hogy hasznaljuk es abbol megertsuk mit csinaltal, mit hova kotottel be... Es azert talaltak ki a forras programot is, hogy abbol lassuk mit csinaltal. Anelkul vagdalozunk itt a levegoben es probaljuk kitalalni hogy csinalhattad meg es abbol rajonni mi lehet a hiba -- magyaran a lustasagod miatt, hogy nem csatoltal semmit nekunk kell extra munkat csinalni, ami azt hiszem nem fair.
(#) kalmangabi válasza trudnai hozzászólására (») Júl 27, 2011 /
 
Elnézést.

Ugyan ezzel a hardware-rel jól működik ha olyan program fut rajta ami csak az AN0át figyeli. Szóval nem hiszem, hogy zaj.
Az időzítés meg szerintem azért jó mert ha mindkettő bemenet le van húzva a földre akkor is ezt csinálja. Vagyis nincs töltés amit ki kéne "süttetni" két mérés között.

ADC.JPG
    
Következő: »»   1005 / 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