Fórum témák

» Több friss téma
Fórum » PIC16F84 megszakításvektor címzésének problémája
Lapozás: OK   1 / 2
(#) andrewboy999 hozzászólása Ápr 16, 2008 /
 
Üdv mindenkinek!

Éppen programozni tanulok mikrovezérlő áramkörökön. Azt olvastam, hogy a megszakításvektor mindig a 4-es címen kezdődik. De az összes példaprogramomat beírva folyton hibát jelez ott. Mindig más címet akar oda, nagyobbat, mint 4. Ezt nem értem miért csinálja. MPLAB-al dolgozom, v8.00-ás verzió. Olyan, mintha beleszámolná a deklarációs részt is a 0-ik címtől, szóval, ha nagyobb a deklarálás, akor annál nagyobb címet ajánl fel a fordító, de ha azt beírom, akkor hiba nélkül lefordul. Valamit nem állítottam talán be?
Bemásolom, hogy hiba esetén mit ír ki:
Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\programozas\PIC\PROJECTEK\16F84ATMPO.o".
Clean: Deleted file "D:\programozas\PIC\PROJECTEK\16F84ATMPO.lst".
Clean: Deleted file "D:\programozas\PIC\PROJECTEK\Projectem.cof".
Clean Warning: File "D:\programozas\PIC\PROJECTEK\Projectem.cod" doesn't exist.
Clean: Deleted file "D:\programozas\PIC\PROJECTEK\Projectem.hex".
Clean Warning: File "D:\programozas\PIC\PROJECTEK\Projectem.lst" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84A "16F84ATMPO.ASM" /l"16F84ATMPO.lst" /e"16F84ATMPO.err" /o"16F84ATMPO.o"
Message[302] D:\PROGRAMOZAS\PIC\PROJECTEK\16F84ATMPO.ASM 39 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] D:\PROGRAMOZAS\PIC\PROJECTEK\16F84ATMPO.ASM 41 : Register in operand not in bank 0. Ensure that bank bits are correct.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "D:\programozas\PIC\PROJECTEK\16f84a.lkr" "D:\programozas\PIC\PROJECTEK\16F84ATMPO.o" /o"Projectem.cof" /M"Projectem.map" /W
MPLINK 4.14, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000004, length=0x00000090
Errors : 1

Link step failed.
BUILD FAILED: Wed Apr 16 18:09:27 2008

Minden segítséget előre köszönök!!!
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
hali

ha felraknád a progit is akor lehet könnyeb lenne válaszolni vagyis a hibát megtalálni
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Már dobom is:


list p=16F84A ; list directive to define processor
#include "p16F84A.inc" ; processor specific variable definitions

__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
CBLOCK 0x0C
T1
T2
ENDC

ORG 0x00000090 ;EZT FOGADJA EL
;ORG 0x04 v. ORG 4-et viszont nem veszi be
START BSF STATUS,RP0 ;BANK1
MOVLW B'00011111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0 ;BANK0

VISSZA: MOVLW B'10000000'
MOVWF PORTB
CALL DELAY
MOVLW B'01000000'
MOVWF PORTB
CALL DELAY
MOVLW B'00100000'
MOVWF PORTB
CALL DELAY
MOVLW B'00010000'
MOVWF PORTB
CALL DELAY
MOVLW B'00001000'
MOVWF PORTB
CALL DELAY
MOVLW B'00000100'
MOVWF PORTB
CALL DELAY
MOVLW B'00000010'
MOVWF PORTB
CALL DELAY
MOVLW B'00000001'
MOVWF PORTB
CALL DELAY
MOVLW B'00000001'
MOVWF PORTB
CALL DELAY
MOVLW B'00000010'
MOVWF PORTB
CALL DELAY
MOVLW B'00000100'
MOVWF PORTB
CALL DELAY
MOVLW B'00001000'
MOVWF PORTB
CALL DELAY
MOVLW B'00010000'
MOVWF PORTB
CALL DELAY
MOVLW B'00100000'
MOVWF PORTB
CALL DELAY
MOVLW B'01000000'
MOVWF PORTB
CALL DELAY
MOVLW B'10000000'
MOVWF PORTB
CALL DELAY

GOTO VISSZA
DELAY: MOVLW d'50'
MOVWF T1
DEL: MOVLW d'50'
MOVWF T2
DEL1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ T2,f
GOTO DEL1
DECFSZ T1,f
GOTO DEL
RETURN
END


Na most ebben nincs megszakításvektor, de a 0-ik címet el akarja tolni. :S
(#) gtk válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
Szia !

Tipp:
Azt is meg kellene nezni hogy mekkora cimtartomany all rendelkezesre 4h-tol kezdodoen, ahova irhatsz.
Ez nem csak 4h-ra ervenyes hanem a "main" cimkere is, a 00h -ra.

Milyen hosszu rutint raktal oda?
Az adott cimrol csak hivast csinalj a rutinra, ne oda ird a rutinod.
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
LIST P=16F84
#INCLUDE "P16F84.INC"


ORG 0
GOTO INIT

ORG 4
GOTO INTERRUPT

ilyen formába probáld meg beirni
neked az include után nincs megadva az include fájl
Elöször csak nynit cáltoztass rajt hogy beirod a #INCLUDE "P16F84.INC" ha 16f84-et használsz.
na proba éa ha nem megy irj
(#) tibiiii00 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
ja bocs ezt elnéztem
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Nem nézted el, először nem jelent meg, mert szögletes zárójelek között volt, ezért átírtam idézőjelek közé. PIC16F84A-t használok.
(#) potyo válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
Nem tehetsz nagyobb cím után kisebbet. Csináld így:
  1. ORG 0x0000
  2. GOTO START
  3. ORG 0x0004
  4. ; ide jön a megszakítási rutin
  5.  
  6. START
  7. ;ide meg a főprogram
(#) andrewboy999 válasza potyo hozzászólására (») Ápr 16, 2008 /
 
list p=16F84A ; list directive to define processor
#include ; processor specific variable definitions

__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
CBLOCK 0x0C
T1
T2
ENDC

ORG 0x0000
GOTO START
ORG 0X0004
START BSF STATUS,RP0 ;BANK1
MOVLW B'00011111'
MOVWF TRISA

Erre ezt a hibát dobja:
MPLINK 4.14, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000090
Errors : 1
(#) gtk hozzászólása Ápr 16, 2008 /
 
Nos en is a fentieket probaltam elmagyarazni
(#) andrewboy999 válasza gtk hozzászólására (») Ápr 16, 2008 /
 
Ha minden igaz, akkor 04h-tól 3FFh-ig írhatok.
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
az ORG 0x0004 után valami ugrást rakj be

mert igy nem sok értelme van

amugy minek megszakitás a futofényes progiba?

(#) gtk válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
En nem igy tudom.
Potyo leirta. az org 04 ala rakjad a goto megszakitas_rutin hivast.
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Ah, ez igaz, véletlenül rossz példát szúrtam be nektek, ennél a példánál a 0-ik cím nem tetszik, de ha van megszakítás, akkor a megszakítás címét akarja eltolni.
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
ezt probáld meg
igy lesz jó

jóó.asm
    
(#) andrewboy999 válasza gtk hozzászólására (») Ápr 16, 2008 /
 
Beírtam az org 4 alá egy goto start-ot, de erre ezt kaptam:

MPLINK 4.14, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000092
Errors : 1

Szal még 2-vel akarja eltolni! :S
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
másold már be akkor az igazai progit amiben megszakitást akarsz csinálni
mert ez igy őrület

Az MPLAB ban minden jó be van állitva?
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Huh, nekem mondod?
Itt egy egyszerű megszakításos feladat:

LIST P=16F84
#INCLUDE "P16F84.INC"
__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF

ORG 0
GOTO START

ORG 4
BCF INTCON,T0IF
MOVLW b'00010000'
XORWF PORTB,F
RETFIE

START BSF STATUS,RP0 ;BANK1
MOVLW B'00011111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'10000111'
MOVWF OPTION_REG
BCF STATUS,RP0 ;BANK0
CLRF PORTB
BSF INTCON,GIE
BSF INTCON,T0IE


VISSZA BTFSS PORTA,0 ; Bekapcs teszt
BSF PORTB,0
BTFSS PORTA,1
BSF PORTB,1

BTFSC PORTA,0 ; Kikapcs teszt
BCF PORTB,0
BTFSC PORTA,1
BCF PORTB,1

GOTO VISSZA
END

Erre is hibát jelez:

Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000030
Errors : 1
(#) andrewboy999 válasza (») Ápr 16, 2008 /
 
Az előbb azért másoltam be csak a hibaüzenetet, mert egy az egyben bemásoltam a te példaprogramodat, azt meg minek írjam le mégegyszer? Ez a Te példaprogramod volt elejétől a végéig, amit feltöltöttél, az az asm fájl.
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
figyu nekem ez tökéletesen hiba nélkül lefut
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
szóval akkor az mplab beállitásaivel lehet a baj
(#) tibiiii00 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Configure--Select Device

ott be van állitva a 16f84A ??
(#) andrewboy999 válasza (») Ápr 16, 2008 /
 
Igen, PIC16F84A. Pedig nagyon nem nyomogattam.

Ezeknek bizony pontosan hiba nélkül kell lefutniuk, de nálam valahogy mégsem.
(#) tibiiii00 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
Csináljuk már meg már engem is aggaszt

szal az elérési ut is hiba szokot lenni

nem lehet hosszak mit 64 karakter asszem
de most nem ez a baj sztem
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Hát hallod, átírtam a 4-et 5-re és jól lefordult! Na erre varrjatok gombot!
Nem a linker bajos?

// Sample linker command file for 16F84A
// $Id: 16f84a.lkr,v 1.5 2006/02/04 00:06:40 nairnj Exp $

LIBPATH .

CODEPAGE NAME=vectors START=0x0 END=0x4 PROTECTED
CODEPAGE NAME=page START=0x5 END=0x3FF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x213F PROTECTED

DATABANK NAME=sfr0 START=0x0 END=0xB PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x8B PROTECTED

DATABANK NAME=gprs START=0xC END=0x4F

SECTION NAME=STARTUP ROM=vectors // Reset and interrupt vectors
SECTION NAME=PROG ROM=page // ROM code space
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=DEEPROM ROM=eedata // Data EEPROM

nem 0x3-nak kell lennie?
(#) tibiiii00 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
ezt csomagold ki a gyökérbe egy mappába és loadold be és futtasd le
ha ez sem megy akkor passz

ora.rar
    
(#) andrewboy999 válasza tibiiii00 hozzászólására (») Ápr 16, 2008 /
 
Na ez lefordult, de tele van figylemeztetéssel:

Clean: Deleting intermediary and output files.
Clean Warning: File "C:\ora\ora.err" doesn't exist.
Clean Warning: File "C:\ora\ora.cod" doesn't exist.
Clean Warning: File "C:\ora\ora.hex" doesn't exist.
Clean Warning: File "C:\ora\ora.lst" doesn't exist.
Clean: Deleted file "D:\qqqqqqqqqqq\ora.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84 "ora.asm" /l"ora.lst" /e"ora.err" /c-
Warning[205] D:\QQQQQQQQQQQ\ORA.ASM 1 : Found directive in column 1. (LIST)
Warning[205] D:\QQQQQQQQQQQ\ORA.ASM 3 : Found directive in column 1. (__CONFIG)
Warning[205] D:\QQQQQQQQQQQ\ORA.ASM 5 : Found directive in column 1. (ORG)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 6 : Found opcode in column 1. (GOTO)
Warning[205] D:\QQQQQQQQQQQ\ORA.ASM 8 : Found directive in column 1. (ORG)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 9 : Found opcode in column 1. (BCF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 10 : Found opcode in column 1. (MOVLW)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 11 : Found opcode in column 1. (XORWF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 12 : Found opcode in column 1. (RETFIE)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 15 : Found opcode in column 1. (MOVLW)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 16 : Found opcode in column 1. (MOVWF)
Message[302] D:\QQQQQQQQQQQ\ORA.ASM 16 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 17 : Found opcode in column 1. (MOVLW)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 18 : Found opcode in column 1. (MOVWF)
Message[302] D:\QQQQQQQQQQQ\ORA.ASM 18 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 19 : Found opcode in column 1. (MOVLW)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 20 : Found opcode in column 1. (MOVWF)
Message[302] D:\QQQQQQQQQQQ\ORA.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 21 : Found opcode in column 1. (BCF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 22 : Found opcode in column 1. (CLRF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 23 : Found opcode in column 1. (BSF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 24 : Found opcode in column 1. (BSF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 28 : Found opcode in column 1. (BSF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 29 : Found opcode in column 1. (BTFSS)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 30 : Found opcode in column 1. (BSF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 32 : Found opcode in column 1. (BTFSC)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 33 : Found opcode in column 1. (BCF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 34 : Found opcode in column 1. (BTFSC)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 35 : Found opcode in column 1. (BCF)
Warning[203] D:\QQQQQQQQQQQ\ORA.ASM 37 : Found opcode in column 1. (GOTO)
Warning[205] D:\QQQQQQQQQQQ\ORA.ASM 38 : Found directive in column 1. (END)
Loaded D:\qqqqqqqqqqq\ora.cod.
BUILD SUCCEEDED: Wed Apr 16 19:34:12 2008
(#) szilva válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
Szerintem azért mond linker hibát, mert úgy van beállítva a projected, hogy több asm file fordítása után kellene neki linkelnie a végső kódot. Ilyenkor nem "org"-okkal kell definiálni a kódterületeket, hanem "code"-okkal a kódot tartalmazó szegmenseket.

Ha viszont egyetlen egyszerű asm-ből akarsz futtathatót, akkor ki kellene kapcsolni a projectben ezt, hogy ne objectekből akarjon linkelni!
(#) andrewboy999 válasza szilva hozzászólására (») Ápr 16, 2008 /
 
Nah, kivettem a linker fájlt és most rendben lefut minden. Huh, ezt a szívást. szilva, pontosan hogy érted ezt a "code" dolgot? Le tudnád írni kicsit bővebben?
(#) andrewboy999 válasza andrewboy999 hozzászólására (») Ápr 16, 2008 /
 
Az baj, ha kitörlöm a linker fájlt?
Következő: »»   1 / 2
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