Fórum témák
» Több friss téma |
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)...
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...)
Gondolom, a feltelepített Source Boost fordító telepítési könyvtárában...
Nem sikerült, nem tudnád megpróbálni nekem? pls
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.
Beszéltem azzal aki ezt az egészet kitalálta, és elküldi nekem a .hex file -t, remélem jó lesz.
![]()
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.
Olvassgass még egy kicsit, mert láthatóan közel sem olvastál annyit, mint kellett volna...
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.
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.
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.
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:
Próbáld meg stringgé konvertálni és úgy kivinni.
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
Ugye csak viccelsz?!
![]()
Itt egy linkBővebben: Link, ezt építettem meg és ehhez kértem egy .hex file -tés valamiért nem tudom beprogramozni.
![]()
Mivel programozod? Hibát kiír? Elárulod mit ír ki? ...
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.
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”
Hát ennek már nem sok köze van a topik témájához, ebben a topikban kellene folytatni!
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.
Köszönöm! Gondolom az assembly így is közvetlenül bekerül a forrásba, mintha _asm -el tettük volna.
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.
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.
É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.
|
Bejelentkezés
Hirdetés |