Fórum témák
» Több friss téma |
Idézet: után beírod, hogy hova szeretnéd írni az adatokat a programmemóriába, a code után pedig, hogy hova akarod a programot írni ( én most nem írtam semmi programot, csak az adatok tárolását próbáltam ki gyorsan egy korábbi projektbe beillesztve! ) ! "Sima", abszolut kódban nem megy ( próbáltam! ), csak a relokálható kódban engedélyezte !„packed code_pack” szerk.: Idézet: Attól, hogy relokálható még köthetek bizonyos programrészletekre kikötéseket ! „Illetoleg latom, ott a codepack vegen de akkor mitol relokalhato, ha megadod a cimet?” A hozzászólás módosítva: Márc 24, 2013
Hálás vagyok, hogy ram aldoztad az idodet.
Ugy tunik, a direkt assemblerem ezt a relokalhato dolgot nem tudja. Bent a cegnel van mplabom, akkor ott azzal fogom megcsinalni es belemelyedek ebbe is. Meg egyszer koszonom a faradozasodat!
Azt meg tudod tenni, hogy #define-al definiálod, és kommenteled a byte-ok értékeit. Ezután a tényleges definiálásnál pedig összevonod a kettőt egy sorrá. Nem értek a C-hez, de valami "<<" szerű dolog kell hozzá.
Nem ezzel volt a baja, hanem, hogy páros darabszámot kellene neki soronként létrehozni... na ez "macerás" !
Kiver a viz, hacsak ezekre a PROJECT nevu baromsagokra gondolok...
en a sima mpasmwin-t hasznalom, ami egybol hexet keszit. En mindent egy fileba szoktam tenni, a forditas utan egybol programozom is be. A programozomat en irtam, en keszitettem a hardvert hozza, nem kompatibilis az IDE-vel. Idézet: Ez OK, csak így minden PIC-hez "szenvedned" kell egy égetési metódust, tesztelni, míg egy PK2-t 3-4 ezer Ft-ból utána tudsz építeni és nagyon sok PIC-hez jó ( sőt, ha HP41C kolléga megosztja a fejlesztését, akkor már-már "nagyágyú" lesz! ! )... „A programozomat en irtam, en keszitettem a hardvert hozza, nem kompatibilis az IDE-vel.” Az MPLAB szerintem jól használható, a debuggolás része nagyon hasznos, a PK2 integrálásával akár debuggerként is, szintén sokat segíthet ! Idézet: „Kiver a viz, hacsak ezekre a PROJECT nevu baromsagokra gondolok...” Nem olyan rossz dolog ez, hogy minden egy projektben van, mert egy helyről elérem a hozzátartozó dolgokat ( adatlap, leírás, include, header fájlok ) és nagyobb programoknál nagyon hasznos, hogy több modullal lehet dolgozni! Persze tudom az építés és az önálló alkotás öröme ( nekem is van ilyen, még egy régi DOS-os verziót akarok kiváltani egy régi projektemben lévő 80C535-höz ) ! Örülök, hogy tudtam segíteni ! Steve A hozzászólás módosítva: Márc 24, 2013
Sziasztok, senkinek semmi ötlete a tegnapi problémámmal kapcsolatban?
Bővebben: Link
Nem figyeltem, hogy a gépelés "eltolta" az ablakot !
Nem használom a Proteust, de:
-RESET után ugyanazt csinálja, mint bekapcsoláskor, kivéve, hogy a RAM megőrzi a tartalmát ( néhány regisztertől eltekintve! ) --> ha nem indul, akkor valamelyik cellába bekerült ( beírtál ! ) valami, ami inicializáláskor nincs megfelelő alaphelyzetbe állítva! Azt írod, hogy másik mikrovezérlővel jó --> ebből nekem az következik, hogy valószínűleg rossz a szimuláció ( ez alapján nem valószínű az első pont! ) --> próbáld ki "élesben" ! Steve
Hobbista vagyok, nem ebbol elek. Idokorlat sincs. Keves PIC tipust hasznalok, azokhoz megirtam mar a forditohoz szukseges reszeket.
Altalaban akkor szoktam valami ujra valtani, ha a rendelkezesre allo, megszokott eszkozokkel nem tudom a problemat megoldani. Most tanulgatom mar az MPLAB-ot. Ugy tunik, a c-t sem lehet kikerulni...
Ki fogom próbálni, csak jelenleg a kollégiumban nincs rá módom, mert a mikrovezérlő és egyéb cuccok mind otthon vannak, így csak szimulációban tudom tesztelni, amúgy csak azért lenne fontos, mert egy projektemhez kell szerdára, de szerencsére elég szimuláció is
Attila
Üdv.!
Egy fűtésvezérlővel küzdök: adott a szonda, ami egy 1kohmos ellenállással sorba kötve pont a hőmérséklet kétszeresét adja (analóg) értékül. Ha ezt osztom kettővel, pontosan mér 10 és 40°C között mivel csak szobahőmérsékleten lesz használva ez nekem tökéletes. Van még egy potméter is, ami a referenciaértéket állítja be. Ezt eddig megcsinálni kb. 20 perc volt, de a többivel szívok egy napja. A gond ott kezdődik, hogy fokonként lépked, nekem pedig arra lenne szükségem, hogy fél fokot tudjak értelmezni. Tehát ha be van állítva 22°C akkor ne 23°C-nál kapcsoljon, hanem 22.5°C-nál. Ezt hogy lehet kivitelezni? Rettenetes gyenge voltam matekból mindig is, szóval biztosan valami egyszerű a megoldás csak még nem jöttem rá.
Szia,
küldtem mailt a címedre amit itt az oldalon találtam. Üdv Attila
Szia!
Idézet: „...Ha ezt osztom kettővel...” Ne oszd 2 -vel. A referencia értéket szorozd meg 2 -vel és adj hozzá 1 -et. Ha ezeket hasonlítod össze, kész a fél fokos kapcsolás.
Ha analóg, akkor folytonos, nem "fokonként lépked", legfeljebb Te nem tudod megfelelően feldolgozni !
Így látatlanban, ha felerősíted a jelet a kétszeresére, akkor a páratlan értékek a fél fokot jelentik, míg azután 4-el osztva megkapod a hőfokot! pl.: Azt írtad, hogy X-et osztod kettővel és így 10 ... 40 C-ig mér. Ha 2X-et nézek, akkor 20 ... 80 C lenne, de itt minden a duplája, azaz 40 --> 20 C, de 41 az 20,5 C ! ezután osztva 2-vel ( az eredetit 4-el ) már eltűnnek a fél fokok, de azt már korábban meg tudtad jegyeztetni! Remélem érthető volt ?! A hozzászólás módosítva: Márc 24, 2013
Az MPLAB helpjét érdemes nézegetni a kép alapján!
Steve
Kiprobaltam, jol mukodik mplab alatt, DE
az a baj, hogy tobb uj cimet nem enged megadni, tehat csak egyszer jatszhatom el a packed code_pack xxxx jatekot, utana azt irja, hoigy folytonosnak kell lennie.
Szoval a start, az inthi, intlo, data, prog reszeknek hogyan adok cimet? Idézet: Próbáld meg ADCON1 = 0x0E; értékadással letiltani az összes analóg bemenetet, TRISB = 0xFF; értékadással beállítani az adatáramlási irányt és töröld az INTCON2 #RBPU bitjét! (# itt a felülhúzás helyett van). Ha előtte mást nem állítottál el, akkor ennyi elég kell, hogy legyen. Hogy a CCS C mit csinál, azt nem tudom... „hogyan lehet aktiválni a pullup funkciot az RB0-RB7-ig mert csak az RB2-RB7 -ig sikerült”
Most ezt nem értem: a megszakítási címekre akarsz adatokat rakni ?!
Egyébként közötte program lenne vagy csak az adatokat akarod "szaggatva" berakni ?! A hozzászólás módosítva: Márc 24, 2013
Köszi .Ezeket csináltam én is ,de ugy néz ki a dolog hogy megoldodott.
Proteusban szimuláltam és ott nem jól müködött,de a HW-ben már müködik normálisan. PROTEUS se jó mindenre .Köszi a segítséget. ui: ez már a 2. bug a proteusban 18F4550 uc RB4-RB5 lábát az adatlap szerint csak I/O ban csak I aza bemenetre lehet hsználni és a proteusz simán leszimulálta ,hogy outnak is lehet .Szívtam vele mert 1 hd44780 LCD engedélyező lába volt ezen a porton és szimulátorban jól müködött de HW-n pedig nem.
Ez nem jó ( a "packed" csak cimke! ) ?!
Steve A hozzászólás módosítva: Márc 24, 2013
Sziasztok!
Egy kis segítséget szeretnék kérni. A három részt szeretném külön működtetni, de valahogy nem akar összejönni. A páciens pic18f46k22
Üdv, nem tudom, te mit láttál, de az adatlap szerint a PIC18F4550-esnek a csak VDD, VSS, CLKIN és MCLR (RE3) lábai bemenetek, az összes többi (beleértbe az RB4, RB5-öt is) kétirányú! Eddig nem találkoztam olyan PIC-el amelyiknek a B portja ne lett volna kétirányú
A bsf utasítás operandusa egy memóriaregiszter egy bitje. Te egy utasítás címét adtad meg a programterületről.
Mit szerettél volna csinálni?
Szia!
Igen bocsánat kicsit elgépeltem. A 0000H, 0008H mellett szeretném a 0018-at futattni ido cimen.
Nem feltetlenul, de a sima code 0x0100-re hibat ad.
A cimkek cimei csak pelda, ha packed1 es packed2, tok ugyanezt csinalja, nincs jelentosege, odaig el sem jut, hogy a cimkek azonos neve miatt panaszkodjon. Tehat a kerdes, hogy a megszakitasok es a progi kezdetet hogyan adom meg. Ma szavakkal, ha mondjuk harom, egeszen eltero reszre akarok pakolni, monduk 0x0100, 0x0200 es 0x0300 par byteot, akkor a koztes terulete ne kelljen nullakkal feltolteni. Vagyis ha keverem mondjuk a tobb adatot a tobb koddal, akkor mit kell irni?
A kódírás úgy látszik, még nem megy. Még mindig nem világos, mit szeretnél csinálni.
A 00008h címen a megszakítás van, az ott levő szubrutinokat nem szokás közvetlenül meghívni, pláne nem szokás interrupt rutinban olyan szubrutinhívást kiadni, ami az árnyékregisztereket módosítja. Letiltottad az ASM kisbetű/nagybetű megkülönböztetését, hogy kevered a led/LED alakot?
A 0000 program, a 0008 megszakítás teljesen jól müködik egy programban. A led, hang idöt, csak példának irtam, de a return, return,1 valos, igy tér vissza. Eddig nincs is gond, de a 0018 ba terveznék egy timert ami a fuggetlenül futna az elözöktöl.
Menjünk vissza a kályhához. Mit értsek azon, hogy nem akar összejönni. Mi a tényleges kód, mi a hibaüzenet, mi a jelenség?
|
Bejelentkezés
Hirdetés |