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 

 Strom sparen auf der Open-Maxi Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 30.07.2017 23:08)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
Hallo zusammen,

bekanntlich lĂ€ĂŸt sich die Open-Maxi mit Hilfe von SLOWMODE ON sehr elegant in den Stromsparmodus versetzen. Der Mikrocontroller arbeitet dann mit einem Takt von 1.25 MHz und benötigt in diesem Modus laut meinen Messungen nur 4.3 mA Strom. Das ist erheblich weniger als bei 20 MHz Takt, der mit 12.6 mA zu Buche schlĂ€gt. Mit dem PAUSE-Befehl (der intern als Assemblerbefehl WAIT realisiert ist) kann die Stromaufnahme noch auf 8.2 mA gesenkt werden. Mittels "SCI2BDH=0 : SCI2BDL=8" kann im SLOWMODE die Serielle Schnittstelle auf 9600 Baud eingestellt werden.

Um GrĂ¶ĂŸenordnungen besser ist allerdings der STOP-Modus. In diesem Modus benötigt der Controller nur wenige Hundert ”A Strom. Die Open-Maxi unterstĂŒtzt den sogenannten STOP3-Modus. Hier sind alle internen Schaltungen fĂŒr schnelle Wiederherstellung konfiguriert. Die ZustĂ€nde aller internen Register und Logik, RAM-Inhalte und die I/O-Pin-ZustĂ€nde werden beibehalten. STOP3 kann durch BetĂ€tigen von RESET oder durch einen Interrupt aus einer der folgenden Quellen verlassen werden: Der Real-Time-Interrupt (RTI), LVD, ADC, IRQ oder der KBI.

Im folgenden Demoprogramm wird der Real-Time-Interrupt verwendet. Eine Assembler-Interruptroutine befindet sich im Real-Time-Interrupt und wird alle 8 ms aufgerufen. Getaktet wird diese Verzögerung mit Hilfe eines internen, nicht sehr genau arbeitenden 1-kHz-Oszillators. Sobald der Interrupt angefordert wird, verlĂ€ĂŸt der Controller den STOP-Modus. Wer das Demoprogramm startet, wird sich vielleicht wundern: Es scheint nĂ€mlich nichts zu machen. Denn wenn die Open-Maxi noch andere Befehle außer STOP ausfĂŒhrt, wird das Ergebnis der Strommessung erheblich verfĂ€lscht. Der Anwender muß also darauf achten, daß sich der Controller möglichst lange im STOP-Modus aufhĂ€lt, ansonsten bringt dieses Stromsparkonzept nichts.

' ----------------------------------------------------------------------------
' Strom sparen mit Hilfe des STOP-Modus. Es wird der STOP3-Modus verwendet.
' In OCBASIC 1.11a fĂŒr Open-Maxi von Dietmar Harlos am 30. Juli 2017.
' ----------------------------------------------------------------------------

' Der Controller benötigt wÀhrend des STOP-Modus nur wenige Hundert ”A Strom.
' Siehe auch AW60-Controllermanual MC9S08AW60.pdf im Kapitel "3.6 Stop Modes".

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

DIM iRTIb BYTE             'Demo: RTI-Interrupts zĂ€hlen

' --- Unsere eigene Assembler-Interruptroutine ------------------------------

' Die folgende Assembler-Interruptroutine befindet sich im Real-Time-
' Interrupt und wird alle 8 ms aufgerufen. Getaktet wird diese Verzögerung
' mit Hilfe eines internen 1-kHz-Oszillators.

' Die folgenden Subroutinen sollten sinnvollerweise in einer INCLUDE-Datei
' untergebracht werden.

' Das SchlĂŒsselwort INLASM kennzeichnet die folgende PROCEDURE als
' Assemblerroutine (IAR). Dadurch, und daß sie unmittelbar am Anfang
' des Programms steht, wird sie zu einer IIAR, also zu einer Assembler-
' Interruptroutine, die bei einem aktivierten User-Interrupt gestartet wird.

PROCEDURE iiar_rti INLASM

! cbeqa #iRTI,isiRTI       'Falls kein Aufruf durch RTI-Interrupt,
! jmp iiar_rti_ende+2      'dann zur nĂ€chsten IIAR in der Kette.

#isiRTI
'! bset bRTIACK,SRTISC      'SRTISC liegt außerhalb der Zeropage
! lda SRTISC
! ora #%01000000           'Real-Time Interrupt Acknowledge (RTIACK)
! sta SRTISC
! inc iRTIb                'ZĂ€hler inkrementieren
! clc
! rts

END PROC

#iiar_rti_ende             'hier hinter folgt die nĂ€chste IIAR
                           '(sofern vorhanden)

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

#main

UIRRti=ON                  'Userroutine fĂŒr Real-Time Interrupt aktivieren
POKE SRTISC,&b00010001     'Real-Time Interrupt aktivieren, 8 ms Delay

WHILE TRUE
  asmstop                  'maximal 8 ms lang dauert der STOP-Modus.
'  PAUSE 1
'  PRINT iRTIb              'wenn diese Befehle zusĂ€tzlich aktiviert werden,
'  PAUSE 1                  'zieht der Controller fast normal Strom.
WEND

End2Host=ON
END

' --- Subroutinen -----------------------------------------------------------

PROC asmstop INLASM
! stop
! rts
END PROC

Viel Spaß und Erfolg mit den OM-Mikrocontrollern!

Dietmar

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

 Antwort schreiben

Bisherige Antworten: