Fórum témák
» Több friss téma |
A linker scriptet kell szerkesztened, hogy egybefüggő területként kezeljen több memóriabankot. Az alap script 256 bájttól nagyobb egybefüggő struktúrát nem enged. Fejlből nem tudom, hogyan kell, de keresgess a pices témákban a linker scriptre, volt már többször róla szó.
Szia!
Az MpLab -ban van lehetőség a project állományban definiálni szimbólumot is. Hozz létre annyi project állományt, ahány verziód van, mindben definiálj azonos névvel, de eltérő értékkel egy szimbólumot. Ezt a szimbólumot vizsgáld feltételes fordítási direktívákkal. A hozzászólás módosítva: Márc 6, 2013
Sziasztok!
LCD-t szeretnék vezérelni PIC-el, a busy-t felhasználva, de ez nem megy. LCD: Link Busy nélkül így tökéletes:
Így viszont valamint rosszul csinálok: össze-visszaságok jelennek csak meg..
Idézet: „//LATB felső 8 bitja érintetlen marad..” Nem írtad, de akkor ezek szerint nem 8-bites a PIC-ed...
Így van, 16 bites. 30F6012A és a "bitja" az bitje akart lenni..
A hozzászólás módosítva: Márc 12, 2013
A BUSY flag ellenőrzését meg valahogy így:
4-bites vezérlésre ezen az oldalamon találsz példát foglatság figyelésre.
Igen, valóban sokkal szebb így. Köszi!
És így végre működik is:
Sziasztok! Az lenne az én kérdésem, hogy miként tudom össze hozni a C-t és az ASM-et. A konkrét problémám (Lehet, hogy nem is igazán ebbe a topicba illik.):
Ez így lefordul, ám ha a CMCON-t írom a címe helyére már azt írja, hogy nincs is ilyen. Hitec fordítórol van szó. Miéelőtt felvetődig a jogos kérdés, hogy mi értelme van, tudom, hogy alapból semmi, csak most van időm és próbálom a két nyelvet kombinálni, ha egyszer szükségem lesz rá ne akkor keljen kapkodni Előre is köszi a segítséget! A hozzászólás módosítva: Márc 12, 2013
Sziasztok!
MPLAB C30 PIC30F6012A Miért nem tetszik a felső sor a fordítónak, és ha már nem jó, akkor miért eszi meg az alsót? (mintha 0xE -re végződő számokkal szivatna csak.. végigpróbáltam elég sokat)
Idézet: „2809:34: error: invalid suffix "+" on integer constant”
Tegyél szóközt a + elé és mögé (ez amúgy is javítja az olvashatóságot).
Köszi, működik.
De miért csak "E" -nél problémázik?
E+, E-, ha ezek szerepelnek benne, akkor probléma van.
Bővebben: Link Idézet: „Strange as it may seem, the behavior is correct, and mandated by the C Standard. 0x00E-0x00A is a single preprocessor token, of type pp-number, and it must become a single compiler token, but it can't. The gotcha is the `E-' sequence, that makes it seem like the exponent notation of floating-point constants.”
Sziasztok! Elakadtam egy struktúrán. Szükségem lenne egy "128 bites" változóra, amin belül különböző számú bit csoportok hordoznak információt. Hogyan lehetne ezt struktúrálni? Gondoltam bájtokból felépíteni egy olyan struktúrát, amire együtt lehetne hivatkozni egy másik struktúrában, hogy bitcsoportokat lehessen deklarálni, illetve programból kezelni. A bitcsoportokat alkotó bitek átcsúszhatnak egyik bájtból a másikba, még is összetartozó információt hordoznak. Az adatokat bájtonként tölteném fel, de bitcsoportonként értelmezném.
Köszi!
Erre nincs a C-ben egyszerű megoldás, ha a bitcsoportok a C-ben definiált legnagyobb integer méretének határain átnyúlnak. Továbbá sok értelme sincs, ha a CPU által egységként kezelt legnagyobb integer határokon átnyúlnak, azaz ha 8-bites a PIC-ed, akkor már a short meg a sima unsigned használata is csak a kód átláthatóságát növeli, hiszen a CPU nem tudja egyben betölteni a byte-nál nagyobb részt, hogy kiszedje a kívánt bit-mezőt.
Lehet írni makrókat, amik a bittologatásokat és AND/OR műveleteket elvégzik, és akkor nem lesz ronda a kód. Gyors mondjuk sehogyse lesz...
Szia! Ez nem hangzik valami bíztatóan! A sebesség nem gond, csak egy regisztertömeget kell értelmezni ritkán. Kényelmes lett volna, de közben látom, hogy még az is gondot okoz egy long változó esetében, hogy ha átnyúlik két bájton a struktúra bitegysége, vagy hosszabb, mint 8 bit.
A bittologatás lehet, hogy jó megoldás lesz, elég gáz, de egyszerűbb, mint bájtonként kisilabizáltatni az átnyúlókat. Köszi!
Sziasztok!
Segítséget szeretnék kérni: PIC18F4550-et a CCS-sel programozom, egyelőre virtuálisan. USB bootloader-t szeretnék beleégetni, gondolom az ex_usb_bootloader.c hex fájlját kell egy az egyben használni. Használta ezt már valaki? Nem találtam róla minimális hardver rajzot, hogy a boot gombnak hol kell lennie (MicroChipnél ugye B4). Ha sikerült a bootloadert beleégetni, akkor a PIC-et USB HID kapcsolathoz használnám (Visual C#). Ha új szoftververziót szeretnék felrakni a PIC-re, akkor a SIOW.EXE-vel tehetem ezt meg? Köszönöm előre is! (szerk: ha ez a topic a MCIP C-compilerével foglalkozik, akkor elnézését kérek, és szóljatok ) A hozzászólás módosítva: Ápr 1, 2013
Szia!
Miért nem keresel rá : Bővebben: Link ?!
Hello!
Köszi, a keresőt én is ismerem. Tavalyig visszanéztem már a linkelt topicot, nem volt szó a bootloader konkrét megoldásáról. Ennek a topiknak az elején pedig olvastam CCS-t, ezért bátorkodtam itt megkérdezni. A hozzászólás módosítva: Ápr 1, 2013
Tehát ismerted a topicot még is itt kérdezel. Nem értem a logikádat!
Igen, de úgy gondoltam ez redundáns topic. De akkor elnézést.
A fenti kódnak alapvetően nincs értelme, csupán a regiszterek és a pointer viselkedését vizsgáltam vele. Ez utóbbival viszont gondom akadt. Debuggert használva látom, hogy először a TXPtr felveszi a 0x8294 címet, majd mikor a while (a<2) sorhoz ér a TXPtr értéke 0xFFFF re változik. Mikor kikerül a belső While ből, a TXPtr=hello val ismét helyreáll a TXPtr és 0x8294 lesz. Mi történik a while sorban? Miért van hatása a pointermutatóra? Processzortípus: p24FJ256GA106. És még annyi, hogy a hello tömb elemeit meg szerettem volna nézni, de nem találom. A program memóriában kerestem a megadott címnél, de ott semmi nem volt. Akkor hol van? A hozzászólás módosítva: Ápr 3, 2013
Sziasztok.
CCSC . PIC16f886 Interrupt-al van némi gondom.RB7(vagy bármelyik RBxx lábon nem akar jól müködni az interrupt , azaz nem akar kilépni az az IT-ből. Kod:
szoval szimuláltam MPLAB-ban több verben is (belső sim, PROTEUS) de mindig ugyan az történik.RB7 portot lehuzom L re akkor IT generálódik de ettöl kezdve nem lép ki az IT-ből és nem értem miért.Megnéztem az ASM kodját is és az INTCOM regoszter RBIF bit törlésre kerül (de a szimulációban nem törlödik BCF INTCOM,RBIF) ,szóval nem tudom hogy mit nem veszek észre,adatlapon sem találok semmit légyszi segítsetek.
Az RB interruptnál az interrupt "kezelése" abból áll, hogy kiolvasod az RB értékét. Amíg nem olvasod ki, addig nem szűnik az interrupt...
Hu tényleg müködik ,erre nem gondoltam (ASM-ben azt nem teljesen igy kellett csinálni.:bonk
Nagyon köszi magamtól nemtudom mikor jöttem volna rá. Idézet: De, ott is úgy kell csinálni, a PIC nem látja, hogy Te milyen nyelven próbálod programozni, "neki" ugyanaz a bitminta jelenti ugyanazt ( vagyis minden nyelven az ugyanazt eredményező parancsot kell kiadni ! )! „(ASM-ben azt nem teljesen igy kellett csinálni” A hozzászólás módosítva: Ápr 7, 2013
ASM-be én ezt mindig ugy csináltam,hogy IT vektor ORG 4 -en ,RBIF bit törése......és a végén RETFIE utasitás és már vissza is tér a főprogira.Nem kell kiolvasnom kötelezően a PORTB-t hogy visszatérjen a főprogira.A C-ben irt proginál már tudom hogy ezt muszály ,mert csak akkor tér vissza a főprogira(köszi _vl_)A CCSC fejlesztői nagyon sokat akarnak segíteni hogy könnyebb legyen a programozást de ASM után inkább nehezebb(nekem),de majd csak megtanulom ezeket is.(az sem lenne rossza ha a mintaprogijaik jól müködnének amit a HELP-ben találtam.)
Jó lenne ha lenne olyan leírás valahol amiben a sok-sok hasonló függvény részletesen le lenne írva ASM harmin valahány utasítását könnyü megtanulni de a C-nek nagyon-nagyon sok függvénye van ......hm... na mind1 ,igyekszem okosodni.Köszi Watt.
(ezért is szeretem a HE-t mert mindig kapok utmutatást ) Köszi ALL user! |
Bejelentkezés
Hirdetés |