Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


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 

 Demoprogramm: Interne Bandgap-Spannungsreferenz nutzen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 18.12.2018 22:42)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ============================================================================
' Interne Bandgap-Spannungsreferenz auf der Open-Maxi nutzen
' In OCBASIC 1.12a_e1 von Dietmar Harlos am 9. Dezember 2018
' ============================================================================

' Der AW60-Controller, auf dem die Open-Maxi basiert, besitzt eine interne
' Bandgap-Spannungsreferenz. Sie kann genutzt werden, um die Betriebsspannung
' zu überwachen. Der folgende Sourcecode demonstriert, wie auf der Open-Maxi
' die aktuelle Betriebsspannung als Kommazahl auf der Seriellen Schnittstelle
' ausgegeben werden kann. Außerdem wird eine Möglichkeit vorgestellt, mit
' der eine Multiplikation mit der Kommazahl 1.2 durchgeführt wird.

' --- Definitionen für das System --------------------------------------------

INCLUDE "omax.def"         'Definitionen für die Open-Maxi

' --- Definitionen des Anwenders ---------------------------------------------

DIM z BYTE
DIM w1,w2 WORD

DIM Internal_Bandgap AD[36] 'Internal Bandgap (typ. 1.20 Volt +/- 15 mV)
DIM VREFH AD[38]            'UREF=VREFH (per Jumper auf: VDD, Betriebsspannung)

' --- Das Hauptprogramm ------------------------------------------------------

POKE SPMSC1,PEEK(SPMSC1) OR 1 '"Bandgap Buffer Enable"

ADC1CFG=&b01001000         'AD-Wandler auf gerundete 10 Bit

WHILE TRUE
  PRINT
  PRINT "AD[36]=Internal_Bandgap=";Internal_Bandgap
  PRINT "AD[38]=VREFH=";VREFH
  PRINT

  'Die aktuelle Betriebsspannung kann mit folgender Formel ermittelt werden:
  'UB = 1.2 * VREFH / Internal_Bandgap

  'Deshalb wird hier mit 1.2=6/5 multipliziert:
  'UB = (6*VREFH) / (5*Internal_Bandgap)

  w1=6*VREFH
  w2=5*Internal_Bandgap

  'Jetzt die aktuelle Betriebsspannung als Kommazahl ausgeben:

  PRINT "Betriebsspannung: ";w1/w2;".";
  FOR z=1 TO 4
    w1=(w1 MOD w2)*10
    PUT w1/w2+ASC("0")
  NEXT z
  PRINT " Volt (+/- 1.25 %)"

  PAUSE 25
WEND

End2Host=ON                'Nach Programmende in den Host-Modus
END                        'Programmende, Neustart mit der Enter-Taste

' --- Programmende ----------------------------------------------------------


Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: