Сейчас изучаю модуль mssp, хочу сделать обмен по I2C c внешней памятью. Скачал архив AN734 (http://www.microchip.com), переделал линкер под 16F876a(закомментированые строчки от предыдущего файла)
Код
// File: 16f876a.lkr
// Linker Script file, modified
// Date: 06/07/2000
// Modified 7/18/2000 -.RLF
LIBPATH .
CODEPAGE NAME=vectors START=0x0000 END=0x0004 PROTECTED
CODEPAGE NAME=page0 START=0x0005 END=0x07FF
CODEPAGE NAME=page1 START=0x0800 END=0x0FFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1FFF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x21FF PROTECTED
//CODEPAGE NAME=vectors START=0x0 END=0x70 PROTECTED
//CODEPAGE NAME=page0 START=0x71 END=0x7FF
//CODEPAGE NAME=page1 START=0x800 END=0xFFF PROTECTED
//CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
//CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
//Special Function Registers in Banks 0-3
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
//General Purpose RAM in Banks 0-3
DATABANK NAME=gpr0 START=0x20 END=0x6F
DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF
//General Purpose RAM - available in all banks
SHAREBANK NAME=gprnobnk START=0x70 END=0x7F
SHAREBANK NAME=gprnobnk START=0xF0 END=0xFF
SHAREBANK NAME=gprnobnk START=0x170 END=0x17F
SHAREBANK NAME=gprnobnk START=0x1F0 END=0x1FF
//DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
//DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
//DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
//DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
//DATABANK NAME=gpr0 START=0x20 END=0x7F
//DATABANK NAME=gpr1 START=0xA0 END=0xFF
SECTION NAME=STARTUP ROM=vectors // Reset and interrupt vectors
SECTION NAME=PROG1 ROM=page0 // ROM code space - page0
SECTION NAME=PROG2 ROM=page1 // ROM code space - page1
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=CONFIG ROM=.config // Configuration bits location
// Linker Script file, modified
// Date: 06/07/2000
// Modified 7/18/2000 -.RLF
LIBPATH .
CODEPAGE NAME=vectors START=0x0000 END=0x0004 PROTECTED
CODEPAGE NAME=page0 START=0x0005 END=0x07FF
CODEPAGE NAME=page1 START=0x0800 END=0x0FFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1FFF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x21FF PROTECTED
//CODEPAGE NAME=vectors START=0x0 END=0x70 PROTECTED
//CODEPAGE NAME=page0 START=0x71 END=0x7FF
//CODEPAGE NAME=page1 START=0x800 END=0xFFF PROTECTED
//CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
//CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
//Special Function Registers in Banks 0-3
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
//General Purpose RAM in Banks 0-3
DATABANK NAME=gpr0 START=0x20 END=0x6F
DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF
//General Purpose RAM - available in all banks
SHAREBANK NAME=gprnobnk START=0x70 END=0x7F
SHAREBANK NAME=gprnobnk START=0xF0 END=0xFF
SHAREBANK NAME=gprnobnk START=0x170 END=0x17F
SHAREBANK NAME=gprnobnk START=0x1F0 END=0x1FF
//DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
//DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
//DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
//DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
//DATABANK NAME=gpr0 START=0x20 END=0x7F
//DATABANK NAME=gpr1 START=0xA0 END=0xFF
SECTION NAME=STARTUP ROM=vectors // Reset and interrupt vectors
SECTION NAME=PROG1 ROM=page0 // ROM code space - page0
SECTION NAME=PROG2 ROM=page1 // ROM code space - page1
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=CONFIG ROM=.config // Configuration bits location
и пытаюсь запустить, но МПЛАБ пишет ошибку:
MPLINK 4.11, Linker
Copyright © 2007 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x000001a4
Errors : 1
Как я понимаю, чтото с вектором прерывания. В чем ошибка? Что надо подправить?
Может вообще надо както делать обмен по другому?