Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   18 / 153
(#) watt válasza atideath hozzászólására (») Jún 18, 2010 /
 
Javaslom tanulmányozd az A/D átalakító működését, legalább elvi szinten, ha a valós működését még nem is érted. Külön fordíts figyelmet a referencia feszültség lehetőségeknek. Értsd meg a kalibrálás és a korrekciók fogalmát is és alkalmazd a matek órán tanult arányosságokat a helyes értékek előállításához a kijelzéshez. A Vdd pedig mérd, ne csak gondold. Vedd figyelembe, hogy akár a műszered is csalhat(ellenőrizd le)...
(#) icserny válasza laciubul hozzászólására (») Jún 19, 2010 /
 
A SourceBoost C kézikönyve itt található melyben ez áll:

unsigned char eeprom_read(unsigned char addr) (PIC16)
unsigned char eeprom_read(unsigned short addr) (PIC18)
(function) Reads eeprom content from address 'addr'. Works with PIC16 and PIC18
devices. Declared in eeprom.h Defined in eeprom.pic16.lib and eeprom.pic18.lib

Ezt én úgy értelmezem, hogy azon kívül, hogy a forráskód elején kell egy #include "eeprom.h", a lefordított kódhoz hozzá kell linkelni az eeprom.pic16.lib könyvtári állományt is. A dokumentációban/Helpben nézz utána, hogy ezt hogyan kell csinálni!

(Ha MPLAB alá telepítetted a fordítód, lehet, hogy a fenti .lib fájlt csak hozzá kell adni a projekthez? Project menü, Add File to Project...)
(#) laciubul válasza icserny hozzászólására (») Jún 19, 2010 /
 
és hol találok olyan .lib filet ?
(#) icserny válasza laciubul hozzászólására (») Jún 19, 2010 /
 
Gondolom, a feltelepített Source Boost fordító telepítési könyvtárában...
(#) laciubul válasza icserny hozzászólására (») Jún 19, 2010 /
 
Ok ,megpróbálkozom vele
(#) laciubul válasza icserny hozzászólására (») Jún 19, 2010 /
 
Nem sikerült, nem tudnád megpróbálni nekem? pls
(#) icserny válasza laciubul hozzászólására (») Jún 19, 2010 /
 
(#) laciubul válasza icserny hozzászólására (») Jún 19, 2010 /
 
(#) Bell hozzászólása Jún 20, 2010 /
 
Sziasztok!
C18 -al soros portra szeretnék formázott karaktereket és lebegőpontos számot kiírni a következőképp:
stdout = _H_USART;
printf("%S - %f","valami",3.14);
Nem tudom hogyan lehet a lebegőpontos számokat kiírni.
(#) laciubul válasza icserny hozzászólására (») Jún 20, 2010 /
 
Beszéltem azzal aki ezt az egészet kitalálta, és elküldi nekem a .hex file -t, remélem jó lesz.
(#) edison14 hozzászólása Jún 20, 2010 /
 
Helló!

Nemrégiben kezdtem el foglalkozni az AVR processzorok C nyelven való programozásával és most szeretném elkezdeni a PIC-et is. Olvasgattam a fórumon de nem sokat írtak a fordítókról és fejlesztőrendszerekről. Találtam valami source boost-ot meg CCS c Compilert de nem tudom hogy melyik a jobb és melyiket használjátok inkább. Ha jól tudom a CCS C-t az MPlab alól lehet elindítani vagy tévedek? Valaki tudna nekem segíteni az elindulásban hogy mire figyeljek és hogy mit hogyan csináljak?

A segítséget előre is köszönöm.
(#) potyo válasza edison14 hozzászólására (») Jún 20, 2010 /
 
Olvassgass még egy kicsit, mert láthatóan közel sem olvastál annyit, mint kellett volna...
(#) icserny válasza Bell hozzászólására (») Jún 20, 2010 /
 
A C18-hoz mellékelt könyvtári függvények (prinf, fprinf, vprintf) nem támogatják a lebegőpontos számok kiírását.
(#) icserny válasza edison14 hozzászólására (») Jún 20, 2010 /
 
A gyártó által támogatott fordítókról ezen az oldalon találsz információt.

A harmadik fél ajánlott termékeinek listája pedig itt található.

Itt is igaz, ami máshol is aranyszabály: minél messzebbre mégy a fősodortól, annál inkább magadra leszel utalva.
(#) Bell válasza icserny hozzászólására (») Jún 20, 2010 /
 
Köszönet! Ez volt a sejtésem, mert sehol nem találtam. Talán a limiteknél említik.
Néhány egyszerű művelettel megoldottam.
Tanuláshoz viszont kiváló, mert nem igazán jól működnek benne dolgok. Például a 18F14K50 AD konverterét nem hajlandó inicializálni.
(#) icserny válasza Bell hozzászólására (») Jún 20, 2010 /
 
Nekem még nem jutott eszembe a könytári függvényekkel matatni az ADC-t. Igaz, nem is sokat foglalkoztam még vele, csak a szokásos potméter-beolvasást raktam be:
  1. #define mInitPOT()          {TRISBbits.TRISB4=1;\
  2.                                  ADCON0=0x29;ADCON1=0;\
  3.                                  ADCON2=0x3E;ADCON2bits.ADFM = 1;}
  4.  
  5.  
  6. unsigned int ReadPOT(void)
  7. {
  8.   unsigned int w;
  9.   mInitPOT();
  10.   ADCON0bits.GO = 1;              // Start AD conversion
  11.   while (ADCON0bits.NOT_DONE);    // Wait for conversion
  12.   w = ADRESH;
  13.   w = (w<<8) + ADRESL;
  14.   return w;
  15. }//end ReadPOT
(#) watt válasza Bell hozzászólására (») Jún 21, 2010 /
 
Próbáld meg stringgé konvertálni és úgy kivinni.
(#) icserny válasza watt hozzászólására (») Jún 21, 2010 /
 
Jó, jó, de pont a stringgé konvertálás hiányzika C18 könytárakból, arra kellene valami okosság. Én ezeket találtam:

Quick & Dirty float to string converter
Convert Float to ASCII in C18
(#) laciubul hozzászólása Jún 21, 2010 /
 
Mi a baj ezzel a .hex file -al?

LEDStick.hex
    
(#) watt válasza laciubul hozzászólására (») Jún 21, 2010 /
 
Ugye csak viccelsz?! Talán leírnád, hogy mit vársz tőle és mi a bajod vele, talán tudnánk rá mondani valamit, de így?!
(#) laciubul válasza watt hozzászólására (») Jún 21, 2010 /
 
Itt egy linkBővebben: Link, ezt építettem meg és ehhez kértem egy .hex file -tés valamiért nem tudom beprogramozni.
(#) watt válasza laciubul hozzászólására (») Jún 21, 2010 /
 
Mivel programozod? Hibát kiír? Elárulod mit ír ki? ...
(#) szilva válasza laciubul hozzászólására (») Jún 21, 2010 /
 
A hex-szel ránézésre nincs semmi baj, hacsak nem az, hogy unixos sorvégek vannak benne (csak 0x0A karakter). Ez némely win-es progiknak okozhat fejtörést...

Jó lenne tudni, mivel próbálod megnyitni és mi a hibaüzenet, mert enélkül nem tudunk segíteni.
(#) laciubul válasza szilva hozzászólására (») Jún 21, 2010 /
 
Ha Parallel Port PIC Programmer -el ez:
Idézet:
„Input program file in Intel Hex Format contains error. Line number one: invalid 'checksum'field in te record.”

WinPic800 -al pedig ez:
Idézet:
„Hiba -> Cím írása 0x000006
Beírva: 0x0CC9 Kiolvasás: 0x1068”
(#) icserny válasza laciubul hozzászólására (») Jún 21, 2010 /
 
Hát ennek már nem sok köze van a topik témájához, ebben a topikban kellene folytatni!
(#) szilva válasza laciubul hozzászólására (») Jún 21, 2010 /
 
Az első probléma talán a unixos sorvégékből adódik. Arra megpróbálhatnád pl. az alábbi konverterprogival átalakítani a hex-et: Unix2DOS.

A második probléma valószínűleg a programozó hardver és a szoftver nem megfelelő együttműködésében keresendő. Meg kellene próbálni pl. sebességcsökkentést, vagy a programozónál a vezetékek lerövidítését.
(#) Bell válasza icserny hozzászólására (») Jún 21, 2010 /
 
Köszönöm! Gondolom az assembly így is közvetlenül bekerül a forrásba, mintha _asm -el tettük volna.
(#) Bell válasza watt hozzászólására (») Jún 21, 2010 /
 
Végülis karakterenként küldtem ki az
fprint("%S%S%S ...",c1,c2,c3...); formában, de talán jobb lenne egy char tömbbe belerakni és azt ciklussal kiküldeni.
(#) watt válasza Bell hozzászólására (») Jún 22, 2010 /
 
Természetesen csak karakterenként lehet elküldeni, miután a soros porton egymás után mennek a bájtok és egy karakter egy bájt.
Decimális alakban is el lehet, ha úgy szervezed, hogy az első bájt 0-255 és a második a tört 0-99, és a maximális érték 255,99. Persze ezt lehet kettő+1(65535,99), vagy két-két(65535,9999) bájton is eljátszani. Csak a lekezelés a PC oldalon értse amit küldesz(pl. egy terminál nem fogja helyesen megjeleníteni). Ez a megoldás talán gyorsabb a kevesebb átalakítás miatt, bár a tizedes jegyet ki kell számolni és kerekíteni.
(#) Bell válasza watt hozzászólására (») Jún 22, 2010 /
 
Értem hogy egymás után mennek ki a karakterek, de én egy utasítással szerettem volna ezt intézni. Számokat, karaktereket vegyesen tartalmazó tetszőleges stringek kezelésére kerestem egyszerűbb megoldást, de a C18 elég mostohán bánik ezzel. Pontosabban sehogy.
Következő: »»   18 / 153
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