Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   996 / 1203
(#) pajti2 válasza eSDi hozzászólására (») Nov 24, 2017 /
 
Semmi extrém sürgős, és nem kell műszer pontosság sem. Annyi kell, hogy ha a környezeti sugárzás sokkal nagyobb az átlagosnál (100 nSv/h fölött sokszorosan), akkor azt érzékelni tudja "nincs baj" / "baj van" jelleggel. Például 800 nSv/h már túl sok. Dobok róla privit is emlékeztetőnek, és időnként rádüzenek
(#) icserny válasza pajti2 hozzászólására (») Nov 24, 2017 /
 
(#) Hp41C válasza Bell hozzászólására (») Nov 24, 2017 /
 
C18 -ban még működött...
(#) f2f2 válasza Bell hozzászólására (») Nov 24, 2017 /
 
Jól értem akkor a main rutinban ban nem tudsz értéket adni konstans tömbnek, hisz
fordításkor az értékadást kihagyja mint pld Const unsigned char t4[4] = {1 ,2,3,4}...

A C-ben ezt a részt nem írhatnád ASM utasításokkal kiegészítve.
Több programozás is engedi, hogy assembler utasítások is lehessenek menet közben
mov .... jnl ... push ... pop stb

Akkor a tömböket memóriacímre ki kellene dolgozni a RAMban

pld a legelső RAMban használható hely címét a LED villogja ki tesztként és onnan lehetne feljebb építkezni ASM és C ben
pld ez a pont 0x20 -
akkor C ben csak egy memória lefoglalást csinálsz
pld unsigned char ramx[ írd be mennyi hely kell ];

tesztként villogtasd le LED el &ramx(0) címét a ramban
mov 0x20,0x20
innentől
mov ptr[0x20]+1,value_x1
mov ptr[0x20]+2,value_x2
...
ezután a C ben
a saját nevű változókhoz illesztheted
de pointeresen kellene megoldani

unsigned char *x1;
*x1=0x21; hopp ezt momentán nem tudom hogy is kell

és a ramx[] et is tudod használni



egy char változó
(#) Bell válasza f2f2 hozzászólására (») Nov 25, 2017 /
 
Leegyszerűsítettem, hogy átláthatóbb legyen.

A LED az A port 0-ás bitjén van. Asm-ben működőképesnek tűnik de futtatás után az értéke 0.
Azt hiszem nem látom a fától az erdőt.
  1. #include <xc.h>
  2. #include "cfg.h"
  3.  
  4. const  int x[] __at(0x900)={0x05,0x07,0x03,0x09};
  5. const  int *p;
  6.  
  7. void main __at(0x800) (void)
  8. {
  9.     OSCFRQ = 0b0000011;  // 8MHz
  10.     TRISA = 0x00;
  11.     ANSELA=0x00;
  12.     LATA = 0x00;
  13.      p=&x[0];
  14.      LATA=*p;
  15.     while(1);
  16. }
  17.  
  18. /*
  19.       Line      Address       Opcode      Label         DisAssy    
  20.     1 153    0900          0005                    PUSH              
  21.     1 154    0902          0007                    DAW              
  22.     1 155    0904          0003                    SLEEP            
  23.     1 156    0906          0009                    TBLRD*+          
  24.     1 157    0908          0E00                    MOVLW 0x0        
  25.     1 158    090A          6EF8                    MOVWF TBLPTRU, ACCESS
  26.     1 159    090C          0100                    MOVLB 0x0        
  27.     1 160    090E          EF00                    GOTO 0x800        
  28.     1 161    0910          F004                    NOP              
  29.     1 162    0912          FFFF                    NOP              
  30.  
  31.        Line      Address       Opcode      Label         DisAssy    
  32.     1 025    0800          0E03                    MOVLW 0x3        
  33.     1 026    0802          010E                    MOVLB 0xE        
  34.     1 027    0804          6FDE                    MOVWF 0xDE, BANKED
  35.     1 028    0806          0E00                    MOVLW 0x0        
  36.     1 029    0808          6E88                    MOVWF TRISA, ACCESS
  37.     1 030    080A          0E00                    MOVLW 0x0        
  38.     1 031    080C          010F                    MOVLB 0xF        
  39.     1 032    080E          6F11                    MOVWF 0x11, BANKED
  40.     1 033    0810          0E00                    MOVLW 0x0        
  41.     1 034    0812          6E83                    MOVWF LATA, ACCESS
  42.     1 035    0814          0E00                    MOVLW 0x0        
  43.     1 036    0816          6E01                    MOVWF 0x1, ACCESS
  44.     1 037    0818          0E09                    MOVLW 0x9        
  45.     1 038    081A          6E02                    MOVWF 0x2, ACCESS
  46.     1 039    081C          0E00                    MOVLW 0x0        
  47.     1 040    081E          6E03                    MOVWF 0x3, ACCESS
  48.     1 041    0820          C001                    MOVFF 0x1, TBLPTR
  49.     1 042    0822          FFF6                    NOP              
  50.     1 043    0824          C002                    MOVFF 0x2, TBLPTRH
  51.     1 044    0826          FFF7                    NOP              
  52.     1 045    0828          C003                    MOVFF 0x3, TBLPTRU
  53.     1 046    082A          FFF8                    NOP              
  54.     1 047    082C          0008                    TBLRD*            
  55.     1 048    082E          CFF5                    MOVFF TABLAT, LATA
  56.     1 049    0830          FF83                    NOP              
  57.     1 050    0832          D7FF                    BRA 0x832        
  58.     1 051    0834          0000                    NOP              
  59.     1 052    0836          FFFF                    NOP  
  60.  
  61. */
(#) Bell válasza Hp41C hozzászólására (») Nov 25, 2017 /
 
Ezt a PIC-et (18F25K40) nem tudtam mással fordítani, csak az MPLABX-el.
(#) f2f2 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Én még ilyet nem láttam. Biztos ezek jók így ? mi az az __at(0x800) ?
Az értékadások neked C ből gépi kódra nincsenek, így akkor e teszt, hogy lenne jó ?

A c fájlod elején nem tudsz nem C hanem ASM nyelves értékadásokat adni biztos jó címre
aztán a mainban e címet add meg 1 pointeres változónak. ha LATA 8 bit akkor char legyen a pointeresed is.
(#) Bell válasza f2f2 hozzászólására (») Nov 25, 2017 /
 
A c program fordításának eredménye van a main utáni megjegyzésben, a ROM tartalma.
Lemaradt belőle a 0-ás cím, ahol GOTO 0x908 van.
A fordítás asm eredménye, a tárgykód, a ROM 0x800 címén kezdődik, az adatok 0x900-on.
(#) f2f2 válasza Bell hozzászólására (») Nov 25, 2017 /
 
így ok gondolkodok
a pointert add meg beírt számmal

const char *p;
p=0x900;
*p=0x900;

passz most nem tudom
(#) Bell válasza f2f2 hozzászólására (») Nov 25, 2017 /
 
Nincs változás, megpróbálom az asm-et lefordítani, csak rég csináltam.
(#) f2f2 válasza Bell hozzászólására (») Nov 25, 2017 /
 
A futtatott állományban hexában látszódjon az értékadás ASM módon 5 7 3 9
(#) Bell válasza f2f2 hozzászólására (») Nov 25, 2017 /
 
Futtatás után mindkettő ugyanazt az eredményt adja: LATAbits.LATA0-ra kötött LED 1 másodpercig világít, majd elalszik.
Szimulátorban persze működik, minden a helyén van.

A c program:
  1. #include <xc.h>
  2. #include "cfg.h"
  3. #define _XTAL_FREQ  8000000
  4.  
  5. const  int x[] __at(0x900)={0x0005,0x07,0x03,0x09};
  6. const  int *p;
  7. void main __at(0x800) (void)
  8. {
  9.     OSCFRQ = 0b0000011;  // 8MHz
  10.     TRISA = 0x00;
  11.     ANSELA=0x00;
  12.     LATA = 0x0F;
  13.     __delay_ms(1000);
  14.      p=&x[0];
  15.      LATA=*p;
  16.     while(1);
  17.    
  18. }

A forráskód assemblyben:
  1. list p=18f25k40
  2. #include <p18f25k40.inc>
  3. ; CONFIG1L
  4.   CONFIG  FEXTOSC = OFF         ; External Oscillator mode Selection bits (Oscillator not enabled)
  5.   CONFIG  RSTOSC = HFINTOSC_64MHZ; Power-up default value for COSC bits (HFINTOSC with HFFRQ = 64 MHz and CDIV = 1:1)
  6.  
  7. ; CONFIG1H
  8.   CONFIG  CLKOUTEN = OFF        ; Clock Out Enable bit (CLKOUT function is disabled)
  9.   CONFIG  CSWEN = ON            ; Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
  10.   CONFIG  FCMEN = ON            ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
  11.  
  12. ; CONFIG2L
  13.   CONFIG  MCLRE = INTMCLR       ; Master Clear Enable bit (If LVP = 0, MCLR pin function is port defined function; If LVP =1, RE3 pin fuction is MCLR)
  14.   CONFIG  PWRTE = OFF           ; Power-up Timer Enable bit (Power up timer disabled)
  15.   CONFIG  LPBOREN = OFF         ; Low-power BOR enable bit (ULPBOR disabled)
  16.   CONFIG  BOREN = SBORDIS       ; Brown-out Reset Enable bits (Brown-out Reset enabled , SBOREN bit is ignored)
  17.  
  18. ; CONFIG2H
  19.   CONFIG  BORV = VBOR_2P45      ; Brown Out Reset Voltage ion bits (Brown-out Reset Voltage (VBOR) set to 2.45V)
  20.   CONFIG  ZCD = OFF             ; ZCD Disable bit (ZCD disabled. ZCD can be enabled by setting the ZCDSEN bit of ZCDCON)
  21.   CONFIG  PPS1WAY = ON          ; PPSLOCK bit One-Way Set Enable bit (PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle)
  22.   CONFIG  STVREN = ON           ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
  23.   CONFIG  DEBUG = OFF           ; Debugger Enable bit (Background debugger disabled)
  24.   CONFIG  XINST = OFF           ; Extended Instruction Set Enable bit (Extended Instruction Set and Indexed Addressing Mode disabled)
  25.  
  26. ; CONFIG3L
  27.   CONFIG  WDTCPS = WDTCPS_31    ; WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)
  28.   CONFIG  WDTE = OFF            ; WDT operating mode (WDT Disabled)
  29.  
  30. ; CONFIG3H
  31.   CONFIG  WDTCWS = WDTCWS_7     ; WDT Window Select bits (window always open (100%); software control; keyed access not required)
  32.   CONFIG  WDTCCS = SC           ; WDT input clock or (Software Control)
  33.  
  34. ; CONFIG4L
  35.   CONFIG  WRT0 = OFF            ; Write Protection Block 0 (Block 0 (000800-001FFFh) not write-protected)
  36.   CONFIG  WRT1 = OFF            ; Write Protection Block 1 (Block 1 (002000-003FFFh) not write-protected)
  37.   CONFIG  WRT2 = OFF            ; Write Protection Block 2 (Block 2 (004000-005FFFh) not write-protected)
  38.   CONFIG  WRT3 = OFF            ; Write Protection Block 3 (Block 3 (006000-007FFFh) not write-protected)
  39.  
  40. ; CONFIG4H
  41.   CONFIG  WRTC = OFF            ; Configuration Register Write Protection bit (Configuration registers (300000-30000Bh) not write-protected)
  42.   CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot Block (000000-0007FFh) not write-protected)
  43.   CONFIG  WRTD = OFF            ; Data EEPROM Write Protection bit (Data EEPROM not write-protected)
  44.   CONFIG  SCANE = ON            ; Scanner Enable bit (Scanner module is available for use, SCANMD bit can control the module)
  45.   CONFIG  LVP = OFF             ; Low Voltage Programming Enable bit (HV on MCLR/VPP must be used for programming)
  46.  
  47. ; CONFIG5L
  48.   CONFIG  CP = OFF              ; UserNVM Program Memory Code Protection bit (UserNVM code protection disabled)
  49.   CONFIG  CPD = OFF             ; DataNVM Memory Code Protection bit (DataNVM code protection disabled)
  50.  
  51. ; CONFIG5H
  52.  
  53. ; CONFIG6L
  54.   CONFIG  EBTR0 = OFF           ; Table Read Protection Block 0 (Block 0 (000800-001FFFh) not protected  table reads executed in other blocks)
  55.   CONFIG  EBTR1 = OFF           ; Table Read Protection Block 1 (Block 1 (002000-003FFFh) not protected  table reads executed in other blocks)
  56.   CONFIG  EBTR2 = OFF           ; Table Read Protection Block 2 (Block 2 (004000-005FFFh) not protected  table reads executed in other blocks)
  57.   CONFIG  EBTR3 = OFF           ; Table Read Protection Block 3 (Block 3 (006000-007FFFh) not protected  table reads executed in other blocks)
  58.  
  59. ; CONFIG6H
  60.   CONFIG  EBTRB = OFF           ; Boot Block Table Read Protection bit (Boot Block (000000-0007FFh) not protected  table reads executed in other blocks)
  61.  
  62. code
  63. org 0
  64.         goto start
  65.  
  66. org 0x800      
  67.         MOVLW   0x3            
  68.         MOVLB   0xE            
  69.         MOVWF   0xDE,   BANKED 
  70.         MOVLW   0x0            
  71.         MOVWF   TRISA,  ACCESS 
  72.         MOVLW   0x0            
  73.         MOVLB   0xF            
  74.         MOVWF   0x11,   BANKED 
  75.         MOVLW   0xF            
  76.         MOVWF   LATA,   ACCESS 
  77.         MOVLW   0xB            
  78.         MOVWF   0x5,    ACCESS 
  79.         MOVLW   0x26           
  80.         MOVWF   0x4,    ACCESS 
  81.         MOVLW   0x5E           
  82.         DECFSZ  WREG,   F,      ACCESS
  83.         BRA     0x81E          
  84.         DECFSZ  0x4,    F,      ACCESS
  85.         BRA     0x81E          
  86.         DECFSZ  0x5,    F,      ACCESS
  87.         BRA     0x81E          
  88.         MOVLW   0x0            
  89.         MOVWF   0x1,    ACCESS 
  90.         MOVLW   0x9            
  91.         MOVWF   0x2,    ACCESS 
  92.         MOVLW   0x0            
  93.         MOVWF   0x3,    ACCESS 
  94.         MOVFF   0x1,    TBLPTR 
  95.         NOP                    
  96.         MOVFF   0x2,    TBLPTRH
  97.         NOP                    
  98.         MOVFF   0x3,    TBLPTRU
  99.         NOP                    
  100.         TBLRD*                 
  101.         MOVFF   TABLAT, LATA   
  102.         NOP                    
  103. x1      BRA     x1                     
  104.  
  105. org 0x900        
  106.         PUSH            ; da 5
  107.         DAW                 ; da 7
  108.         SLEEP           ; da3
  109.         TBLRD*+         ; da 9
  110. start
  111.         CLRF    0x3,    ACCESS
  112.         CLRF    0x2,    ACCESS
  113.         CLRF    0x1,    ACCESS
  114.         MOVLW   0x0    
  115.         MOVWF   TBLPTRU,        ACCESS
  116.         MOVLB   0x0    
  117.         GOTO    0x800          
  118.  
  119.     end
A hozzászólás módosítva: Nov 25, 2017
(#) sonajkniz válasza Bell hozzászólására (») Nov 25, 2017 /
 
Kikommentelnéd az asm. Kódot?
Én ugyanis kizárólag assemblyben programozok, de nem sikerült rájönnöm, hogy ez mit csinál.
(#) Pali79 válasza sonajkniz hozzászólására (») Nov 25, 2017 /
 
Erre kíváncsi leszek...
(#) Bell válasza sonajkniz hozzászólására (») Nov 25, 2017 /
 
Bocs, a címek nélkül valóban nehezen követhető.

  1. Line      Address       Opcode      Label         DisAssy    
  2.     1        0000          EF84                    GOTO 0x908  ; ugrás a belépési pontra                    
  3.  
  4. Beállítások:
  5.    OSCFRQ = 0b0000011;  // 8MHz
  6.     OSCENbits.HFOEN=0;
  7.     TRISA = 0x00;
  8.     ANSELA=0x00;
  9.     LATA = 0x0F;
  10.  
  11.     1 025    0800          0E03                    MOVLW 0x3        
  12.     1 026    0802          010E                    MOVLB 0xE        
  13.     1 027    0804          6FDE                    MOVWF 0xDE, BANKED
  14.     1 028    0806          9DDC                    BCF 0xDC, 6, BANKED
  15.     1 029    0808          0E00                    MOVLW 0x0        
  16.     1 030    080A          6E88                    MOVWF TRISA, ACCESS
  17.     1 031    080C          0E00                    MOVLW 0x0        
  18.     1 032    080E          010F                    MOVLB 0xF        
  19.     1 033    0810          6F11                    MOVWF 0x11, BANKED
  20.     1 034    0812          0E0F                    MOVLW 0xF        
  21.     1 035    0814          6E83                    MOVWF LATA, ACCESS
  22.     1 036    0816          0E0B                    MOVLW 0xB        
  23.     1 037    0818          6E05                    MOVWF 0x5, ACCESS
  24.  
  25. Időzítés 1 másodperc
  26.     1 038    081A          0E26                    MOVLW 0x26        
  27.     1 039    081C          6E04                    MOVWF 0x4, ACCESS
  28.     1 040    081E          0E5E                    MOVLW 0x5E        
  29.     1 041    0820          2EE8                    DECFSZ WREG, F, ACCESS
  30.     1 042    0822          D7FE                    BRA 0x820        
  31.     1 043    0824          2E04                    DECFSZ 0x4, F, ACCESS
  32.     1 044    0826          D7FC                    BRA 0x820        
  33.     1 045    0828          2E05                    DECFSZ 0x5, F, ACCESS
  34.     1 046    082A          D7FA                    BRA 0x820
  35.  
  36. 1,2,3 regiszterek feltöltése a tába olvasáshoz        
  37.     1 047    082C          0E00                    MOVLW 0x0        
  38.     1 048    082E          6E01                    MOVWF 0x1, ACCESS
  39.     1 049    0830          0E09                    MOVLW 0x9        
  40.     1 050    0832          6E02                    MOVWF 0x2, ACCESS
  41.     1 051    0834          0E00                    MOVLW 0x0        
  42.     1 052    0836          6E03                    MOVWF 0x3, ACCESS
  43.  
  44. Tábla regiszterek feltöltése az 1,2,3 címekről
  45.     1 053    0838          C001                    MOVFF 0x1, TBLPTR
  46.     1 054    083A          FFF6                    NOP              
  47.     1 055    083C          C002                    MOVFF 0x2, TBLPTRH
  48.     1 056    083E          FFF7                    NOP              
  49.     1 057    0840          C003                    MOVFF 0x3, TBLPTRU
  50.     1 058    0842          FFF8                    NOP  
  51. Tábla olvasás:            
  52.     1 059    0844          0008                    TBLRD*
  53. Eredményt LATA regiszterbe          
  54.     1 060    0846          CFF5                    MOVFF TABLAT, LATA
  55.     1 061    0848          FF83                    NOP  
  56. Loop            
  57.     1 062    084A          D7FF                    BRA 0x84A        
  58.            
  59.  
  60.          
  61.     1 153    0900          0005                    PUSH    ;da 5          
  62.     1 154    0902          0007                    DAW      ;  7      
  63.     1 155    0904          0003                    SLEEP    ;   3      
  64.     1 156    0906          0009                    TBLRD*+  ;    9    
  65.     1 157    0908          6A03                    CLRF 0x3, ACCESS  ; törlés
  66.     1 158    090A          6A02                    CLRF 0x2, ACCESS   ; törlés
  67.     1 159    090C          6A01                    CLRF 0x1, ACCESS   ; törlés
  68.     1 160    090E          0E00                    MOVLW 0x0      ; literal  
  69.     1 161    0910          6EF8                    MOVWF TBLPTRU, ACCESS ; regiszterbe
  70.     1 162    0912          0100                    MOVLB 0x0        
  71.     1 163    0914          EF00                    GOTO 0x800
(#) Bell válasza Pali79 hozzászólására (») Nov 25, 2017 /
 
Mire vagy kíváncsi, talán segíthetek.
(#) sonajkniz válasza Bell hozzászólására (») Nov 25, 2017 /
 
Ez változatlanul nem világos. Sőt! Most még kevésbé értem.
Mik ezek a bankváltások?
Miért org 0x800-nál kezdődik a program?
Mihez kell a táblázat kezelő.
Ha már táblázat, hol az adat?
Nem írnád le, mit is csinál ez a program voltaképpen?
(#) Pali79 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Tudsz programot írni assembly nyelven?
(#) Bell válasza sonajkniz hozzászólására (») Nov 25, 2017 /
 
A bankváltás banksel-el történik. A banked egy konstans.
  1. MOVWF Move W to f
  2. Syntax: MOVWF f {,a}
  3. If ‘a’ is ‘0’, the Access Bank is selected.
  4. If ‘a’ is ‘1’, the BSR is used to select the GPR bank.

A p18f25k40.inc tartalma érthetővé teszi:
  1. ;
  2. ...
  3. ==========================================================================
  4. ;       18xxxx Family        EQUates
  5. ;==========================================================================
  6. FSR0             EQU  0
  7. FSR1             EQU  1
  8. FSR2             EQU  2
  9.  
  10. FAST             EQU  1
  11.  
  12. W                EQU  0
  13. A                EQU  0
  14. ACCESS           EQU  0
  15. BANKED           EQU  1
  16. ;==========================================================================
  17. ...
(#) Bell válasza Pali79 hozzászólására (») Nov 25, 2017 /
 
Előfordult már. Jó pár éve jobban benne voltam.
(#) Pali79 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Hallgass sonajkniz-re! Írd le mit is vársz ettől a programtól! Nem tűnik valami nagyon bonyolultnak mégis napok óta egy helyben állsz vele ha jól látom.
(#) f2f2 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Az asm ben hol van az hogy hivatkozol a 0x900 cím tartalmára ?

Azt hittem ilyet látok értékadásnak :
MOVLB 0x9 állítani a bankot ( passz hogy mennyit írj be 0x900 eléréséhez )
momentán nem tudom hogy 0x900 vagy 0x00 lenne a MOVWF után
MOVLW 0x5
MOVWF 0x900,1

MOVLW 0x7
MOVWF 0x901,1

MOVLW 0x3
MOVWF 0x902,1

MOVLW 0x9
MOVWF 0x903,1


és char pointer nek átadás 0x900
(#) sonajkniz válasza Bell hozzászólására (») Nov 25, 2017 /
 
Ugyan még nem váltottam bankot PIC18-nál, legfeljebb az alapbankon kívüli regiszterteket állítottam be MOVFF-el
De PIC12-nél a MOVLB 0xakármi bankváltó utasítás.
(#) f2f2 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Egyébként ez a 18F25K40 amennyire kell használnod nagyon eltér a 18F46K22 26K22
programozásától ?
E kettőt amit írtam tudja C ből a te programodat lefordítani úgy hogy az adott globális értékek benne legyenek ?

Ha igen Mi lenne ha arra fordítanád le és ezután lenne csak az átírva ami nem oda esik
Esetleg ha tudom mik azok küldök programot, ami átkonvertál 25K40
pld Config ok stb LATA ha máshova esik és a többi

Ha ezekkel se fordítja jól nem szóltam semmit
(#) Pali79 válasza sonajkniz hozzászólására (») Nov 25, 2017 /
 
Itt is az. A C fordító teszi a programba...
(#) ktamas66 válasza Bell hozzászólására (») Nov 25, 2017 /
 
Szerintem jól működik, letárolsz egy 0-át a 900-as címre, és ezt kiolvasod. Mitől világítana a led?
(#) ktamas66 válasza f2f2 hozzászólására (») Nov 25, 2017 /
 
A konstans miatt a 900-as cím a program memóriába kerül, itt nem lehet MOV parancsokkal írni/olvasni, azt a TBLPTR, TABLAT regiszterekkel történik.
(#) sonajkniz válasza Pali79 hozzászólására (») Nov 25, 2017 /
 
Ja ezt a C fordító szülte?
Sűrűn vannak ilyen ötletei? A táblázat címének szánt változót először ramba teszi, majd MOVFF-el rakja a helyére? Remek. Így lesz 2 órajel ciklusból 6, 2 sorból 4. Így nem csoda, hogy komolyabb programoknál kifogy a programmemória és kevés az órajel.
(#) Pali79 válasza sonajkniz hozzászólására (») Nov 26, 2017 /
 
Persze! Ide rakta fel. Itt látszik, hogy a 16 soros C-ből a fordító gyártott egy 119 soros assembly-t.
(#) benjami válasza Bell hozzászólására (») Nov 26, 2017 /
 
Nem értem mi a bajod ezzel, első ránézésre azt fordítja ebből amit kell. A ROM területről csak a tblrd utasítással tudsz adatot kinyerni. Amúgy ha pl. bootloader miatt az a célod, hogy 0x800-tól kezdődjön a programod, azt nem így kell megoldani, hanem a project beállításoknál: XC8-linker - additional options kategória - CodeOffset-be 0x800-at adj meg.
Következő: »»   996 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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