Fórum témák
» Több friss téma |
A CCS Reference Manual-ban nézd meg az sprintf() függvényt! A printf-nél használható formázással tudsz közvetlen tömbbe írni vele karaktereket:
hitech c fordítóval úgy kellene fordítanom, a kódot, hogy a programmemória 0x00-0x7ff-ig tartó tartományára ne fordítson semmit, a reset vektort a 0x800-ra, és a megszakításokat a 0x808, 0x818-ra tegye. A manualban találtam megfelelő pre proc. utasítást, de fordításnál szintaktikai hibának nézi ezeket.
picc 18pro manual 164. oldal: hexmate 167.o The -FILL option is used for filling unused memory locations with a known value. The usage of this option is: -FILL=Code@Start-End[,data] Van utána example is, amiből értelemszerű, hogy miként kell ezt használni. Ez egyébként 18f4550 usb bootloaderhez kellene.
Sziasztok!
pic18f8722-vel építettem egy külső memóriás kapcsolást, Bővebben: Link mchip C18-ban szeretném programozni, de a c18 leírásában nem sok infót találtam. Be lehet valahogy a linker fájlba rakni ezt a memória területet is, esetleg van rá kész függvény/macro az írására/olvasásra? A weboldalon sincs kinn minta progi, az emil-re meg nem válaszoltak. Használt már igy valaki picet? Köszi
sziasztok!
Eddig csak assembly -t fordítottam .hex formátumra az MPLAB v8.00 val. Most C -t kellene használnom, de nem bírom átállítani az MPLAB ot. Odáig már eljutottam ,hogy letöltöttem és felraktam a gépre a MPLAB-C18-StudentEdition-v3_12.exe -t. Aztán project/set language Tool nál a Microchip C18 ban executables -nél az MPLAB C18C Compilerben megerestem a feltelepített mcc18.exe -t. Jól tettem ezt, kellett egyáltalán???? Aztán tovább nem boldugulok vele tovább. Segítsetek nekem, mert azthiszem végleg elakadtam.
Most éppen nincs előttem, de valami olyasmi volt a hibaüzenet, hogy nincs a képernyőn fókusz ablakban asm kód.
És valóban nem volt, mert c kód volt megjelenítve.
zárd be a munkaterületet (fájl-close workspace), utána a használd a project wizzard-ot, nem szokta elrontani...
Sziasztok !
Kerestem, kutattam, de nem találtam: 16F628A-s PIC-el szeretnék magyar ékezetes betűket kiiratni EW162G0YMY típusú LCD-re. Van erről valakinek CCS C-ben valamilyen forrásanyaga ? Köszönettel.
Nekem nincs, de
- a karakter generátor első 8db helyére, felhasználói karaktereket tölthetsz le, és aztán azokat használhatod. - Persze oda csak a legszükségesebbek férnek el. üdv! proli007
A Project-->Select Language Toolsuite vagy ilyesmi alatt a C18 van kiválasztva?
Hitachi katalógusban, megtalálod, hogy hogyan kell a felhasználói karaktereket betölteni.
És hogy ne maradj "szárazon", alul a bináris kódok. üdv! proli007
Szia!
Valóban egyszerre csak 8 karakter képét lehet eltárolni és megjeleníteni, de ügyesen, az éppen a kijelzőre kerülő karaktereket a kijelzés előtt betöltve, vagyis váltogatva a karakterkészletek, minden karakter kijelezhető. A mellékelt kódban az lcd_init_custom_chars függvénnyel tölthetők be a paraméterként megadott karakter készletek. Nincs minden karakter "megalkotva", de kiindulásnak biztos jó lesz.
Köszönöm MPi-c neked és proli007-nek is.
Működik, tökéletes. Üdv: ccs
Select Language Toolsuite nem volt aktív. Nem bírtam kiválasztani semmit. Csupán a set language Tool ban tudtam beállítani a c18. exe helyét mint ahogy azt fent írtam.
Mellesleg ezt nem kelett volna neki autómatikusan megtennie telepiítés autá az MPLAB ban? Idézet: „Mellesleg ezt nem kelett volna neki autómatikusan megtennie telepiítés autá az MPLAB ban?” Elvileg igen, ha a C18 telepítése közben bepipálod, hogy ezeket állítsa be. Viszont valami nem volt az igazi akkor sem vele, lehet, hogy az újabb verziókban már javítottak ezen. A Select Language Toolsuite csak akkor lesz aktív, ha van egy projekted megnyitva. Lehet az egy üres projekt is, de legyen.
Hello srácok!
C-ben szeretném folytatni PIC-es fejlesztéseimet, ezért kicsit körbejártam a kérdést. Találtam C18-at (student), HI-TECH-et meg CCS-t. Egy 16F887-esen szeretnek probalkozni. Ez máris kizárta a C18-at és a CCS-t, mert azt irja, hogy "nemjo.. hianyzik a PCM fordito a geprol" naigen, valoszinuleg, mert csak a demo van fent Marad a HI-TECH. Meg is irtam a PIC-es "Hello world"-ot: #include __CONFIG(MCLREN & UNPROTECT & WDTDIS & INTIO); void main() { TRISD=0; PORTD=0b01010101; for (;; } Noss... lefordul, meg van a .hex, betolom a PIC-be egy PICkit2-vel, azt mondja minden OK, de megsem kapcsolnak be a LED-ek amik a PORTD-n vannak (egy PICkit2 debug express kis egyuttest vettem, azon van par LED). Találtam a build option-ök között a "global"-ban egy ilyen beallitasi lehetoseget, hogy "Format hex file for download". No, ezt probaltam bekapcsolni is, meg kikapcsolni is. Egyik verzioval sem vilagotottak a LED-ek. Mar elolvastam par "hogyan kezdjunk C-ul PIC-et programozni" leirast, de nekem az jon ki, hogy ennek a kodnak jonak kell lennie. Valakinek valami otlete? Koszi, Fixer
Nyisd meg a hex fájlt MPLAB-ban, és nézd meg, hogy a konfig bitek a fejlesztőpanelhez megfelelően vannak-e beállítva. Pl. ahogy nézem, az LVP nincs letiltva.
ááááá köszi!! tényleg az LVP volt a ludas, nem allitottam disabled-re.
most visszaneztem megint regebbi ASM-s progimat, ott is LVP_OFF volt... hát kész.... Köszi mégegyszer!
Valakinek sikerült az SDCC fordítót beizzítania windows alatt? Elmondhatná hogyan kell, mert nekem nemigazán sikerült működőképeset alkotni. Pedig szimpatikus fordító lenne...
Írtam egy egyszerű c fájlt. Ezt "c:\sdcc\bin\sdcc.exe" -S -mpic14 -p12f675 test.c paranccsal átkorvertáltam asm fájllá, ami tartalmazza is azt, amit a C fájlban leírtam, tehát úgy néz ki, hogy idáig rendben van. Ezután jön a "c:\program files\microchip\mpasm suite\mpasmwin.exe" /q /o test.asm parancs, ami szintén látszólag lefut, viszont a .ERR fájlba bekerül egy No code generated bejegyzés. Ezután jönne a "c:\Program Files\Microchip\MPASM Suite\mplink.exe" /o test.hex "c:\test.O" 12f675.lkr parancs, ami viszont már nemis fut le, Error - could not find definition of symbol '_ADCON0_bits' in file 'c:\test.O'. üzenettel áll le (véleményem szerint azért, mert az előző parancs nem generált kódot). Ötlet?
Felhozom a témát, hátha valakinek szemet szúr...
Ezzel esteleg nem próbáltad? SDCC Plugin for MPLAB
Ezt megtaláltam én is, fel is raktam, de valami elérési utakat meg kell neki adni, és nem sikerült rájönnöm, hogy oda mit vár. Azt hiszem a linker script hiányzott... De ha hétvégén otthon leszek, megpróbálom megint.
De ettől függetlenül amúgy is mennie kellene, és mégse megy.
Na megnéztem, beállítottam minden elérési utat rendesen, és az MPLAB ezt produkálja az Output ablakban:
Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\SDCC\bin\sdcc.exe" teszt.c -c -mpic14 -p12F675 -l"C:\SDCC\lib\pic" -I"C:\SDCC\include\pic" A megadott nevet (gpasm) a rendszer nem ismeri fel belső vagy külső parancsként, futtatható programként vagy kötegfájlként. BUILD FAILED: Sat Aug 30 10:53:46 2008 --------------------- Aki linuxon használ sdcc-t, és megy neki, kérném, hogy töltsön már fel nekem egy komplett projektet (c fájlt, generált fájlokat, stb., szóval mindent), ami szépen lefordul. Lehet az bármi egyszerű, akár az a C fájl is, amit kicsit előbb feltöltöttem, csak hogy lássam, hogy néz ki egy működő projekt.
Sikerült gatyába rázni a dolgokat, sikerült működőképes hex fájlt produkálni. Feltöltöttem a komplett "projektet", ha valaki mást is érdekel. A GPUtils-t és az SDCC-t a teszt.bat fájlban megadott útvonalra kell telepíteni, hogy a bat fájl lefusson.
Sziasztok!
Épp egy PIC16F88-at programozok és egy elég érdekes dologgal szenvedek. CCS 4.057 verziójú fordítót használok az MPLAB 8.10-es verzióval. Egy sima 'IF'-es feltétellel 3 állapotot különböztetek meg. Van egy 'STATE' változó és ez 0,1 és 2 értékeket(állapotokat) vesz fel és 3 'IF' feltétel ezeket választja szét. A 0-ás állapotnál nincs is gond, ha 0 a 'STATE', akkor belép és végrehajtja amit kell, ha nem 0, akkor meg átlépi ugye. De az 1-es és 2-es feltételnél gubanc van a lefordított assembly kódban. Assemblyben az 1-es állapotot így oldja meg a fordító: DECFSZ 2B,W GOTO 0DA A '0x2B' a 'STATE' változó címe. Tehát ha csökkenti egyel és 0 lesz az értéke, akkor 1 volt az eredeti érték. Ezzel az a baj, hogy a GOTO utasítás az 'IF' függvénybe mutat, vagyis a '0x0DA' cím az 'IF' feltétel "belsejének" első sora. Tehát ha teljesül a feltétel ha nem, belép a függvénybe. Ugyanígy a 2-es állapotnál is hiba van: MOVF 2B,W //STATE változót az akkuba másolja SUBLW 02 //kivon az akkuból kettőt BTFSC 03.2 //megnézi hogy a 'Zero bit' 1-e GOTO 117 //ez ismét az 'IF' belsejének első sora... Itt meg ha jól értem, ha a kivonás után a 'Zero bit' 1, vagyis 2 volt a 'STATE', akkor nem ugorja át a 'GOTO'-t, pont hogy akkor lépne ki a függvényből, feltéve ha jó lenne a 'GOTO' címe. Szóval itt még nagyobb a kavarodás... Nem vagyok egy profi programozó, de szerintem nem egy bonyesz C programot írtam, még én is lefordítom assembly-be... mi lehet a gond? Köszi előre is bárkinek! Tibus
Mutasd meg azt a programot! Legalább az if-es részt!
Jó ötlet, csatoltam. Nagyon nincs kommentezve, de a kérdéses rész szerintem érthető, de ha nem tiszta, akkor telikommentezem
köszi!
Bocs mindenkitől, megtaláltam a hibát, ami az enyém volt. Az IF és a feltétele után rögtön kettőspontot tettem, hát szegény fordító persze, hogy azt hittem, hogy ott vége az IF-nek. Még jó, hogy nem szidtam meg vádoltam semmit/senkit Gondoltam rá, hogy én vagyok a béna
Most minden működik! Majd kipróbálom élesben is, mert eddig csak szimuláltam. Azért köszönöm, ha lesz még valami, majd írok Tib
nagyon szereted a ;-t
a }; -ben felesleges a ; (hibát itt nem okoz) |
Bejelentkezés
Hirdetés |