Problem med "goto" *Problem: Løst!*
Postat: 15 september 2007, 18:22:32
Hallå. Har suttit med det här ett par timmar nu och googlat och letat i datablad men jag kommer inte på något relevant delvis för att jag inte vet vart jag ska börja då jag verkligen inte fattar vad problemet är.
Läs inte detta stycke om du inte vill. Det är inte särskilt relevant.
Bakgrund: Byggde en liten LED-blinkare av lite mer avancerad art kring en PIC16f88 och allt gick mycket bra i utvecklingsarbetet. Efter nån timme hade jag fått ihop något acceptabelt så jag skulle ta med den in i ett mörkt rum för att se hur det såg ut där. Så jag önskar alltså ersätta lab-agget som nu står för strömförsörjningen med nåt mobilare. Givetvis lyckas jag koppla 7805an åt fel håll och det var den PICen det. Hade bara en av den typen så det fick bli en 16f688 istället då. Ska väl inte vara några problem tänkte jag. Jag hade fel.
Relevant info börjar igen:
Problemet består i att programmet verkar få problem när jag använder goto. Jag kan "assembla" programmet med BUILD SUCCEEDED som sissta rad. Får några messages men inga errors eller warnings i outputförnstret.
När jag resetar debuggern så landar den gröna pilen snällt under RESET-vectorn men när den ska ta sig an "goto init" så blir det problem. Den sticker iväg nånstans där det inte går att följa med den gröna pilen, surrar runt där under 0x9d cykler (i takt med att W räknas ner till noll) och kommer sedan tillbaka med ett stack underflow-meddelande i output fönstret. Jag lade dock märke till att den på första "varvet" i neverland räknar ner från 0x36.
Testade att göra några enklare movlw och movwf direkt i efter reset-vektorn och det gick hur bra som helst men när den kom till goto-kommandot så blev det fel. Fattar ingenting och börjar blir ganska trött på att leta efter ett fel som jag inte förstår hur det kan hända.
Tacksam för hjälp.
Jag ska tillägga att jag vet att programmet i sig inte är felfritt, har inte hunnit med hela "relocation"-processen än. Jag har dock svårt att tro att det är pga det som goto inte fungerar. Vore ju i och för sig inte första gången jag har fel
Bifogar diverse texter:
Sourcecode:
---------
Output efter build:
---------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\projekt\letteblinker f688\letteblinker.o".
Clean: Deleted file "C:\projekt\letteblinker f688\letteblinker.lst".
Clean: Deleted file "C:\projekt\letteblinker f688\letterblink.cof".
Clean Warning: File "C:\projekt\letteblinker f688\letterblink.cod" doesn't exist.
Clean: Deleted file "C:\projekt\letteblinker f688\letterblink.hex".
Clean Warning: File "C:\projekt\letteblinker f688\letterblink.lst" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F688 "letteblinker.asm" /l"letteblinker.lst" /e"letteblinker.err" /o"letteblinker.o" /c-
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 27 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 29 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[305] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 182 : Using default destination of 1 (file).
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Program Files\Microchip\MPASM Suite\LKR\16f688i.lkr" "C:\projekt\letteblinker f688\letteblinker.o" /o"letterblink.cof" /M"letterblink.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0
MP2HEX 4.11, COFF to HEX File Converter
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0
Loaded C:\projekt\letteblinker f688\letterblink.cof.
BUILD SUCCEEDED: Sat Sep 15 17:55:53 2007
------
Output vid körning av programet i debuggern
-----
CORE-E0002: Stack under flow error occurred from instruction at 0x000800
CORE-E0002: Stack under flow error occurred from instruction at 0x000800
... och så vidare ett tiotal rader
-----
Tack!
/Tottish
EDIT: Jag tappade visst formateringen när jag klistrade in den. Som ni ser i Output så verkar allt vara korrekt gällande kolumner.
Såg också något nu som jag missat tidigare. Jag får några warnings i output-fönstert. Detta missade jag för jag hade inte fönstret tillräclkligt "maximerat" i MPLAB men det hängde med i kopieringen. Kanske kan vara relevant?
EDIT2: Insåg att det var dumt att posta så mycket kod när inte ens en liten snutt fungerade så jag bytte ut den mot ett mindre exempel som gav samma fel.
Läs inte detta stycke om du inte vill. Det är inte särskilt relevant.
Bakgrund: Byggde en liten LED-blinkare av lite mer avancerad art kring en PIC16f88 och allt gick mycket bra i utvecklingsarbetet. Efter nån timme hade jag fått ihop något acceptabelt så jag skulle ta med den in i ett mörkt rum för att se hur det såg ut där. Så jag önskar alltså ersätta lab-agget som nu står för strömförsörjningen med nåt mobilare. Givetvis lyckas jag koppla 7805an åt fel håll och det var den PICen det. Hade bara en av den typen så det fick bli en 16f688 istället då. Ska väl inte vara några problem tänkte jag. Jag hade fel.
Relevant info börjar igen:
Problemet består i att programmet verkar få problem när jag använder goto. Jag kan "assembla" programmet med BUILD SUCCEEDED som sissta rad. Får några messages men inga errors eller warnings i outputförnstret.
När jag resetar debuggern så landar den gröna pilen snällt under RESET-vectorn men när den ska ta sig an "goto init" så blir det problem. Den sticker iväg nånstans där det inte går att följa med den gröna pilen, surrar runt där under 0x9d cykler (i takt med att W räknas ner till noll) och kommer sedan tillbaka med ett stack underflow-meddelande i output fönstret. Jag lade dock märke till att den på första "varvet" i neverland räknar ner från 0x36.
Testade att göra några enklare movlw och movwf direkt i efter reset-vektorn och det gick hur bra som helst men när den kom till goto-kommandot så blev det fel. Fattar ingenting och börjar blir ganska trött på att leta efter ett fel som jag inte förstår hur det kan hända.
Tacksam för hjälp.
Jag ska tillägga att jag vet att programmet i sig inte är felfritt, har inte hunnit med hela "relocation"-processen än. Jag har dock svårt att tro att det är pga det som goto inte fungerar. Vore ju i och för sig inte första gången jag har fel
Bifogar diverse texter:
Sourcecode:
Kod: Markera allt
list p=16f688
#include <p16f688.inc>
;Program Configuration Register
__CONFIG _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTOSCIO
Variables UDATA_SHR
Spot1 RES 1
Spot2 RES 1
Spot3 RES 1
RESET_VECTOR CODE 0x000
goto init
MAIN CODE
init
banksel ANSEL
clrf ANSEL
banksel TRISC
clrf TRISC ;output
clrf TRISA
banksel PORTA
clrf PORTA
clrf PORTC
endloop
goto endloop
end
Output efter build:
---------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\projekt\letteblinker f688\letteblinker.o".
Clean: Deleted file "C:\projekt\letteblinker f688\letteblinker.lst".
Clean: Deleted file "C:\projekt\letteblinker f688\letterblink.cof".
Clean Warning: File "C:\projekt\letteblinker f688\letterblink.cod" doesn't exist.
Clean: Deleted file "C:\projekt\letteblinker f688\letterblink.hex".
Clean Warning: File "C:\projekt\letteblinker f688\letterblink.lst" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F688 "letteblinker.asm" /l"letteblinker.lst" /e"letteblinker.err" /o"letteblinker.o" /c-
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 27 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 29 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[305] C:\PROJEKT\LETTEBLINKER F688\LETTEBLINKER.ASM 182 : Using default destination of 1 (file).
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Program Files\Microchip\MPASM Suite\LKR\16f688i.lkr" "C:\projekt\letteblinker f688\letteblinker.o" /o"letterblink.cof" /M"letterblink.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0
MP2HEX 4.11, COFF to HEX File Converter
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0
Loaded C:\projekt\letteblinker f688\letterblink.cof.
BUILD SUCCEEDED: Sat Sep 15 17:55:53 2007
------
Output vid körning av programet i debuggern
-----
CORE-E0002: Stack under flow error occurred from instruction at 0x000800
CORE-E0002: Stack under flow error occurred from instruction at 0x000800
... och så vidare ett tiotal rader
-----
Tack!
/Tottish
EDIT: Jag tappade visst formateringen när jag klistrade in den. Som ni ser i Output så verkar allt vara korrekt gällande kolumner.
Såg också något nu som jag missat tidigare. Jag får några warnings i output-fönstert. Detta missade jag för jag hade inte fönstret tillräclkligt "maximerat" i MPLAB men det hängde med i kopieringen. Kanske kan vara relevant?
EDIT2: Insåg att det var dumt att posta så mycket kod när inte ens en liten snutt fungerade så jag bytte ut den mot ett mindre exempel som gav samma fel.