Macro i PIC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Johan.o
EF Sponsor
Inlägg: 2388
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Macro i PIC?

Inlägg av Johan.o »

Hej,

Jag får inte ett macro jag vill använda att fungera i min PIC12F675.
Är det någon som vet hur jag ska göra?

som exempel kan vi ta ett väldigt enkelt macro:

Kod: Markera allt

TEST macro
		nop
		nop
		nop
		endm  

ska jag inte då bara behöva skriva TEST i min kod för att utföra dessa tre nop?
mitt macro har jag lagt i början av mitt program bland mina subrutiner.. Är det det som är felet?
Vart ska macrot läggas i programmet? jag provkör i MPLAB simulator, men där hoppar den bara förbi när den kommer till TEST i min kod.

Tacksam för hjälp!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Macro i PIC?

Inlägg av sodjan »

> ...att fungera i min PIC12F675

Ingen PIC vet vad ett "macro" är.
Ett macro är en finess i MPASM.
Ett macro "körs" aldrig av processorn.

> Vart ska macrot läggas i programmet?

RTFM, speciellt kapitlet om macron.

> men där hoppar den bara förbi

Ett macro ingår inte i själva programmet, det är
en definition som ligger innan din kod.

Ett macro är igen subrutin.
Johan.o
EF Sponsor
Inlägg: 2388
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Re: Macro i PIC?

Inlägg av Johan.o »

Ja, MPLAB ersätter bara min hänvisning till ett macro med den kod mitt macro innehåller, så längt är jag med.

Jag har läst TFM, och den säger före macrot används.

Jag la in 'movlw 0x10' i mitt macro, och tydligen körs faktiskt koden i mitt macro, men tyvärr så kör den koden direkt utan att jag kan stega igenom den i MPLAB simulator.
Surt, så mitt nuvarande problem blir att det blir svårt att avlusa ett macro, hittade ett macro för multiplikation på PICLIST. Som i sig använder sig av ett hjälpmacro.
Det blir svårt att titta närmare på om något går fel.

Tack för hjälpen till självhjälp, av någon anledning löser man alltid problemet själv om man bara ser till att posta en dum fråga här :roll:
Användarvisningsbild
Icecap
Inlägg: 26658
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Macro i PIC?

Inlägg av Icecap »

SIM kan uppfatta ett macro som "en instruktion" men man kan faktisk stega igenom ändå!

Kompilera projektet, stäng ner det och importera HEX-filen som du sedan kan stega igenom, dock alldeles utan kommentarer eller liknande.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Macro i PIC?

Inlägg av sodjan »

Din fråga gällde inte debugging/singelstep av macron i sig.
Det lät mer som att du inte riktigt hade klämm på vad ett macro är,
inte ovanligt, många tror att ett macro är något som processorn
förstår.

Hur som helst. Jag får vid en snabb test inte heller stegning genom
macron/macrot. Tänker inte gräva djupare i det, jag har svårt att
se det som ett större problem igentligen.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Macro i PIC?

Inlägg av vfr »

Jag har också stött på det. Jag har tolkat det så som Icecap beskriver.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Macro i PIC?

Inlägg av sodjan »

I det exempel som jag hade så hamnade MPSIM i början på en
subrutin som anropas från macrot. D.v.s att instruktionerna
som ligger drekt i macrot stegas inte, man eventuella CALL
från macrot följs.

Sen så är det väl normalt så att ett macro är debuggat och
"säkert" så det ska inte behöva inte stegas igenom igentligen.
Johan.o
EF Sponsor
Inlägg: 2388
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Re: Macro i PIC?

Inlägg av Johan.o »

Sodjan: Det har du rätt i. Koden fungerar bra så jag nöjer mig med att inte förstå hur den fungerar.
Jag känner att problemet är löst. Jag får tacka för alla svar! :)
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Macro i PIC?

Inlägg av bos »

Stega i programkoden istället för källkoden så går det bra. View -> Program memory, ha det fönstret aktivt och stega med F7/F8 som vanligt och makrot exekveras rad för rad.
Skriv svar