Lägga till statistik i befintlig kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
lgrfbs
Inlägg: 7313
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Lägga till statistik i befintlig kod

Inlägg av lgrfbs »

Då original programmet är skrivet för PIC16F628 men kan även köras på PIC16F628A och eftersom PIC16F648A ligger med i samma PDF dokument som PIC16F628A.

Kod: Markera allt

           :Program  :    Data Memory    :     :       :     :           :        :             :
           : Memory  :                   :     :       :     :           :Timers  : Voltage     :
           :---------:-------------------: I/O : CCP   :USART:Comparators:8/16-bit: Range       :
           : Flash   : SRAM    : EEPROM  :     : (PWM) :     :           :        :             :
           : (words) : (bytes) : (bytes) :     :       :     :           :        :             :
  ---------:---------:---------:---------:-----:-------:-----:-----------:--------:-------------:
PIC16F628  :    2048 :     224 :     128 :  16 :     1 :   Y :         2 :    2/1 : 2.0V - 5.5V :<-Orginal 
PICF628A   :    2048 :     224 :     128 :  16 :     1 :   Y :         2 :    2/1 : 2.0V - 5.5V :<-Kör på nu.
PIC16F648A :    4096 :     256 :     256 :  16 :     1 :   Y :         2 :    2/1 : 2.0V - 5.5V :<-Tilltänkt uppg.
Infromationen till tabellen ovan, kommer från:
Datablad PIC16F62X http://ww1.microchip.com/downloads/en/D ... 40044G.pdf
Datablad PIC16F627A/628A/648A http://ww1.microchip.com/downloads/en/D ... 40300C.pdf

Har kollat igenom stycket "INSTRUCTION SET" för PIC16F628A och PIC16F648A och inte hittat några undantag.
Då borde original programmet även gå att köra fint även på 16F648A och ha mer minne tillgängligt.
Är mitt antagande rätt?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Lägga till statistik i befintlig kod

Inlägg av sodjan »

Ja, enda skillnaden är minnesstorleken.

Notera dock att 628/628A har allt programminne i en 2 Kword "page"
medan 648A sitt 4K minne uppdelat på 2 "pages". D.v.s att CALL,
GOTO o.s.v som sker mellan dessa två pages måste inkludera
justering av PCLATH innan, annars går det hela fel.

Antingen gör en en generell (t.ex ett macro) för att alltid hantera
PCLATH vid alla CALL/GOTO, eller så ser man över koden och
strukturerar det mellan minnessidorna och justerar PCLATH då
det behövs. Notera att MPLINK alltid lägger en "section" på samma
sida, så alla CALL/GOTO inom samma "section" kommer alltid att
ske på rätt sätt. Sen kan man lägga till hantering av PCLATH för
anrop mellan olika sections. RETURN är aldrig något problem eftersom
stacken håller den fulla returadressen, däremot får man se upp så
att man återställer PCLATH om RETURN sker till en annan page,
annars kommer det första CALL/GOTO efter RETURN att gå fel...
Användarvisningsbild
lgrfbs
Inlägg: 7313
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Lägga till statistik i befintlig kod

Inlägg av lgrfbs »

Ni som tittat på programkoden, är det möjligt med den som grund att byta från 16F628 till 16F648A ?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Lägga till statistik i befintlig kod

Inlägg av vfr »

Absolut! Om koden är skriven för 628:an och inte utnyttjar några av dom utökade minnesareorna i 648:an, så går koden som vanligt även på 648:an. När du sedan vill utnyttja dom utökade mineesareorna, så är det bara att lägga nya funktioner där. Det viktiga är bara att hålla rätt på minnesbankerna vid anropen till funktionerna i den nya banken. Och kanske då ta ett helhetstag i det där med banker, precis som Sodjan säger.
Skriv svar