Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1077 / 1320
(#) kszabi válasza icserny hozzászólására (») Jún 8, 2012 /
 
Sziasztok!
Pontos vesszővel is ugyanaz a hiba:
main.o(.text+0xa0): In function `init_xlcd':
D:\mentesek\tavcso2012\szoftver\vezerles\main.c:50: undefined reference to `putsXLCD'
Link step failed.
A main.c 50.sorában nincs is semmi.
A hibás sor az init.h 50.sorában van, ha kikommentelem akkor lefordul.
Üdv kszabi
(#) icserny válasza kszabi hozzászólására (») Jún 8, 2012 /
 
Idézet:
„undefined reference to `putsXLCD'”
Olyan tényleg nincs, PutsXLCD-nek hívják.
  1. /*******************************************************************
  2. Function Name:          PutsXLCD
  3. Description:            This function writes a string of characters
  4.                         into the LCD controller.it stops transmission
  5.                         before the null character.(which is not sent).
  6. Input parameters:       char  *buffer
  7. Return value:           void
  8. ********************************************************************/
  9. void PutsXLCD(char *buffer)
(#) drumsman hozzászólása Jún 8, 2012 /
 
Sziasztok!
Megakadtam egy problémával. Adott egy PIC32MX440f512h és egy ICD 2 programozó. Több azonos hardverben régebbi program frissítését szeretném megoldani. A hardver mind működőképes, viszont frissítéskor némely processzornál a következő hibaüzenetet kapom. :
...Connected
Setting Vdd source to target
Target Device PIC32MX440F512H found, revision = Rev 0x50900053
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 ready for next operation
Programming Target...
...Validating configuration fields
...Erasing Part
...Loading Program Executive
...Programming Boot Config (0x1FC00000 - 0x1FC003FC)
...Verifying Boot Config memory (0x1FC00000 - 0x1FC003FC)
ICD0296: Failed CRC check (Mem='BootConfig' Expected=0xE232 Received=0xD903)
ICD0275: Programming failed.

Kb. Fele "elhal" így. Ezek után már nem tudok életet lehelni bele. Törlés utasítás után "blank checking"-re minden esetben "device not blank" választ kapok.
Esetleg tud valaki ötlettel szolgálni, hogy mi a fene lehet? Amire felmegy a program, az megy jól.
(#) kszabi válasza icserny hozzászólására (») Jún 8, 2012 /
 
Így már működik, köszi a segítséget.

Üdv kszabi
(#) _vl_ válasza Hp41C hozzászólására (») Jún 8, 2012 /
 
Lyukra futottam, nem tudom kipróbálni... Ugyanis az XC8 nem C18-kompatibilis abban az értelemben, hogy az extra dolgokat (pl. rom kulcsszó) nem támogatja (igazából nincs is szükség rá: ha const, akkor program flash-ba rakja, a különféle pointereket meg automatikusan kezeli). Elméletben van benne egy C18-kompatibilitás üzemmód, a gyakorlatban viszont nem sikerült bekapcsolni, mert akkor nem fordít le semmit... A C18 meg nem megy Linuxon.

Viszont azt megnéztem, hogy a HiTech-alapú XC8 v1.00 const-tal, rom nélkül gyönyörűen fordítja, úgy, ahogy kell. Csináltam 8 darab 128-byte méretű ilyen struktúrát, meg egy 256-byte méretű sima tömböt, ez utóbbi normál RAM-ba kerül, az 1KB-nyi konstans meg a program flash-be.

Idézet:
„Ha csak néhány sort (2 - 3 sort) fordítok be, akkor rendben megtörténik a linkelés is..”

Ez azért lehet, mert 2-3 sor még befér a RAM-ba...
(#) szilva válasza _vl_ hozzászólására (») Jún 8, 2012 /
 
Szerintem van (vagy volt) MCC18 linuxra is, legalábbis az MPLAB-X alatt mintha használtam is volna. Ha máshogy nem, valami wine-nal biztos lehet futtatni. Majd hétvégén megnézem, hogy mennyire emlékszem rosszul
(#) icserny válasza _vl_ hozzászólására (») Jún 8, 2012 /
 
Idézet:
„A C18 meg nem megy Linuxon.”

Én már láttam menni Linux-on.
(#) _vl_ válasza icserny hozzászólására (») Jún 8, 2012 /
 
Azért ha tudod, hogy honnan lehet ezt letölteni (a webjükön nem találtam), ne tartsd magadban
(#) Hp41C válasza _vl_ hozzászólására (») Jún 8, 2012 /
 
Szia!

Egyre jobban nem értem... Az összes descriptor a RAM -ba másolódik! Miért? Pedig a ROM, const ROM vagy ROM const van előírva? Mindegy, fogja az egész tartalmat átmásolja a RAM -ba. Minek?

Watt féle HID demo
(#) icserny válasza _vl_ hozzászólására (») Jún 8, 2012 /
 
Idézet:
„Azért ha tudod, hogy honnan lehet ezt letölteni”
Annak idején az alfa- vagy bétaverziós MPLAB X honlapján volt kitéve. Egy régi, használaton kívüli munkahelyi számítógépemen föltehetőleg van egy biztonsági másolatom róla. A jövő héten megpróbálom feltámasztani...
(#) icserny válasza icserny hozzászólására (») Jún 8, 2012 /
 
Találtam itt egy linket, ezzel is lehet próbálkozni! A nevéből úgy tűnik, hogy C18 telepítő Linux-hoz.

Link: http://ww1.microchip.com/downloads/mplab/X/mplabc18-v3.40-linux-ful...er.run
(#) Hp41C válasza Hp41C hozzászólására (») Jún 8, 2012 /
 
Sziasztok!

A ROM probléma továbbra is megvan, sőt ROM -ra mutató pointerrel sem sikerült adatot kiolvasnom. Egy kis assembly betéttel megoldva. Működik...

Találtam viszont egy poloskát a HID string kezelésében. Rettentő sok szöveget ad vissza - szerintem hibásan.
  1. case USB_DESCRIPTOR_STRING:
  2.                   inPipes[0].pSrc.bRom = *(USB_SD_Ptr+SetupPkt.bDscIndex);
  3.                   inPipes[0].wCount.Val = *inPipes[0].pSrc.bRom;                    // Set data count
  4.                   break;

helyett ezt
  1. case USB_DESCRIPTOR_STRING:
  2. if (SetupPkt.bDscIndex <= sizeof(USB_SD_Ptr)) // To many string bugfix
  3. {
  4.                   inPipes[0].pSrc.bRom = *(USB_SD_Ptr+SetupPkt.bDscIndex);
  5.                   inPipes[0].wCount.Val = *inPipes[0].pSrc.bRom;                    // Set data count
  6.                   break;
  7. }

használva csak annyi szöveget lehet kiolvasni, amennyit a táblázatba felvettünk.
(#) _vl_ válasza icserny hozzászólására (») Jún 8, 2012 /
 
Köszi!
(#) _vl_ válasza Hp41C hozzászólására (») Jún 9, 2012 /
 
Idézet:
„A ROM probléma továbbra is megvan, sőt ROM -ra mutató pointerrel sem sikerült adatot kiolvasnom.”

Felgyógyítottam a lentebb belinkelt v3.40-es Linuxos verziót. Megnézegettem, hogy milyen kódot generál.
Ha const struct van, akkor én is idata-ba kaptam a struktúrát, azaz foglalta a program flash-t is, meg a RAM-ot is. Ha viszont const rom struct volt, akkor ez a fordító is úgy dolgozott, ahogy kellett, csak a program flash-t töltötte. Nem lehet, hogy a ROM az egy üres #define a #define ROM rom helyett?
Meg nem mindegy neki a pointer sem: ha a const rom struct címét berakom egy const BYTE * pointerbe, akkor lazán rossz kódot generál.
(#) kszabi hozzászólása Jún 9, 2012 /
 
Sziasztok!
Újjabb problémám akadt az xlcd kezeléssel.
Meghivom az OpenXLCD fügvényt, le is fordul, de az utasitásokat nem hajtja végre. Semmi nem jön a pic-ből,
a tris regisztereket sem állitja be. A regiszter definiciókat beállitottam az xlcd.h-ban.
Az OpenXLCD.c fügvényt egy helyen találtam meg az
src mappában, egy tömöritett almappában.
Ha ezt az egész mappát törlöm, a program akkor is lefordul.
Hogy lehet ez, mi lehet itt elrontva?

C30-at használok, 3.31 verziót. A pic dspic33ep.

Üdv kszabi
(#) icserny válasza kszabi hozzászólására (») Jún 9, 2012 /
 
Idézet:
„A regiszter definiciókat beállitottam az xlcd.h-ban.”
Azt hiába állítod be, ha a hozzá tartozó könyvtári modult nem fordítod újra.

A C30 gyári könyvtáraival nincs tapasztalatom, de valószínűleg ugyanaz a helyzet, mint a C18-nál: a lib könyvtárban gyárilag előfordított perifériakönyvtárak vannak, azt csatolja hozzá a lefordított tárgykódhoz a linker. Ha módosítod a láb hozzárendeléseket, akkor újra kell fordítani az egészet.
(#) Hp41C válasza _vl_ hozzászólására (») Jún 9, 2012 /
 
Szia!
Egyre érdekesebb...
- Ha a
  1. ROM const USB_DEVICE_DESCRIPTOR device_dsc=...
-ot a
  1. rom const USB_DEVICE_DESCRIPTOR device_dsc=...
-re cserélem, akkor hibát kapok:
usb_descriptors.c:170:Error [1109] type mismatch in redeclaration of 'device_dsc'
Ezek szerint írhatom át az egész USB descriptor kezelést?
- Ha a string descriptort írom át
  1. ROM const struct{BYTE bLength;BYTE bDscType;WORD string[14];}sd001={
  2. sizeof(sd001),USB_DESCRIPTOR_STRING,
  3. {'M','i','c','r','o','C','h','i','p',' ','L','t','d','.'}};
-ról
  1. rom const struct{BYTE bLength;BYTE bDscType;WORD string[14];}sd001={
  2. sizeof(sd001),USB_DESCRIPTOR_STRING,
  3. {'M','i','c','r','o','C','h','i','p',' ','L','t','d','.'}};
-ra, akkor is másol.
Érdekes, két napja gyötröm a C-t, az assemby betét 1 óra elett kész volt...
(#) _vl_ válasza Hp41C hozzászólására (») Jún 9, 2012 /
 
  1. // Microchip C18 specific defines
  2.         #if defined(COMPILER_MPLAB_C18)
  3.             #define ROM                         rom
  4.         #endif
  5.        
  6.         // HI TECH specific defines
  7.         #if defined(COMPILER_HITECH_PICC18) || defined(COMPILER_HITECH_PICC)
  8.             #define ROM                         const
  9.             #define rom

Ezt a "meglepő" kódrészletet találtam a Microchip libek között... (Include/Compiler.h)
(#) Hp41C válasza _vl_ hozzászólására (») Jún 9, 2012 /
 
Jó ötlet... Köszönöm. :kalap:
De Watt mást használt:
  1. #define ROM const

Így már érthető a másolás...
(#) kszabi válasza icserny hozzászólására (») Jún 9, 2012 /
 
Szia!
Ennek a módositás utáni ujraforditásnak mi lenne a módja?
Ha a libp33EP512MU810-coff.a -ra nyomok egy compile-t
akkor 10 percig dolgozik, végül több száz hibával.
Ha a c forásokon akarok módositani akkor is ez a helyzet?
Át szeretném irni fix késleltetésre, mert sajnos későn olvastam a pic-kwik projektet és az adat vonalak nem 5V toleráns lábakon vannak.

Köszi kszabi
(#) Stefan válasza kszabi hozzászólására (») Jún 9, 2012 /
 
C18-nál ha jól emlékszem van valamelyik mappában egy .bat fájl, amit ha elindítasz újraforgatja a könyvtári dolgokat. Talán C30-nál is megvan ez a lehetőség.
(#) watt válasza Hp41C hozzászólására (») Jún 9, 2012 /
 
Szia! Nem nagyon változtattam a gyári dolgokon, mert sok esetben én sem értettem miért nem fordul le. Olvasom régóta a problémákat, de nem tudtam segíteni.
(#) icserny válasza kszabi hozzászólására (») Jún 9, 2012 /
 
Idézet:
„Ennek a módositás utáni ujraforditásnak mi lenne a módja?”
Ezt a dokumentációból kell kideríteni. Én nem használom a gyári perifériakönyvtárakat. Ezt találtam a C30 doc mappában:

Idézet:
Rebuilding the Peripheral Library

The batch file makeplib.bat may be used to remake the libraries. The default behavior is to build peripheral libraries for all supported target processors; however, you may select a particular processor to build by naming it on the command line.


For example, makeplib.bat 30F6014A will rebuild the library for the dsPIC30F6014A device.”
(#) Hp41C válasza watt hozzászólására (») Jún 9, 2012 /
 
Szia!
Megy már mind a két formában. Csak egy kicsit el volt dugva a ROM definíciója..
(#) kissi válasza kszabi hozzászólására (») Jún 10, 2012 /
 
Szia!

Nem kell feltétlenül újrafordítanod: ha a szükséges függvények fájlait ( busy.c, stb. ) és az xlcd.h-t a projekt mappába teszed, az #include "xlcd.h"-nál meg használod az idézőjelet, akkor a projekt mappában lévő fájlaidat fogja újrafordítani és akkor működik ( C18-nál legalábbis így jó!) !

Steve
(#) thomas01 hozzászólása Jún 10, 2012 /
 
valaki tudna segíteni abban, hogy a PIC simulator IDE-ben, hogyan lehet kezelni a PIC bemeneteit? Sehogy sem tudok rájönni.
(#) kszabi hozzászólása Jún 11, 2012 /
 
Sziasztok!
Sikerült átirni a port definiciókat.
A megoldás az lett amit kissi javasolt. Az összes .c file-ban
át kell irni #include "xlcd.h"-ra.
Próbálkoztam a makeplib.bat-tal, de kifogott rajtam.

Köszi a tippeket, üdv kszabi
(#) Hp41C hozzászólása Jún 13, 2012 /
 
Advanced Midrange beépített USB modullal: 16F1454, 16F1455, 16F1459
Sajnos megint a D+ és a D- a ICSP PGD illetve PGC vonal...
(#) thomas01 hozzászólása Jún 13, 2012 1 /
 
Örülnék, ha valaki tudna segíteni a következő problémában:

adott egy félkész program, ami egy órát működtetne:


SZÁM1EQU0x10
GOTOSZÁM2

SZÁM2EQU0x1
GOTOSZÁM3

SZÁM3EQU0x5
GOTOSZÁM4

SZÁM4EQU0x7
GOTOBEÁLLÍTÁS


;------------------------
BEÁLLÍTÁS
CLRF PORTA
BANKSEL TRISA
CLRF TRISA
BANKSEL PORTA

CLRF PORTB
BANKSEL TRISB
CLRF TRISB
BANKSEL PORTB

CLRF PORTC
BANKSEL TRISC
CLRF TRISC
BANKSEL PORTC

CLRF PORTD
BANKSEL TRISD
CLRF TRISD
BANKSEL PORTD


;CLRF SZÁM1
;CLRF SZÁM2
;CLRF SZÁM3
;CLRF SZÁM4
GOTO FŐPROGRAMRÉSZ

;------------------------------
FŐPROGRAMRÉSZ
INCFSZÁM1,F
MOVFWSZÁM1

MOVWFPORTA

XORLWD'9'
BTFSSSTATUS,z
GOTOFŐPROGRAMRÉSZ
INCFSZÁM2,F
MOVFWSZÁM2
MOVWFPORTB

CLRFSZÁM1
GOTOFŐPROGRAMRÉSZ
END

--------------------------------------------------
nem igazán tudom lefoglalni a memóriaterületeket a különböző változókhoz.
(#) bbalazs_ válasza thomas01 hozzászólására (») Jún 13, 2012 1 /
 
Talan okosabb lenne a kezdok topicjaban kerdezni.
Masfelol sokat segitene a PIC tipusa...
Következő: »»   1077 / 1320
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