Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   2 / 25
(#) tcs52 hozzászólása Jan 12, 2023
MAKE fájl - MPLABX (v5.40), XC8 Assembler (pic-as v2.20):

Mivel sem Mekk mester, sem MAKE mester nem vagyok, így segítséget kérnék MAKE file módosítás ügyében. Mivel az egyes projekteknél az nbproject almappában egy eléggé komplett (azaz összetett) MAKE szerkezet lapul, és még sohasem nyúltam a mélyére, ezért nincs tapasztalatom, hogyan futtathatnék le egy forrás-generáló alkalmazást, amely néhány újragenerált forrásfájlt frissítene, mielőtt az assembler fordítása elkezdődne.
Konkrétan:
Egyes PIC-ek több USART-tal rendelkeznek, és a meghajtóprogram részük nagyban azonos, csupán a rutinok, az I/O regiszterek nevében, pár RAM változóban (és néhány apróságban) különböznek. Az ekvivalens részek egyetlen forrása egy .inm kiterjesztésű fájlban van, melyből egy mis.exe - általam készített (és igény szerint módosítható) - alkalmazás fordít át .inc kiterjesztésűre, az mplabx projekthez. Az átfordítás parancsai:

mis.exe source@.inm /1
mis.exe source@.inm /2

Ez a két parancs állítja elő tehát a source1.inc és source2.inc fájlokat (a source helyett tetszőleges forrásfájl nevet alkalmazhatunk a parancssorban).

A kérdés tehát: melyik MAKE fájlba mit kell beszúrnom, esetleg milyen fájlokat kell előállítanom, és hová, hogy a két parancs kézi lefuttatása helyett az átfordítás automatizált legyen?
(#) Bell válasza Bakman hozzászólására (») Nov 19, 2022
Köszönöm!
(#) Bakman válasza Bell hozzászólására (») Nov 19, 2022
Ez valamilyen új bug lehet a programban, nekem is ezt csinálja. Én kibekkeltem azzal, hogy billentyűkombinációt rendeltem az elérési útvonalhoz, így nem kell végigkattintgatnom, megmutatva neki a mappát.
(#) Bell válasza zenetom hozzászólására (») Nov 19, 2022
Köszönöm!
A fordító már a telepítésnél helyére került, de az include - proc mappák helyét sajnos csak minden projektnél egyenként tudom megadni.
Talán Az MPLABX valamilyen config fájljában lehetne ezt beállítani, vagy újrarakni, amit szeretnék elkerülni.

inc-proc.jpg
    
(#) zenetom válasza Bell hozzászólására (») Nov 19, 2022
Szia!
Próbáld meg a Tools -> Options -> Embedded lap -> Build Tools fülön megadni az XC8 fordító helyét.

xc8.png
    
(#) Bell hozzászólása Nov 19, 2022
Az újonnan telepített XC8 működik, de minden projektnél külön meg kell adni a fordító include és proc mappák helyét.
Különben a mellékelt hibát kapom. Nem hagyta magát a megadott helyre telepíteni.
Létezik erre valami egyszerű megoldás, beállítás?
Köszi!
(#) Bell válasza pipi hozzászólására (») Nov 17, 2022
Köszönöm a választ!
Azt hiszem, a pocesszor adatait nem találja, ezért felraktam a legújabb XC8-at és ez úgy tűnik megoldotta a problémát.
Köszi még egyszer, jó éjt!
(#) pipi válasza Bell hozzászólására (») Nov 17, 2022
Ha készítesz egy új "üres" hasonló projektet akkor az lefordul?
Jártam már én is úgy hogy "valami" elromlott, nem fordul t le, már nem emlékszem a hibaüzire.
Új mappába csináltam új projektet, bemásoltam a forrásokat, hozzáadtam, és működött
(#) Bell hozzászólása Nov 17, 2022
Sziasztok!
Rég nem használtam az MPLABX-et.
A korábban jól működő projektek fordításkor mind hibát jeleznek.
Itt egy egyszerű próba, amin talán látszik mi a gond, de nem tudom hogyan lehet a hibát kijavítani.
Köszönet!
(#) gyoran válasza kissi hozzászólására (») Máj 8, 2022
Sajnos maxon van.
10000 az 10 msec, a 4 MHz beállításnál. Ha 200 msec időzítést teszek bele (most pl. éppen ennyi van) akkor utána semmit nem látni az analyzer képernyőjén. Időalapú mérésnél pedig nem találtam meg azt, hogy az egy tick hosszát hol lehet megadni.
A hozzászólás módosítva: Máj 8, 2022
(#) kissi válasza gyoran hozzászólására (») Máj 8, 2022
Szia!

Én a régi MPLAB alatt használtam, ott a memóriaméretet kellett megnövelnem, hátha itt is segít !
(#) gyoran hozzászólása Máj 8, 2022
Sziasztok
MPLAB IDE 6.00 egészen jól működik.
Egy gondom van (volt korábban is)
Csinálok egy egyszerű programot (200 ms wait- alternate IO és ez loop-ban)
a Logic Analisert viszont nem tudom nagyobb időléptékre rávenni.
Így aztán a vízszintes vonalon kívül semmit nem látok (hol 5v, hol 0V).
Interneten nem találtam semmit, pedig órákat bújtam
hogyan lehetne csökkenteni a vízszintes felbontást?
Van valakinek tippje?
A hozzászólás módosítva: Máj 8, 2022
(#) llaczo válasza kissi hozzászólására (») Ápr 16, 2022
Köszönöm. erre nem gondoltam.
(#) kissi válasza llaczo hozzászólására (») Ápr 16, 2022
Szia!

Ha egyszer átmentél egy másik lapra, akkor a PCLATH már be kellett, hogy állítva legyen, azaz ott nem kell bántanod, amíg belül vagy! A visszaugrással nincs gond, viszont a PCLATH-ot se felejtsd el ilyenkor visszaállítani !
(#) llaczo hozzászólása Ápr 16, 2022
Üdv. Véleményt szeretnék kérni.
Úgy terveztem hogy felosztom a memoria tartományt 4 részre:

ORG0x4,
ORG 0x800,
ORG 0x1000,
ORG 0x17FF

Az elsőben lesz a program, a többiben pakolgatom az adatokat ahova kell.
Csak akkor használok LCALL vagy LGOTO utasítást ha egy másik blokkban van dolgom.
Úgy olvastam hogy a VEREM 12 bites, tehát a RETURN utasítás simán műkődik a blokkok között is.
Kérdésem hogy jó e ez a terv? Például a negyedik blokkon belül kell e használni az LCALL utasítást vagy ott elég a CALL?
(#) majkimester válasza llaczo hozzászólására (») Ápr 14, 2022
Az aktuális MPASM user guide-ot feltelepíti az MPLAB, itt találod:
c:\Program Files (x86)\Microchip\MPASM Suite X\docs\MPASM_MPLINK_User_Guide.pdf
Inkább ezt olvasgasd.
(#) llaczo válasza majkimester hozzászólására (») Ápr 14, 2022
Köszönöm a linket. Ez hasznos lesz.
(#) llaczo válasza Hp41C hozzászólására (») Ápr 14, 2022
Köszönöm az infót. Igaz ebbe az ügyködésbe nem tervezek megszakítást. MAX7219 el oldom meg a mátrixokat. Ez elég jól leveszi a terhet a PIC-ről.
(#) nedudgi válasza Bakman hozzászólására (») Ápr 14, 2022
Egy projekt mentésekor létrehozott egy átláthatatlan/logikátlan könyvtárszerkezetet, üres könyvtárakkal. Ezt a jó szokását megtartotta, amíg próbálgattam. Huszonvalahány verzióig tartott a türelmem, utána az egész MicroChip vonalat ejtettem az új fejlesztésekben.
Ez vitathatatlanul szubjektív álláspont, elismerem, de vallásháborúba nem érdemes belemenni.
(#) majkimester válasza llaczo hozzászólására (») Ápr 14, 2022
Csak a teljesség kedvérét itt egy lista azokról a speciális utasításokról, amit használhatsz a programban a jobb olvashatóság miatt, és hogy mire is fordul. Forrás

  1. TABLE 17:  PIC16CXX SPECIAL INSTRUCTION MNEMONICS
  2.  
  3.            Name               Mnemonic       Equivalent       Status
  4.                                             Operation(s)            
  5.  Clear Carry                CLRC          BCF      3,0           -  
  6.  Clear Digit Carry          CLRDC         BCF      3,1           -  
  7.  Set Digit Carry            SETDC         BSF      3,1           -  
  8.  Clear Zero                 CLRZ          BCF      3,2           -  
  9.  Set Zero                   SETZ          BSF      3,2           -  
  10.  Skip on Carry              SKPC          BTFSS    3,0           -  
  11.  Skip on No Carry           SKPNC         BTFSC    3,0           -  
  12.  Skip on Digit Carry        SKPDC         BTFSS    3,1           -  
  13.  Skip on No Digit Carry     SKPNDC        BTFSC    3,1           -  
  14.  Skip on Zero               SKPZ          BTFSS    3,2           -  
  15.  Skip on Non Zero           SKPNZ         BTFSC    3,2           -  
  16.  Test File                  TSTF f        MOVF     f,1           Z  
  17.  Move File to W             MOVFW f       MOVF     f,0           Z  
  18.  Negate File                NEGF f,d      COMF     f,1              
  19.                                           INCF     f,d           Z  
  20.  Add Carry to File          ADDCF f,d     BTFSC    3,0              
  21.                                           INCF     f,d           Z  
  22.  Subtract Carry from File   SUBCF f,d     BTFSC    3,0              
  23.                                           DECF     f,d           Z  
  24.  Add Digit Carry to File    ADDDCF f,d    BTFSC    3,1              
  25.                                           INCF     f,d           Z  
  26.  Subtract Digit             SUBDCF f,d    BTFSC    3,1              
  27.  Carry from File                          DECF     f,d           Z  
  28.  Branch                     B k           GOTO     k             -  
  29.  Branch on Carry            BC k          BTFSC    3,0              
  30.                                           GOTO     k             -  
  31.  Branch on No Carry         BNC k         BTFSS    3,0              
  32.                                           GOTO     k             -  
  33.  Branch on Digit Carry      BDC k         BTFSC    3,1              
  34.                                           GOTO     k             -  
  35.  Branch on No Digit Carry   BNDC k        BTFSS    3,1              
  36.                                           GOTO     k             -  
  37.  Branch on Zero             BZ k          BTFSC    3,2              
  38.                                           GOTO     k             -  
  39.  Branch on Non Zero         BNZ k         BTFSS    3,2              
  40.                                           GOTO     k             -  
  41.  Call across page boundary  LCALL k       BCF 3,5 or BSF 3,5        
  42.                                           BCF 3,6 or BSF 3,6        
  43.                                           CALL     k
(#) Hp41C válasza llaczo hozzászólására (») Ápr 14, 2022
A lcall és a lgoto használata nem egész megoldás, ha megszakítást alkalmazol. Ld. belinkelt cikk.
(#) llaczo válasza majkimester hozzászólására (») Ápr 14, 2022
Köszönöm szépen a segítséget.
(#) majkimester válasza llaczo hozzászólására (») Ápr 14, 2022
2 kB-on túl nem elég a sima goto/call, ahogy már gyoran is írta, be kell állítani a PCLATH-et is. De azért ez sem annyira bonyolult:

  1. pagesel cimke
  2.     call cimke
  3.  
  4.     pagesel cimke2
  5.     goto cimke2


De még ennél egyszerűbben is lehet:

  1. lcall cimke
  2.     lgoto cimke2


Az lcall és lgoto nem egy kontroller utasítás. hanem a fentieknek megfelelően több utasításra fordul. (beállítja a PCLATH-ot, majd sima call vagy goto)
A hozzászólás módosítva: Ápr 14, 2022
(#) moltam válasza llaczo hozzászólására (») Ápr 14, 2022
Ez nem hiba, adottság Erre elég a 14bites utasításhossz.
(#) llaczo hozzászólása Ápr 14, 2022
Nagyon szépen köszönöm a választ.
Fene se gondolta volna hogy ilyen hibát tartalmaz a 877-es.
Egy 1700 ledes kijelzőn ügyködöm. Oda kell a sok memória.
Tizenéve mikor kezdtem programozgatni olvastam valahol erről a korlátról. A jelenség ezt juttatta eszembe. Örülök hogy tévedtem.
(#) Hp41C válasza llaczo hozzászólására (») Ápr 14, 2022
Egy kis olvasnivaló.
(#) Bakman válasza nedudgi hozzászólására (») Ápr 14, 2022
Ha emlékeim nem csalnak, akkor a Mikroe, a Parsic és a Flowcode v5 ingyenes változata tartalmaz ilyen korlátozást.

Mi a baj az MPLAB X-szel? Mostanában azzal játszom, nekem úgy tűnik, abban is lehet programot írni igaz, a korábbi verziókat nem próbáltam.
(#) nedudgi válasza llaczo hozzászólására (») Ápr 14, 2022
Az MPLab nem tartalmaz korlátozást a program méretére. A PIC18F877 korlátairól gyoran kolléga megírta a tutit.
Ha MPLab X keretrendszert használsz, akkor nem szóltam, mert pár év folytonos próbálkozása után feladtam, abbahagytam a követését, mert rossznak tartom a koncepciót, a MicroChip pedig - szerintem - képes ilyen öngyilkos stratégiára.
Mindentől függetlenül érdekel az a forrás, hol ilyen korlátot emlegetnek. A Mikronika magas szintü nyelvei tartalmaznak emlékeim szerint ilyen korlátot.
A hozzászólás módosítva: Ápr 14, 2022
(#) llaczo válasza nedudgi hozzászólására (») Ápr 13, 2022
Assembly
(#) nedudgi válasza llaczo hozzászólására (») Ápr 13, 2022
Milyen nyelven írod a programot?
Következő: »»   2 / 25
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