Kod till denna koppling? (nybörjarfråga)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En gång till, använd code-taggarna så indenteringen inte tappas bort !!!

"1" = antal allokerade bytes. 2 eller större och man kunna kalla det
för en "array" där symbolen pekar till första adressen.

Bygger/länkar detta "rent" utan fel ?
(Jag hoppas verkligen du inte chansar och postar *otestad* kod !?)
Rocky_AL
Inlägg: 617
Blev medlem: 7 december 2006, 15:14:50
Ort: Stockholm

Inlägg av Rocky_AL »

Får detta när jag bygger:
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x00000012
Errors : 1

BUILD FAILED: Thu Apr 12 15:49:58 2007
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du har fel device i LIST directivet.

Sen, POSTA MED CODE TAGGARNA !!!!
Vad är det som är så svårt med det ???

Som koden ser ut *här* i forumet kommer den inte att fungera.
Instruktioner får inte stå i position 1 på raderna...

MPLINK felet får vi ta när det framgår hur din kod ser ut.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Testa om detta fungerar, för det gör det hos mig :) har rättat en del och kommenterat ut en del.

Vet inte varför inte XORWF INTE fungerar hos mig, simulatorn visar OK men inte PICen :?

OBS att detta kör på intern oscillator!

Kod: Markera allt

	list	p=16F628a
	#include	<p16F628a.inc>
	__CONFIG	_CP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
;	ERRORLEVEL -302

;UDATA 
COUNT1 EQU 2Ah 
COUNT2 EQU 2Bh
;****Sätter portar**** 

;CODE
	BANKSEL TRISA
	MOVLW 00h ;Gör port A till output 
	MOVWF TRISA 
	BANKSEL PORTA 
	MOVLW 02h 
;****kör en xor för att byta status på lysdioden**** 

Start 
;	XORWF PORTA,1 ; XORWF fungerar inte tillfredsställande på PORTA:-(
	BSF PORTA,1 ;Sätt BIT1 i PORTA
	CALL Delay 
	BCF PORTA,1	;Rensa BIT1 i PORTA

;****kör en delay och går till Start**** 
;PAGESEL Delay 
	CALL Delay 

	GOTO Start 

;****Subrutin för delay**** 

Delay 

Loop1
	DECFSZ COUNT1,1 
	GOTO Loop1 
	DECFSZ COUNT2,1 
	GOTO Loop1 

	RETURN

END
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Men du har ju gjort om koden till den gamla "absolute mode" stilen !!??
Varför då ? Inte så bra...

> Vet inte varför inte XORWF INTE fungerar hos mig,.....

CMCON...

EDIT : Notera att koden som den var postad "i princip" fungerade
OK hos *mig* utan det fel som visades. Därför är det fortfarande
intressant att se original koden med code-taggarna!
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Men åhh det missade jag... "sammanfogade" två exempel med hans variabelnamn då ändrade jag mina variabelnamn till hans därav detta.

Hittade nåt gammalt på datorn som nu skall förpassas till historien....

Den fallgropen IGEN. Jaja någon gång ska jag väl lära mig också. Nåja koden fungerar iaf men snyggt var det inte.
Rocky_AL
Inlägg: 617
Blev medlem: 7 december 2006, 15:14:50
Ort: Stockholm

Inlägg av Rocky_AL »

Ok , som jag sade i inlägget så fungerade det inte med fetstil och code-taggar tillsammans. Jag ville visa vad som var ändrat bara...
Här är en exakt kopia av mig kod (som fortfarande inte fungerar).

Kod: Markera allt

	list      p=16F628A           ; list directive to define processor
	#include <p16F628A.inc>       ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file


	__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT 

;****Variablar**** 

;UDATA 
COUNT1 RES 1 
COUNT2 RES 1 
;****Sätter portar**** 

;CODE 
BANKSEL TRISA 
movlw 00h ;Gör port A till output 
movwf TRISA 
BANKSEL PORTA 
movlw 02h 

;****kör en xor för att byta status på lysdioden**** 

Start
xorwf PORTA,1 

;****kör en delay och går till Start**** 

PAGESEL Delay 
call Delay 
goto Start 

;****Subrutin för delay**** 

Delay 

Loop1 decfsz COUNT1,1 
goto Loop1 
decfsz COUNT2,1 
goto Loop1 

return 

end
Får detta fel när jag bygger:
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\f628Atmpo.o".
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\f628Atmpo.ERR".
Clean: Deleted file "f628Atmpo.lst".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "f628Atmpo.asm" /l"f628Atmpo.lst" /e"f628Atmpo.err" /o"f628Atmpo.o"
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "blink.asm" /l"blink.lst" /e"blink.err" /o"blink.o"
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 12 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 13 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Found directive in column 1. (BANKSEL)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 18 : Found opcode in column 1. (movlw)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 18 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 19 : Found opcode in column 1. (movwf)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 19 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Found directive in column 1. (BANKSEL)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 21 : Found opcode in column 1. (movlw)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 21 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 26 : Found opcode in column 1. (xorwf)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 26 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 30 : Found directive in column 1. (PAGESEL)
Message[312] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 30 : Page or Bank selection not needed for this device. No code generated.
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 31 : Found opcode in column 1. (call)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 31 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 32 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 32 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 38 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 39 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 39 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 40 : Found opcode in column 1. (decfsz)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 40 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 41 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 41 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 43 : Found opcode in column 1. (return)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 43 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 45 : Found directive in column 1. (end)
Halting build on first failure as requested.
BUILD FAILED: Thu Apr 12 19:19:10 2007
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Inlägg av TomasL »

Jo, som nämndes för ett eller två inlägg sedan, första kollumnen (tecknet) på varje rad skall vara ett mellanslag.
Rocky_AL
Inlägg: 617
Blev medlem: 7 december 2006, 15:14:50
Ort: Stockholm

Inlägg av Rocky_AL »

Ok nu har jag lagt till mellanslag innan alla komandon och koden ser ut så här:

Kod: Markera allt

	list      p=16F628A           ; list directive to define processor
	#include <p16F628A.inc>       ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file


	__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT 

 ;****Variablar**** 

 UDATA 
 COUNT1 RES 1 
 COUNT2 RES 1 
 ;****Sätter portar**** 

 CODE 
 BANKSEL TRISA 
 movlw 00h ;Gör port A till output 
 movwf TRISA 
 BANKSEL PORTA 
 movlw 02h 

 ;****kör en xor för att byta status på lysdioden**** 

 Start
 xorwf PORTA,1 

 ;****kör en delay och går till Start**** 

 PAGESEL Delay 
 call Delay 
 goto Start 

 ;****Subrutin för delay**** 

 Delay 

 Loop1 decfsz COUNT1,1 
 goto Loop1 
 decfsz COUNT2,1 
 goto Loop1 

 return 

 end
Nu får jag följande meddelande:
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.o".
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.ERR".
Clean: Deleted file "blink.lst".
Clean: Deleted file "Test.cof".
Clean: Deleted file "Test.cod".
Clean: Deleted file "Test.hex".
Clean: Deleted file "Test.lst".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "blink.asm" /l"blink.lst" /e"blink.err" /o"blink.o"
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\ADMIN\Desktop\picprog\16f628a.lkr" "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.o" /o"Test.cof" /M"Test.map"
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0

MP2COD 4.06, COFF to COD File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0

MP2HEX 4.06, COFF to HEX File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0

Loaded C:\Documents and Settings\ADMIN\Desktop\picprog\Test.cof.
BUILD SUCCEEDED: Thu Apr 12 19:54:23 2007
Ser detta ok ut?

Edit: Men när jag kör simulatorn får jag detta fel:
CORE-E0002: Stack under flow error occurred from instruction at 0x000005
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Inlägg av TomasL »

BUILD SUCCEEDED: Thu Apr 12 19:54:23 2007
sorry, admin, jag var tvungen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> som jag sade i inlägget så fungerade det inte med fetstil och code-taggar tillsammans.

I couldn't care less...

POSTA KOD MED CODE-TAGGARNA!

Så ge f-n i och tyck en massa om hur just *du* ska posta kod,
gör som du blir ombedd. Jag har tre gånger bett dig att posta
koden med code-taggarna och du skiter fullständigt i det ett antal gånger.
När du till slut gör som du blir tillsagd så är ju felet helt uppenbart (vilket
var förväntat...).

Ursäkta tonen, men det börjar bli lite tjatigt...

TomasL > Jo, som nämndes för ett eller två inlägg sedan, första kollumnen (tecknet)
TomasL > på varje rad skall vara ett mellanslag.

FEL, tyvärr...

Du syftar till det *jag* skrev, och det var :

> Instruktioner får inte stå i position 1 på raderna...

Notera, *INSTRUKTIONER* får inte stå i position 1!
(I detta fall jämställs "direktiv" med "instruktioner", vilket ju var tydligt
av de felmeddelanden som postades lite senare i tråden).

Nu har Rocky_AL efter det bra tipset även dragit in *LABELS*, vilket
(högst sannolikt) ger de nya felen.

Så du får "stack underflow" p.g.a av att du inte har dina labels
"Start" och "Delay" i position 1. Själva assembleringen och länkningen
går dock OK, det är körningen som går galet, koden kommer att
komma till RETURN utan tidigare CALL (därav "stack underflow").

De rader som ska stå i pos 1 är följande fyra st :

COUNT1 RES 1
COUNT2 RES 1
Start
Delay

(I detta samanhang jämställs symboler med labels, det är ju
igentligen ingen skillnad, de representerar båda en adress, antingen
i RAM eller i Flash...)

En annan sak...
*Första* gången du postade felmeddelanden så var det de som kom från
MPLINK. Men det var väl inte alla meddelanden i "Output" fönstret !?
Fick du inte även alla de "Found directive/opcode in column 1."
meddelanden som du postade senare ? Funderade du inte *då* på vad
de kunde betyda?

Jo en sak till innan jag glömmer det, har jag nämnt code-taggarna ? :-)
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Inlägg av TomasL »

Sodjan, tack för rättelsen :oops:
Rocky_AL
Inlägg: 617
Blev medlem: 7 december 2006, 15:14:50
Ort: Stockholm

Inlägg av Rocky_AL »

Första gången jag fick error så fick jag faktiskt inget om kolumn 1.
Däremot så har jag nu dragit in:
COUNT1 RES 1
COUNT2 RES 1
Start
Delay

Detta problem kvarstår (simulatorn alltså):
CORE-E0002: Stack under flow error occurred from instruction at 0x000005
Får jag bara detta ok så är jag redo att köpa lite riktiga saker och labba. :D
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Rocky_AL:PAGESEL behövs inte på denna processor står det som information när man bygger.

För att få igång debuggern kan du skriva in detta efter variabeldeklarationerna:

Kod: Markera allt

RST	CODE     0x0
   goto     Init
Istället för "Init" kan du skriva vad du vill men labeln bör stå precis innan du börjar med din initiering. För dig skulle det motsvara före satsen "BANKSEL TRISA" (Där skriver du alltså "Init" eller vilket namn du nu önskar i FÖRSTA kolumnen)

"CORE-E0002: Stack under flow error occurred from instruction at 0x000005"Slipper du med ovanstående, det är några skumma instruktioner som sätts på position 1-5 som gör att det blir fel. Kolla på "Program Memory" under "View" så syns det. Förstår inte riktigt var dessa kommer ifrån och just nu är det sängdags.

Troligen kan du få problem med COUNTx variablerna om du inte lägger in en BANKSEL före dem, detta beror dock på var i minnet kompilatorn väljer att lägga dem.

Offt:
Sodjan:Kan du förklara vad som är så "fiffigt" med CODE taggen?

Vet hur den defineras men ej riktigt hur den FUNGERAR. Har en gissning men är icke säker.
Har såklart läst manualen:
Syntax
[label] code [ROM_address]
Description
This directive declares the beginning of a section of program code. If label is not specified, the section is named .code. The starting address is initialized to the specified address or will be assigned at link time if no address is specified.
Är det så att den kan lägga koden "där den passar" i minnet eller vad?

För övrigt visade det sig att XORWF VISST fungerar särskilt om man tar rätt hex-fil till PICen :wall:

edit:La till lite och upptäckte att min INTOSC nu verkligen snurrar sakta så nu är det verkligen dags att sova.
TERdON
EF Sponsor
Inlägg: 295
Blev medlem: 15 november 2006, 04:38:29
Ort: Solna/Laholm
Kontakt:

Inlägg av TERdON »

"Sodjan: Kan du förklara vad som är så "fiffigt" med CODE taggen? "

EDIT: För att göra det övertydligt efter att jag läste inlägget igen: code-taggen i PHPBB, dvs forummjukvaran SLUT EDIT

Nu är jag inte sodjan, men jag kan förklara fördelarna med den i alla fall.

I många programmeringsspråk har det betydelse inte bara vilken texten är, utan även hur blanktecknen (radslut, mellanslag, tabbar) fördelas. Ett språk där dessa INTE är likvärdiga är exempelvis assembler. Precis som märkts ovan...

Code-taggen fungerar precis som HTML-taggen <pre>, dvs den skriver ut VARENDA tecken som angetts innanför. Det är INTE standardfallet för HTML mfl formateringsspråk (pröva gärna att skriva ett inlägg med väldigt många extra mellanslag mellan vissa ord). Dessutom använder code-taggen ett teckensnitt med fast teckenbredd, så att det går att följa kod som formaterats i kolumner (väldigt vanligt i assembler). Att följa en "snirklande" kolumn som man får med teckensnitt med varierande bredd är grymt irriterande och jobbigt. Mer edit: Dessutom döljs många fel när det fattas blanktecken (som synes ovan)
Skriv svar