Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   28 / 32
(#) lalca válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
Szia!
Nem ismerem az MPLAB-ot, de az #include "honap/Januar.asm" ; nem működik?
(#) sonajkniz válasza lalca hozzászólására (») Ápr 9, 2023 /
 
Sajnos nem.
(#) lalca válasza sonajkniz hozzászólására (») Ápr 9, 2023 /
 
Akkor talán valaki okosabb segít.
(#) Bakman válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
Tedd az almappába a fájlokat.

File menü -> Project properties -> XC8 compiler (vagy amit használsz) -> Include directories

Itt tudsz mappákat hozzáadni. Elvileg megérti, ha a saját magad létrehozott mappát adod meg neki.
(#) sonajkniz válasza Bakman hozzászólására (») Ápr 9, 2023 /
 
Kipróbáltam, bár az assembly nem így néz ki formailag, de lehet belső mappát létrehozni, de ott sem találja meg. Egyszerűen nem hajlandó azon a könyvtáron kívül keresni, mint ahol az alapprogram van.
De ott aztán bárhogy. Ha átkeresztelem .asm-ről .txt-re, vagy akár .inc-re, de írhatok neki .S-et, tehetem pipicsőr vagy idézőjel közé, minden formában betölti. Csak almappából, vagy külső helyről nem hajlandó az istennek sem. Pedig nekem ez kellene.
A hozzászólás módosítva: Ápr 9, 2023
(#) jefflynn válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
Nem programozok assembly-ben, de kíváncsiságból megnéztem, és van ilyen beállítás. Aztán hogy működik-e, azt nem tudom.
(#) sonajkniz válasza jefflynn hozzászólására (») Ápr 9, 2023 /
 
Én ezt a képet kapom, és ebben akár mit próbálok, az a menüsor ami a te képeden látszik, nem jön elő.
(#) Hp41C válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
A két képen más-más fordító beállítását látni. A Képernyőkép.png -n a pic-as -ét, a Képkivágás.jpg -en az mpasm -ét. Sajnos az utóbbit az új MpLabX már nem támogatja.
(#) Taki33 válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
Szia!

Nálam XC8-nál ez működik:

Project (fül) –> Header Files (jobb egérgomb) New --> Directory

A létrehozott könyvtárba bemásolod az állományokat.
Utána:

Project (fül) –> Header Files (jobb egérgomb) Add Existing Item…

mindegyik állományt így hozzáadod a könyvtárhoz.
Használata: #include "Könyvtárnév/Állománynév"

lib.jpg
    
(#) jefflynn válasza sonajkniz hozzászólására (») Ápr 9, 2023 / 1
 
Oké, akkor már világos mi a gond. Te még mpasmx-et használsz, de az már régi, nem támogatott. Amit én küldtem, az már az utódja, pic-as névre hallgat. Ezért nincs olyan opciód, ami nálam van. Két dolgot tehetsz. Átállsz az új pic-as-re vagy megkeresed a mpasmx dokumentációjában, hogy hogyan kell további include könyvtárakat megadni, és beírod az Additional options mezőbe. Valami ehhez hasonló lesz: -I..\subir vagy -Isubdir.
Érdekes, mert a leírás szerint (nem tudom, hogy arra a verzóra vonatkozik-e, amit használsz) tudja kezelni az útvonallal megadott include fájlt.
  1. #include p18f452.inc ;standard include file
  2. #include "c:\Program Files\mydefs.inc" ;user defines
A hozzászólás módosítva: Ápr 9, 2023
(#) sonajkniz válasza Taki33 hozzászólására (») Ápr 9, 2023 /
 
Megette!
Király vagy !
Köszönöm!
(#) Taki33 válasza sonajkniz hozzászólására (») Ápr 9, 2023 /
 
Nincs mit, további jó programozást.
(#) sonajkniz hozzászólása Ápr 10, 2023 /
 
Na jó! Az MPLAB X buggyant.
Működött a dolog a létrehozott mappával, de a mappát a törzskönyvtárban hozta létre, nem ott, ahol én akartam. Létrehoztam egy újabbat abban a mappában, ahol a főprogram van. Nem működik.
Ha a programot is átteszem a törzykönyvtárba, nem működik. Ha a pogram egy almappában van, és simán csak létrehozok egy mappát a törzskönyvtárban, azon belűl újabb almappát, és azon belül e még két újabbat, és 4 mappa mélységbe teszem be a dolgaimat, és a meghívást sem teszem idézőjelbe, azaz így néz ki: #include Keptar/Karora/Spriteok/Honapok/Januar.asm , tökéletesen működik.
Így aztán csak Ctrl+c Keptar/Karora/Spriteok/Honapok/ , majd Ctrl+v a többi elé oszt jóidő.
A lényeg, hogy végre rendet tudtam tenni benne. Mégegyszer köszönet mindenkinek.
(#) nemgyuri válasza sonajkniz hozzászólására (») Ápr 10, 2023 /
 
Szia! Ezt követtem el próbaként: (Meglevő projektbe beleírtam egy "end"-et, ami mögötte volt azt kitettem a "C" gyökerébe. Az "end" elé beírtam az include + elérési utat, és így működik. Próbaként a program elejére is beírtam, de akkor néhány oldal hibát adott...)
  1. #include "C:\kismatek.inc"  
  2.     end
  3.    
  4. ;16 bites kismatek
  5. ADD16:          ;összeadás 2 byte REGA0,1=REGA0,1 + REGB0,1
  6.         MOVF    REGB0,W
  7.         ADDWF   REGA0,f
  8.         BTFSC   STATUS,C
  9.         INCF    REGA1,F
  10.         MOVF    REGB1,W
  11.         ADDWF   REGA1,f
  12.         RETURN
  13.  
  14. SUB16:          ;kivonás 2 byte        REGA0,1=REGA0,1 - REGB0,1
A hozzászólás módosítva: Ápr 10, 2023
(#) Hp41C válasza nemgyuri hozzászólására (») Ápr 11, 2023 /
 
mégis milyen hibát adott? Megadtad a kontroller típusát az include előtt?
Töltsd fel a hibákat egy állományban.
(#) nemgyuri válasza Hp41C hozzászólására (») Ápr 11, 2023 /
 
Félreértetted, a működő program egy részét kitettem egy külön file-ba. Ha az "#include....." ott volt ahonnan kivettem, akkor jó volt, de ha a program elejére tettem akkor nyomta a hibákat.
Ezt csak sonajkniz kolléga kérdése miatt követtem el!
(#) sonajkniz hozzászólása Ápr 14, 2023 /
 
Sziasztok!

Egy egészen elképesztő problémával találtam szembe magamat.
A PIC18-as család egész komoly lehetőséget ad a RAM-ok indirekt kezelésére.
18F14k22-es, 18F26K22 és 18F46K22-es kontrollerekkel dolgoztam eddig. Mindegyik típus tökéletesen kezelte a ramokat az indirekt módok mindegyikén.
Most viszont egy 18F14K50-essel szívok.
Csak abban az egy esetben tudom indirekt írni, olvasni a ramokat, ha csoportosan teszem. Azaz ha a címzés után max néhány utasítássoron belűl újabb és újabb ramot írok-olvasok postinc, postdec utasításokkal.
Ha csak egy ramot szeretnék írni, nem történik meg a beírás.
Szimulátorban tökéletesen fut, de a valóságban nem. Mi lehet ennek az oka?
(#) bbalazs_ válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
És ha ugyanazt a címet egymás után többször?
Igazi RAM-ra gondolsz vagy EEPROM sokszor írhatórészére (data eeprom)?
Másik PIC-el is ezt csinálja?
Órajel-változtatás (csökkentés)?

Errata ír róla valamit?
(#) sonajkniz válasza bbalazs_ hozzászólására (») Ápr 14, 2023 /
 
A belső ramokat használom.
Ha beállítom pl a következőt:
MOVLW 0x1
MOVWF FSR2H
MOVLW 0x47
MOVWF FSR2L
MOVLW .127
MOVWF INDF2
Akkor beírja.
Akkor is beírja, ha POSTINC2-őt használok, és folyamatosan töltögetek fel.
Akkor nem írja be, ha a címzés nem direkt beírású, hanem változó átadással történik.
Tehát pl. egy szorzási művelet végén
MOVFF PRODH,FSR2H
De még úgy sem, hogy
MOVF PRODH,W
MOVWF FSR2H

Még mielőtt visszakérdeznél, szimulátorban ellenőriztem az adatokat, és sehol nincs tartományon kívüli érték. Illetve a szimulátorban magukat az FSR regisztereket is nézem.
Megfordult a fejemben, hogy esetleg a hardveres szorzó hibás a PIC-ben, de más részén a programnak szintén van szorzás, és az jó eredményt ad.
(#) sonajkniz válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Tévedtem. Amit jó szorzási eredménynek véltem az többlépcsős összeadás.
Tehát nincs kizárva a hardveres szorzó hibálya.
(#) Elektro.on válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Nézd végig az Errata doksiját, Hátha írnak valami hasznosat róla.
(#) bbalazs_ válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Engem sokszor szivatott a bankolás. Egyedül a MOVFF használ két abszolút címet, a többinél bankolás van, és mintha a bankok mérete nem lenne mindig fix, függene a PIC RAM mérettől.
(#) Hp41C válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Idézet:
„Akkor nem írja be, ha a címzés nem direkt beírású, hanem változó átadással történik.
Tehát pl. egy szorzási művelet végén
MOVFF PRODH,FSR2H
De még úgy sem, hogy
MOVF PRODH,W
MOVWF FSR2H”


Az utolsó sorban nem INDF2 -nek vagy POSTINC2 -nek kellene szerepelnie?
(#) sonajkniz válasza Hp41C hozzászólására (») Ápr 14, 2023 /
 
Az csak egy példa voltaz FSR írására.
Föntebb ez is szerepel.
MOVLW .127
MOVWF INDF2
(#) Hp41C válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Zavart érzek az erőben...
Idézet:
„Csak abban az egy esetben tudom indirekt írni, olvasni a ramokat...”

A movwf FSR2H utasítás nem indirekten írja a RAM -ot.
(#) sonajkniz válasza Hp41C hozzászólására (») Ápr 14, 2023 /
 
Nem! Az címzi. Írni az INDF írja.
MOVLW 0x1
MOVWF FSR2H
MOVLW 0x47
MOVWF FSR2L
MOVLW .127
MOVWF INDF2
Bővebben: Link
(#) sonajkniz válasza sonajkniz hozzászólására (») Ápr 14, 2023 /
 
Na ilyen az, amikor az embernek van egy alap elképzelése egy hiba mikéntjéről és 4 napon át csak ott kutakodik.
Az alap az volt, hogy a program kivesz a ramtárból 1 byteot, módosít rajta, majd visszateszi.
Nos mint ennyi gyötrődés után kiderült, a program szépen kivette a megfelelő byteot a ramtárból, majd vissza is tette, csak az a rutin nem csinált vele semmit, aminek módosítania kellett volna.
(#) sonajkniz hozzászólása Máj 3, 2023 /
 
Sziasztok!

Tud valaki esetleg olyan fejlesztőkörnyezetet, amiben a PIC18F05Q40 assemblyben programozható?
Egyszerűen röhelyesnek tartom, hogy a Microchip az adatlapban feltünteti az összes assembly utasítást, de az általuk készített fejlesztőkörnyezet, amiben ez a PIC egyáltalán szerepel,(MPLAB X 5.35- től felfele) egyáltalán nem tartalmaz hozzá semmit. Utólag lehet letölteni, de csak XC8-at.
Ja a 6-os verziótol felfele már semmit nem lehet asm.-ben programozni.
(#) bbb válasza sonajkniz hozzászólására (») Máj 3, 2023 /
 
Az XC8 részévé tették az assembly programozáshoz szükséges dolgokat is. Bővebben: Link
(#) bbb válasza bbb hozzászólására (») Máj 3, 2023 /
 
ASM forrást készíteni úgy tudsz, ahogy a képen is látod, source files jobb klikk -> new -> pic_8b_asm_func.asm

xc8.png
    
Következő: »»   28 / 32
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