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 |