Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Pulslaenge Messung 10-20usec, Assembler Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Joe - 18.04.2010 22:10)
Joe nutzt:  CC1-M-Unit V1.1, CC1-Station V2.0, Micro, Open-Micro
Hallo OMICRO Experten,

folgendes unten angeführte Programm
11943IMA.BAS
wollte ich mittels OCBAS.EXE compilieren.

Ich nutze die DOSIDE mit der neuesten Version 1.07 von OCBAS.EXE, sowie die neueste Include OM.DEF Version vom 14.04.2010
Ich habe schon alles mögliche versucht, bringe aber das Programm mit OCBAS.EXE nicht zum laufen.

Jeweils in den Zeilen mit dem Befehl PTA gibt es eine Fehlermeldung

!  brset #iport,PTA,warte1  'hier Fehlermeldung Zeile 37: Interne Variable 'PTA' nicht nutzbar. Eventuell fehlt Option
!  brclr #iport,PTA,warte2  'hier Fehlermeldung Zeile 41: Interne Variable 'PTA' nicht nutzbar. Eventuell fehlt Option

In der Include Datei OM.DEF wird ja am Anfang für die OMICRO die Portzuweisung gemacht u. weiter hinten das Port  A Data Register zugewiesen.

define pta0 port [1]       ' serielle Eindraht-Schnittstelle
define pta1 port [2]
define pta2 port [3]       ' durch Hardware als Eingabe-Pin festgelegt
define pta3 port [4]
define pta4 port [5]       ' gelbe LED
define pta5 port [6]       ' Piezo-Beeper

define PTA      ivar [129+&h00] ' Port A Data Register

Leider steige ich noch nicht in allen Details des Betriebssystems durch, um zu verstehen, welche Option mir fehlt.
Fehlt mir ev. eine Firmwareroutine? Welchen Fehler mache ich noch? Welche Option fehlt bei mir? Vielleicht kann mir jemand weiterhelfen!

Vielen Dank im voraus

Joe Fenk

#############
' abgeleitet von Eintrag 11943  Forum ccintern.dharlos.de
' Messung Impulse von 10 usec bis 20 usec
' bei gedrehter Phasenlage nur brclr und bset vertauschen
' Programmvorschlag von Dietmar Harlos
' --------------------------------------------------------------------------
' Kurze Impulse mit der Open-Micro, Open-Mini und Open-Midi messen
' erstellt in OCBASIC 1.05 von Dietmar Harlos am 2. Advent 2006
' --------------------------------------------------------------------------

INCLUDE "om.def"          'Definitionen fuer Open-Micro und Open-Mini

 DEFINE iport bPTA3       'PTA3 entspricht PORT[4]; von JF bPTA3 in PTA geaendert

 DEFINE zaehler WORD       'Speicher fuer Rueckgabe per Variable
 DEFINE zaehler_l BYTE[1] OF zaehler  'fuer Zugriff im BASIC, denn die
 DEFINE zaehler_h BYTE[2] OF zaehler  '  Open-Micro kann kein WORD

 
 WHILE TRUE
   PRINT
   PRINT impuls            'Aufruf und Rueckgabe des 8-Bit-Werts
   PRINT zaehler_h
   PRINT zaehler_l         'alternativ Rueckgabe per Variable
   PAUSE 10
 WEND

 END

 FUNCTION impuls INLASM

! clrh                    '16 Bit Zaehler
! clrx

! sti                     'Interrupts deaktivieren

 #warte1                   'solange warten, bis der Port auf LOW geht
!   brset #iport,PTA,warte1  'hier Zeile 37: Interne Variable 'PTA' nicht nutzbar. Eventuell fehlt Option

 #warte2
!  aix #1                  'Zaehler erhoehen (inkrementieren), bis
!  brclr #iport,PTA,warte2 'hier Zeile 41: Interne Variable 'PTA' nicht nutzbar. Eventuell fehlt Option

!   cli                     'Interrupts wieder aktivieren

!   sthx zaehler            'Zaehlerwert in einer Variable abspeichern.
                           'Das ist eine Moeglichkeit, den Wert des
                           'Zaehlers an das BASIC-Hauptprogramm
                           'zurueckzuliefern.

                           'Alternativ kann man wie im folgenden
                           'gezeigt, einen 8-Bit-Wert per Rechenstack
                           'an das BASIC-Programm zurueckliefern. In
                           'diesem Fall wird die Funktion mittels
                           '"PRINT impuls" oder "variable=impuls" auf-
                           'gerufen und deren Wert zurueckgeliefert.

! txa                     'nur die unteren 8 Bit des Zaehlers verwenden
! clrx                    'und per Firmwareroutine FwPush auf den
! swi                     '  Rechenstack pushen

                         'Das SWI wirkt beim Aufruf von Firmware-
                           'routinen wie ein RTS. Ohne SWI ist also
                           'noch ein RTS erforderlich!

END FUNCTION

 Antwort schreiben

Bisherige Antworten:

Re: Pulslaenge Messung 10-20usec, Assembler (von Dietmar - 19.04.2010 21:59)
    Re: Pulslaenge Messung 10-20usec, Assembler (von Joe - 20.04.2010 20:10)