- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: ORG Anweisung - RN-Wissen-Artikel

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2017
    Beiträge
    5
    Anzeige

    Praxistest und DIY Projekte
    Ich nehme an, du meinst folgenden Beginn des Codes in dieser Art?

    (Ich habe die Start- und die Main-Funktion jetzt direkt nach die CONFIGs, EQUs und #designs in meinen Quellcode platziert)

    Code:
            org	00h
    	goto 	start
    
    ;************************************************************************* 
    ; # START - PIN Configuration, TIMER Confuguration, OSZILLATOR Calibration, AD-CONVERTER definieren
    ;		
           start   org	05h
    Das, womit ich arbeite, ist nur eine einzelne ASM-Datei mit noch 6 weiteren Dateien. Ich habe mal einen Screenshot angehängt.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Unbenannt.JPG
Hits:	7
Größe:	13,8 KB
ID:	32343

    Und in der Simulation läuft's ja jetzt auch einwandfrei.. keine Ahnung, was da fehlen könnte..

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Ich vermute, dass im Debugging-Mode ein Interrupt benötigt wird. Der für das debuggen erforderliche zusätzliche Code wird von der IDE automatisch erzeugt und eingefügt. Das obige Konstrukt stellt jedenfalls sicher, dass das Hauptprogramm Platz für einen Interruptvektor in 04h frei hält.
    Bei den PIC16 meine ich gelesen zu haben, dass für das debuggen auf dem PIC der erste Befehl, also in 00h, ein NOP sein muss.

  3. #13
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    53
    Beiträge
    540
    Blog-Einträge
    17
    Zitat Zitat von RoboHolIC Beitrag anzeigen
    Ich vermute, dass im Debugging-Mode ein Interrupt benötigt wird. Der für das debuggen erforderliche zusätzliche Code wird von der IDE automatisch erzeugt und eingefügt. Das obige Konstrukt stellt jedenfalls sicher, dass das Hauptprogramm Platz für einen Interruptvektor in 04h frei hält.
    Ich glaube auch, dass hier so etwas im Gange war. Mit den OTP Chips war das Debuggen kniffelig, man konnte nur leere Zellen (0x3fff) mit Code beschreiben und bereits verwenden EPROM nur noch NOP (0) überschreiben. Auf der Katalogseite des PIC12C672 gibts dazu die Doku In-Circuit Serial Programming? (ICSP™) Guide.

    Ich glaube nicht, dass der Programmierer die wichtigsten Vektoren des Chips aus Jux frei gelassen hat. Vielleicht hat er während der Entwicklung, je nach dem was auf dem Chip schon drauf war, manuell die Debug/Produktionsversionen des Code in freie Bereiche gebrannt und die alten Sprünge im Programm-EPROM mit NOP überschrieben. Davon sieht man in der Originalversion der ASM heute natürlich nichts mehr.

    Mein Vorschlag wäre, das Projekt z.B. auf den von Microchip vorgeschlagenen Nachfolger PIC12F683 zu portieren. Mit Flash-Speicher hat man den OTP Hickhack nicht mehr.
    Geändert von witkatz (13.01.2017 um 20:53 Uhr)

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    41
    Beiträge
    1.013
    Ich würde mir das auch angewöhnen, in dem beispiel fange ichab 0x00 an wegen einem vorgeschalteten Bootloder, die ersten pahr Adressen haben noch weitere Funktionen z.b. beim debuggen brauchst du zwei NOP direkt in den ersten Adressen, oder bei einigen Bootlodern müssen da Statusregister gelöscht werden dafür sind die Reserviert, die ISR Adresszeilen sind im Linker fest definiert, auch wieviele dafür genutzt werden können

    PIC18F

    org 0x000000 ; Starte Programm
    nop
    nop
    goto init
    org 0x000008 ; Interuptvector High
    goto int
    org 0x000018 ; Interuptvector Low

    goto int
    org 0x000028 ; Erste Routine auf Adresse 0x028
    PIC16F

    org 0x000000 ; Programanfang
    nop ; NOP für Debugger
    nop
    goto go ; Springe zur Inialisirung
    org 0x000004 ; Erste Rotine (go) auf Adresse 0x00005
    Geändert von theborg (14.01.2017 um 22:30 Uhr)
    Legastheniker on Bord !

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. RN-Wissen Artikel zum Wild Thumper Roboter und dessen Controller WTR-CK1
    Von Dirk im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 27
    Letzter Beitrag: 05.07.2017, 18:44
  2. Arduino Nano (mit Bootlader) per USB aus BASCOM brennen /RN-Wissen-Artikel
    Von jguethe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 28.02.2017, 17:33
  3. If-Anweisung
    Von 1udo1 im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 20.01.2009, 13:17
  4. CCRP5-Artikel auf RN-Wissen
    Von pischke im Forum Robby CCRP5
    Antworten: 3
    Letzter Beitrag: 09.01.2007, 11:36
  5. [ERLEDIGT] Problem mit der anweisung LCD var
    Von AVRJIS im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 25.02.2005, 07:05

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad