Newbee och 16f877a, lite starthjälp behövs.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Som newbee är det lättare att lära sig om hela programmet skrivs ut så att man ser hur allt hänger ihop.

:wink:
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Aj aj, vad ni hackar på mig! :(
xenonfire:
Då jag inte skriver särskilt mycket assembler för PIC så tyckte jag inte att det var någon bra idé att "ur huvudet" skriva ett program som jag dessutom inte kunde verifiera med någon hårdvara... Istället försökte jag förklara en "alternativ approach" där man inte använder avbrott, men har man full koll på vad ett avbrott är och hur det funkar så är ju Sodjans kod helt klart elegantast!
(Av egen erfarenhet så hade jag lite svårt med sånna där "magiska" avbrott aldeles i början av "karriären" inom el/data)

sodjan:
>>Och när du vill visa ett enklare program, så är det en stympad
pseudo-kodsnutt där en massa saknas !

Ehh.. jaa, det var därför jag skrev "ser ut ungfär såhär (pseudo)".

Mitt program var komplett med allt som behövs för att assemblera OK...
Jaha, okey...so?! Det har jag väl aldrig sagt något emot, eller? Jag tycker att det var jättebra, men vad jag ville få fram var att det går att skriva ett blinka-led-program UTAN avbrottsrutinen. Och för att göra det så använder man sig av en evig loop som består av tänd LED, pausa, släck LED, pausa.. osv. Vad är det som är så svårt med att förstå det?!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag har inte svårt att förstå :-)
Jag håller bara inte med dig, vilket inte är samma sak... :-)
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Vad är det som du inte håller med om då? Att det finns ett alternativt sätt att skriva ett blinka-led-program eller?! :?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Att det finns ett enklare sätt att skriva ett Blink-a-LED program i assembler.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

...och _jag_ håller inte med _dig_... och förmodligen så har också xenonfire sin uppfattning i frågan...
(Subjektivt...)
Du (sodjan) har hela tiden varit inte på "mindre kod" och jag har syftat på kod som är lättare att förstå för en newbee. Och det är ju skilda saker... I början när man lär sig asm så gör det inget att det är lite mer (men ineffektiv) kod. Men målet i långa loppet är ju dock att utföra samma sak på färre antalet instruktioner.
xenonfire: Vad säger du om avbrott, känns det "klart som korvspad" med avbrottsvektor, stack, återhoppsadress osv...? Det är inte menat som något förhör, vill bara visa att det kanske är DIG som jag och Sodjan borde fråga istället för att bara spekulera... :roll:
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Helt sant att ett bra exempel är en lysande start för fortsatta viderutvecklingar och ofta bästa sättet att lära sig själv på. Det är som Sodjan skriver bättre att skriva bra, snygg och tydlig kod istället för att försöka få koden så kort som möjligt.,
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Skrev *jag* det ? I *så* fall var det bra sagt... :-) :-)

Självklart trodde jag inte att allt skulle vara "klart som korvspad" !
Men med hjälp av databladet och en eller ett par följdfrågor löser det dig säkert...

Dessutom, från xenonfires kommentarer har jag fått intryck
av att det inte var något större problem med koden... !?

oJsan> och jag har syftat på kod som är lättare att förstå för en newbee.

Vilket du hittills har misslyckats med att visa.
Fixa ett *komplett* exempel som assemblerar "out-of-the-box" så kan vi
diskutera vidare utfrån det. Annars tycker jag att vi lägger ner detta, det
bidrar inte mycker till att hjälpa xenonfire just nu...
Användarvisningsbild
Xerbee
Inlägg: 179
Blev medlem: 27 april 2004, 17:43:44

Inlägg av Xerbee »

Hittade en wisp628 och några picar i en låda här när jag städade. Efter det blev det ingen mer städning (klarade en låda iallafall) utan det blev att pilla igång en "blink-a-led" från Van oijen. Tog några minuter men sen var den igång och blinkade.

Sen såg jag den här tråden och tänkte att det är ju ungefär vad jag vill göra.
Satte mig ner och funderade lite på några frågor, vad kan man leka vidare med nu? Hur lär jag mig skriva väldigt enkla assembler program i MPLAB och skapa .hex filer från det?

Kollade igenom några mail från sodjan och installerade där efter MPLAB.

Det jag nu skulle vilja är att lära mig koppla in säg 5-10 lysdioder och blinka dom i olika ordning, så jag fattar att "Den här koden gör det" och man ser framför sig vilken lysdiod som blinkar.

(Är det någon större skillnad i den koden sodjan skrev för 16F877A och en 16F648A som jag sitter med?)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Hur lär jag mig skriva väldigt enkla assembler program i MPLAB och skapa .hex filer från det?

Jag har ett par sidor om grundkonfig av MPLAB.
Lite olika blink-a-led program finns på forumet, och de kan nog
utgöra "mall" för vidare utveckling.

> (Är det någon större skillnad i den koden sodjan skrev för 16F877A och en 16F648A som jag sitter med?

Inte något *större* skillnad.
Enklast är att ändra det som är uppenbart och sedan se vad MPASM
säger om det...
Användarvisningsbild
Xerbee
Inlägg: 179
Blev medlem: 27 april 2004, 17:43:44

Inlägg av Xerbee »

>Inte något *större* skillnad.
Enklast är att ändra det som är uppenbart och sedan se vad MPASM
säger om det...

Det jag ser som är uppenbart är

Kod: Markera allt

   list      p=16f648a
   #include <p16f648a.inc>
Output från build

Kod: Markera allt

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F452 "test.asm" /l"test.lst" /e"test.err" /o"test.o" /c-
Warning[215] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 11 : Processor superseded by command line.  Verify processor symbol.
Message[301] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F648A.INC 34 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_DEBUG_OFF)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_WRT_OFF)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_CPD_OFF)
Warning[230] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Error[126]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Argument out of range (not a valid config register address)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 40 : Symbol not previously defined (ADCON1)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 42 : Symbol not previously defined (ADCON1)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 47 : Symbol not previously defined (TRISC)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 48 : Symbol not previously defined (TRISD)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 49 : Symbol not previously defined (TRISE)
Halting build on first failure as requested.
BUILD FAILED: Mon Jul 24 15:55:29 2006
Känns som första koden jag postade är fel då den inte hittar variablerna väl?


Sen ett citat från din sida
Nu skall det hända lite saker. eventuellt (eller snarare sannolikt :-) ) så kommer det en del felmeddeladen och en LST fil skapas. Skulle det inte göra det, så skall det även ha skapats (bl.a, men dessa är de viktigaste) en MAP och en HEX fil i projektkatalogen.
Jag får ingen LST fil i min projektmapp? Trots att det som ovan står att den failade. Konstigt eller bara jag som gjort fel?


EDIT: test.asm är en kopia på din kod från förra sidan fast list och #include är ändrade som första koden i mitt inlägg.
tgr
Inlägg: 726
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Inlägg av tgr »

Har du valt rätt pic under Configure -> Select Device?
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Det ser ut som att du har valt fel PIC om man kikar i outputen från assemblatorn... "/p18F452"
Användarvisningsbild
Icecap
Inlägg: 26685
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Just det, vilken PIC vill du använda?

MPASM-projektet har PIC18F452 men i programkällan anger du PIC16F648A....

Och innan du frågar: "Configure"->"Select device..."
Användarvisningsbild
Xerbee
Inlägg: 179
Blev medlem: 27 april 2004, 17:43:44

Inlägg av Xerbee »

Oj! Det stämmer, hade inte ändrat där alls.

Kod: Markera allt

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F648A "test.asm" /l"test.lst" /e"test.err" /o"test.o" /c-
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_DEBUG_OFF)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_WRT_OFF)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 14 : Symbol not previously defined (_CPD_OFF)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 40 : Symbol not previously defined (ADCON1)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 42 : Symbol not previously defined (ADCON1)
Message[302] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 45 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 46 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 47 : Symbol not previously defined (TRISC)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 48 : Symbol not previously defined (TRISD)
Error[113]   G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 49 : Symbol not previously defined (TRISE)
Message[302] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 57 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[305] G:\DOCUMENTS AND SETTINGS\JACOB\DESKTOP\TEST.ASM 73 : Using default destination of 1 (file).
Halting build on first failure as requested.
BUILD FAILED: Mon Jul 24 16:15:06 2006
Får jag nu så något hände men att den inte hittar variablerna har nog med #include att göra skulle jag tro?

EDIT: Sådär, nu bör det vara rätt device.
Skriv svar