Vom PIC16F84 zum PIC18F14K22

Begonnen von picass, 07.03.2021, 13:19:55 CET

Vorheriges Thema - Nächstes Thema

picass

Ab der nächsten Woche werde ich beginnen, das mehr als 15 Jahre alte Prog der Rollladensteuerung in meinem Haus - geschrieben für den PIC16F84 - zu versuchen, umzuschreiben auf den PIC18F14K22.
Es gibt Gründe, dies so zu versuchen.
Jetzt bin ich auf der Suche nach einer Übersicht, welche Änderungen da vorzunehmen sind. Irgendwann hatte ich da mal was gelesen, habe aber keine Erinnerung mehr, wo. Vielleicht war es eine Gegenüberstellung bei den OpCodes oder irgendwas bei dem Assembler.
Falls jemand mir einen Wink gegen könnte, in welcher Richtung da zu suchen oder ggf. sogar zu finden wäre, dann könnte das sehr hilfreich sein.
Grüße, picass

picass

Buddel den Fred mal aus, weil er nun mal passt!
Vom Assembler des PIC16F84 zu demjenigen für den PIC18F14K22 - hier dem aus der MPLAB X IDE, dem MPASMX v5.87 - gibts einige wenige Unterschiede. Dunnemals wurden in einem Prog als Erstes die Constanten mit ihrer Speicherplatz-Zuweisung aufgeführt. Danach kamen die Variablen dran - siehe Beispiel.
Bei ersten Debbuging-Versuchen wurde die Aufführung der Constanten nicht angemeckert. Einfach so lassen?
Grüße, picas
constante.txt

Ottmar

Hallo picass,
habe Dir mal 2 Dateien angehängt. Einmal "Relocatable" code und "absoluter" Code. So mache ich das standardmäßig.
Die Variablen legst du beim 18F14K22 bei absoluem code ab h060 ab (vgl. Beispiel. Dann sparst Du Dir das langweilige  "var1 equ 0x060 .......

CBLOCK 0x60.
  var1
  usw...
ENDC

Bei relocatable sorgt der Linker dafür dass die Variablen an die richtige Adresse gespeichert werden, ausgenommen Du gibst definitiv eine Adresse vor.

LOC_VAR        UDATA
  cntLine    RES 1
  tmpAddr    RES 1
  cntAscii    RES 1

Leider hat der 18F14K22 nur einen PORTC,7:0
PORTA und PortB haben nicht die vollen 7 Bits zur Verfügung.

Ok, vielleicht hilft es Dir weiter!
Gruß Ottmar

Ottmar

Sorry picass
Habs fast vergessen!
porta    equ 0x05
portb    equ 0x06
intcon  equ 0x0b
trisa    equ 0x85
trisb equ 0x86
das sind keine Variablen welchen Du einen Speicherplatz zuweisen darfst!
Sie sind alle in der p18F14K22.INC Definitions bereits belegt!.
Siehe dort z.B.
;----- Register Files -----------------------------------------------------
IOCB            EQU  H'0F7A'
ANSEL            EQU  H'0F7E'
ANSELH          EQU  H'0F7F'
PORTA            EQU  H'0F80'
PORTB            EQU  H'0F81'
PORTC            EQU  H'0F82'

Ottmar

picass

#4
Zitat von: Ottmar in 04.06.2023, 17:54:38 CESTOk, vielleicht hilft es Dir weiter!
Ach, Ottmar, das weiß ich noch nicht so recht, ob mir die nur zwei Beispiel-Texte und die paar Zeilen der Erläuterung weiter helfen könnten. Da muss ich noch mal streng drüber nachdenken! :-\

>:D
Danke dir sehr, das hilft dem Opa in den Sattel! Der Volker hatte dunnemals sich auch schon mal über Relocables und Ähnliches geäußert. Das lag aber für meine Erinnerung recht weit weg....
Die Umarbeitung der drei Programme wird 'ne rechte Herausforderung für mich. Bin schon bangiglich gespannt, was denn die drei PICs dazu sagen werden, wenn die neu gestalteten drei Platinen mal fertig bestückt und mit den umgemodelten Progs gefüllt sein werden. Schwitz!
Grüße, picass

Ottmar

Hi picass,
wo liegen die Schwierigkeiten? Solltest Du  konkrete Fragen haben, versuche ich gerne Dir weiterzuhelfen.
P.S. apropos "Opa", mal ganz unter uns: ich bin schon eine lange Zeit im "Schwabenalter". Es heißt ja bei uns: der Schwabe wird erst mit 60 gescheit, die anderen .....
Gruß Ottmar

picass

#6
Die Schwierigkeiten? Die Erstellung der gesamt 5 Platinen-Typen und der 3 unterschiedlichen Programme für den PIC16F84 hat dunnemals eineinhalb Jahre beansprucht. Jedes der 3 Programme besteht aus bis zu 15 Seiten Text mit gut 700 Prog-Zeilen Assembler. Is klar, ich hoffe, mit der Neuauflage von 3 Platinentypen und dem Durchforsten und dem Einbringen notwendiger Änderungen der 3 Prog-Typen heuer weniger, also deutlich weniger Aufwand betreiben zu müssen. Aber wenn da was lange unbenutzt lag, z.B. die Simultan-Anlagen oder die über verschiedene Ordner verstreuten Programm-Sammlungen, dann fällt mir das Wiedereinarbeiten nicht gerade leicht. Die schiere Masse macht das Prob. Zudem hatte ich dunnemals die Progs unnötig verkompliziert. Da kann ich leider nicht einfach Funktionen unter den Teppich kehren, denn – wie beschrieben – an die in den Rolllädenkästen verbauten ,,Roll-Pics" gelangt man nur nach Staub- und Dreck-Orgien. Was das bedeutet, wenn jedwede Änderung ,,abwärts-kompatibel" bleiben muss, konnte man als Verbraucher an der Zuverlässigkeit, rsp. der Bedienbarkeit diverser früherer Windows-Versionen sehen.... an Ähnliches bei Treibern wollen wir lieber nicht denken, das deprimiert sonst.

Zum Thema: diejenigen Konstanten, welche als Beispiel ,,PortA" oder ,,TrisA" zu denjenigen des Assembler-Progs gehören, müssen heute sicher nicht extra deklariert werden, dunnemals war das nötig. In welcher Form würde man denn selbst-erstellte Konstante vorweg deklarieren?

Willkommen im Klub, Ottmar! Nicht alle, aber doch eine Mehrheit der Mitglieder bewegt sich altersmäßig in der von dir umschriebenen Liga. Macht sich mitunter auch bemerkbar. So äußerte ein User vor einiger Zeit, dass er sich in seinem Alter Programmier-Orgien nicht mehr leisten wollte und ggf. ganz darauf verzichten würde. Hoffentlich bin ich noch weit davon entfernt...

Der Nachklang zu deinem landsmannschaftlichen Statement erinnert mich an einen Spruch einer meiner Latein-Pauker. Diesen brachte er manchmal – wenn er mal wieder einen faulen Schüler bei einer Wissenslücke ertappt hatte - in einer Mischung von Fatalismus, Sarkasmus und auch noch Humor mit leisem Tonfall vor, Zitat: ,,Manche lernen es nie!  Und andere noch später....!"Zitatende
Grüße, picass

Schnellantwort

Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.

Name:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau