Fórum témák
» Több friss téma |
Bővebben: Link
Az IC felületére nincs írva semmi, le van törölve. Ennek az ICnek a kimenetére 3K soros ellenállás és tranzisztor van kötve, ami kapcsolja a relét. Ennek az RF kapcsolónak a jelét kell fognom PICel. Felesleges a relét e miatt használni. (A modul bontva lesz, és alkatrészei egy más nyákba lesznek téve)
Sziasztok!
Próbálom beállítani az A/D konvertert de állandóan ezt a hibát dobja ki: Idézet: „ADC-W0008: No stimulus file attached to ADRESL for A/D. ADC-W0012: Selected channel 0 is an invalid channel.” Mi lehet a baj? A progi az adatlapon lévő minta program:
Köszi a linkeket, így már világos. Nekem a Debuggers -nél az MPLAB SIM -nél egy sárga bogyó van. Gondolom akkor ez a bibi.
MPLAB X új projekt generálásakor nincs assembler lehetőség csak C. Tudna valaki segíteni hogy lehet varázsolni MPASM lehetőséget ?
Köszönöm !
Dobd ki a jelenlegi MPLAB X-et és tedd fel a 3.65-ös verziót.
Én 5 éve programozok assemblyben, és ez a verzió bizonyult számomra a leg használhatóbbnak.
MpAsm helyett a pic-as program van. Bővebben tárgyalják a MIcrochip fúrumon.
Ebben a PIC Assemblerben hogyan kell változókat definiálni?
Az MPLAB XC8 PIC Assembler User's Guide-ban nem találok róla semmit.
Nem volt olyan egyszerű kibogozni, de már kezdem kapisgálni:
A hozzászólás módosítva: Márc 20, 2021
Ez most komoly, hogy a régi bitdefiníciókat is módosították, ráadásul agyatlanul?
A régen használt bithivatkozás már nem működik:
Ehelyett így kell most:
A PIC16F886-hoz korábban a p16F886.inc fájlban voltak a definíciók, most meg a pic16F886.inc-ben. Ebből egy részlet:
Ez most mire volt jó?
Sziasztok!
Egy olyan kérdésem lenne, hogy nem-e gond az ha megszakításból átugrok egy címkére ahol tovább futna a progi, de valójában már nem ugrik vissza a megszakításhoz és nem fog lefutni a RETFIE. Ilyenkor nem telítődik a verem folyamatosan? Egy külső megszakításkor szeretném elágaztatni a progit:
Valójában a GOTO MVEGE soha nem futna le, de viszont ott van a RETFIE FAST. Attól tartok, hogyha nyomkodom a gombot akkor minden alkalommal megszakítást okoz de soha nem lép ki a megszakításból. Nem tudom jól látom-e de remélem azért érthetően fogalmaztam. Előre is köszi a segítséget!
Szia,
Megszakításba való belépés végén erősen ajánlott egy RETFIE. Illetve "kézzel" is meg lehet oldani: stackpointer csökkentése, ha alkalmas a PIC pl. POP utasítással, és újra engedélyezni kell a megszakítást (GIE/GIEH vagy PEIE/GIEL). Különben valószínűleg az lesz hogy egyetlen egyszer fog beugrani a megszakításra.
Értem, köszi. Hát ez így elég gáz. Akkor kitalálok valami mást, csak így nem sok értelme van a külső megszakításnak. Akkor lehet ugyanúgy pollingolni, amit elakartam kerülni.
Beállíthatsz egy flaget, amit tényleg poolingolni kell, vagy ha kicsi a kód amit ilyenkor végre szeretnél hajtani, akkor a megszakításba is mehet (még ha nem is elegáns).
Ha írsz konkrétabbat, lehet tudunk adni ötleteket. UI: Félreértés ne essék, értem hogy kétfelé szeretnél menni vele, kérdés mekkora a két ág és ezek hova térnének vissza? A hozzászólás módosítva: Márc 23, 2021
Nem tudom pontosan mit szeretnél, de ahhoz hogy egy gombra reagálj, lehet nem is kell megszakítás. Illetve nem muszáj engedélyezni és belépni a megszakításvektorra.
Ugyanis (ezesetben) a INTCON, INT0IF bit értéke 1 lesz akkor is, ha a megfelelő külső jel éri a lábat, de nincs engedélyezve a megszakítás (a megszakítás engedélyezése azt állítja be, hogy megszakadjon a főprogram futása, és ugorjon a megszakításvektorra). Tehát, ha van mondjuk egy főciklusod, akkor abba berakhatod a INTCON, INT0IF bit pollingozását (mondjuk úgy, hogy legalább 50ms-onként ráfusson a kód), és ha 1 az értéke, akkor végrehajtod amit kell, törlöd ezt a bitet, és folytatódik minden tovább.
Leírom akkor egy kicsit részletesebben hogy mit is szeretnék. Először is a PIC egy 18F46k22.
A lényeg hogy csináltam egy PWM-et és freki modulátort amit 1 potival vezérelnék, de lenne egy nyomógomb mint kapcsoló, de nem egy ON-OFF vagy ilyesmi, hanem csak egy egyszerű mikrokapcsoló ami egy impulzust adna az egyik bemeneti lábra. Ezzel váltogatnám a kívánt módot. A perlegést megoldom, azzal nincs gond, de az elképzelésem az lenne, hogy amikor egy kapcsoló impulzus érkezik, akkor egy regiszter értékét növelem 1-el. Igazából sok varia nincs mert vagy 1 vagy 0 lesz a regiszter értéke . De ezzel a módszerrel egy csomó opciót belehetne rakni a progiba. Ha a kapcsoló állapota 0 akkor ugorjon a PWM módra (címke ahol a hozzá tartozó programrész van), ha 1, akkor meg a FM módra, mintha egy szubrutin lenne, de nem az, csak a kapcsoló állapotától függően átugrok egy- programrészt és persze a poti éppen ahhoz a programhoz használható lenne. Ezért gondoltam hogy ha megszakítást okoz a gomb, akkor könnyebb dolgom lesz, de most látom hogy nem ugorhatok csak úgy ki a megszakításból úgy hogy ne legyen egy RETFIE. Lehet akkor úgy csinálom hogy 500ms-ként ránézek a kapcsoló regiszter értékére, és annak megfelelően irányítom tovább a progit, de ezen még filózok egy kicsit. silent15: köszi. A hozzászólás módosítva: Márc 23, 2021
Bocsi, most esett le, ez nem is rossz ötlet.
Eretnek ötlet:
PIC18F családban kezelni lehet a stack -et. A pop utasítással levehető a a visszatérési cím, amit a megszakítás elfogadásakor tett fel a kontroller. Egy push utasítással egy másik cím feltehető. A retfie a "kívánt" címre fog visszatérni.
Ez jól hangzik, köszönöm. Mindjárt ki is próbálom.
Az GIE-t nem kell kézzel újra engedélyezni?
Ha kiadja a RETFIE-t a verem megfelelő módosítása után, akkor nem, egyébként anélkül (pl. csak GOTO, RETURN megvalósítás esetén ) igen!
Köszi!
Úgy gondoltam, hogy RETFIE nélkül. Ilyen ördögtől való dolgot talán egyszer csináltam
Már miért lenne ez "ördögtől való"? Többfelhasználós rendszereknél, ill. hibakezelő rutinokban ez teljesen mindennapos fogás.
Ha tisztában van az ember vele mit csinál, akkor nyilván jó dolog. Még az adatlap is írja hogy szoftver stack-et lehet velük így kialakítani.
De pl. egy egyszerű nyomógomb kezelésénél nem annyira indokolt.
Sziasztok,
A PIC16f628A debuggolható eredeti MC Pickit3-mal? Nekem azt mondja, hogy Target Device ID (0x1060) is an Invalid Device ID. Programozni tudom, minden más -pl. ipe- megy, config az ajánlás szerint, hardware: egyszerű, nincs másra használva a pickit csatlakozás, IDE 5.45 telepítve, header AC162053 kiválasztva. A hozzászólás módosítva: Márc 25, 2021
Alkalmazod is a AC162053 headert? Az alacsony lábszámú kontrollereknél alkalmazni kell nyomkövetéskor.
A hozzászólás módosítva: Márc 25, 2021
Szerintem kezdőként, különösen egy ennyire egyszerű dologra, mint egy gomb figyelése, egyáltalán nem ajánlott a verem kezelése.
Kiválasztottam a Project propertiesben. De - ha jól látom - ez egy külön eszköz.
Azom nincs és nem ér meg több, mint 10 ezer Forintot. A hozzászólás módosítva: Márc 25, 2021
|
Bejelentkezés
Hirdetés |