- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Frage zum Powerdown Modus

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9

    Frage zum Powerdown Modus

    Anzeige

    Powerstation Test
    Hallo Forum,

    ich bastel gerade an dem Quellcode für meine Röhrenuhr.
    Dieser sieht vor, dass der Prozessor sich nach dem abarbeiten des Hauptprogrammes schlafen legt.
    Ich nutze bisher diesen Code:

    Code:
    'Mikrocontroller
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    'Stackgröße festlegen
    $hwstack = 200
    $swstack = 200
    
    'UART konfigurieren
    $baud = 19200
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000                                         'TWI Frequenz
    
    'Interrups konfigurieren
    Config Int0 = Falling
    
    'DCF Modul konfigurieren
    Config Dcf77 = Pind.2 , Timer = 1 , Timer1sec = 1 , Debug = 1
    
    'Unterprogramme
    Declare Sub Uhrzeit
    Declare Sub Read_dcf
    
    'Ports konfigurieren
    Config Portb = Output
    
    Portb = 0
    
    'Variablen
    
    'RTC
    Dim Sekunde As Byte
    Dim Minute As Byte
    Dim Stunde As Byte
    Dim Wochentag As Byte
    Dim Tag As Byte
    Dim Monat As Byte
    Dim Jahr As Integer
    Dim Ds1307w As Byte
    Dim Ds1307r As Byte
    
    'Interrupt
    Dim Interruptflag As Byte
    
    'Adresse der DS1307
    Ds1307w = &HD0                                              'Schreibadresse der RTC
    Ds1307r = &HD1                                              'Leseadresse der RTC
    
    'Interrups aktivieren
    Enable Interrupts
    Enable Int0
    
    On Int0 Read_rtc
    
    
    Do
    
    If Interruptflag = 1 Then
    Uhrzeit
    Portb = Sekunde
    Interruptflag = 0
    End If
    
    Config Powermode = Powerdown
    
    Loop
    End
    
    '------------------------------------------------------------------------------
    
    Sub Uhrzeit
    I2cstart                                                    'TWI Start
    I2cwbyte Ds1307w                                            'Übergabe der Slaveadresse
    I2cwbyte 0                                                  'Registerzähler wird auf null gesetzt
    
    I2cstart                                                    'Zweite Startkondition
    I2cwbyte Ds1307r                                            'Übergabe der Leseadresse
    I2crbyte Sekunde , Ack                                      'Auslesen des Sekundenregisters
    I2crbyte Minute , Ack                                       'Auslesen des Minutenregisters
    I2crbyte Stunde , Ack                                       'Auslesen des Stundenregisters
    I2crbyte Wochentag , Ack
    I2crbyte Tag , Ack                                          'Auslesen des Tagesregisters
    I2crbyte Monat , Ack                                        'Auslesen des Monatsregisters
    I2crbyte Jahr , Nack                                        'Auslesen des Jahresregisters
    I2cstop                                                     'TWI Stoppkondition
    
    
    End Sub
    
    '------------------------------------------------------------------------------
    
    Sub Read_dcf
    
    End Sub
    
    '------------------------------------------------------------------------------
    
    Read_rtc:
    Interruptflag = 1
    Return
    
    '------------------------------------------------------------------------------
    Wenn ich diese Zeile hier verwende:

    Config Powermode = Idle

    dann funktioniert das Programm einwandfrei. Der Controller legt sich schlafen und bei einer fallende Flanke am INT0 wird der Controller geweckt und ließt die RTC aus und gibt die Anzahl der Sekunden auf zwei Röhren wieder.
    Wenn ich nun aber die Zeile auf

    Config Powermode = Powerdown

    umändere passiert gar nichts mehr. Die beiden Röhren zeigen 00 an. Laut Beschreibung in der Bascomhilfe soll ein externer Interrupt an INT0 oder INT1 den Controller wieder wecken. Mit dem Oszi hab ich schon geguckt. Der SQW-Pin von der RTC ändert weiterhin seinen Pegel, aber die Röhren zeigen nichts an.
    Oder löscht dieser Powerdown-Modus auch das Bitmuster an den verschiedenen Ports, sodass an den Ports immer 0x00 steht?
    Als Mikrocontrollerboard nutze ich das RN-Control.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    26.02.2004
    Beiträge
    23
    Hallo,

    im Powerdown (und allen Sleepmodi ausser Idle) funktionieren einige Interrupts nur als Levelinterrupt. Die Steuerung über Flanken geht dann nicht.


    Carsten

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hi,

    danke für die Info. Ich teste es gleich mal.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Zum Aufwachen aus dem Power down Modus geht Int0 nur in der Version die einen Interrupt bei low Level auslöst, nicht die Version mit CONFIG int0 = Falling. Alternativ geht auch int2.

    Die Port Register bleiben im Powerdown Modus erhalten.

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Danke euch beiden. Hab es gerade getestet und Low-Level Interrupt funktioniert.
    Naja gut dann muss ich halt den Idle Mode verwenden, da der Controller sonst ne halbe Sekunde lang die ISR abarbeitet und er das eigentlich nur 1x pro Interrupt machen soll (also quasi bei einer Flankenänderung).
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    ... Als Mikrocontrollerboard nutze ich das RN-Control ...
    Ich vermute jetzt mal, dass Du mit einem mega32 fährst. Vielleicht hilft der folgende Hinweis?

    Zitat Zitat von At mel - doc 2503Q–A V R–02/1, Seite 33, Power-down Mode
    ... Only an ... an External level interrupt on INT0 or INT1, or ... can wake up the MCU...
    Note that if a level triggered interrupt is used ... the changed level must be held for some time to wake up the MCU. Refer to “External Interrupts” on page 66 for details...
    When waking up from Power-down mode, there is a delay ... as described in “Clock Sources” on page 25 ...
    Irgendwie sind Datenblätter doch informativ.

    Und ich spar mir jetzt meinen Standardsatz mit dem letzten Abenteuer unserer Zeit ...
    Ciao sagt der JoeamBerg

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Ja stimmt schon hätte da mal nachgucken sollen ^.^
    Schade eigentlich...hätte eine andere Antwort lieber gehört
    Muss der Controller halt im Idle Mode gesetzt werden statt im Power-Down
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von Kampi Beitrag anzeigen
    ... Muss der Controller halt im Idle Mode gesetzt werden statt im Power-Down ...
    Vielleicht tuts die knappst mögliche Start up time ? Wär ja nen Versuch wert ! ?
    Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 0 ms

    Immerhin ist der controller ja schon "warm" - könnte halt beim Kaltstart Probleme geben. Aber Versuch macht ... genau!
    Ciao sagt der JoeamBerg

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Vielleicht tuts die knappst mögliche Start up time ?
    Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms
    Wär ja nen Versuch wert ! ?
    Ne funktioniert nicht.
    Hab das Fusebit nun auf EXTHIFXTALRES_16KCK + 0ms gesetzt und den Sleepmode auf Power-down aber klappt nicht.
    Was bedeutet es den wenn ich dieses Fusebit setze: EXTHIFXTALRES_1KCK + 0ms?
    Was sagt das 1KCK bzw. 16KCK aus?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von Kampi Beitrag anzeigen
    ... Was bedeutet ... Fusebit ... Was sagt das 1KCK bzw. 16KCK aus?
    Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 0 ms ist ja klar: Externer Quarz/Resonator niedriger Frequenz, Startzeit 1 K CK (K=Kilo/tausend, CK = ClocKs)

    ......Anhang 21769

    Das ist die ganze Tabelle. Die Zeit wird genommen, weil (vermutet oder durch Controller-tests nachgewiesen wird, dass) die ersten paar Takte noch nicht alle controllerinternen und anwenderspezifischen Baugruppen sauber laufen.
    Ciao sagt der JoeamBerg

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. atmega8 lcd und powerdown
    Von Malte0815 im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 03.05.2010, 09:47
  2. Display Powerdown
    Von Furtion im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 09.09.2007, 16:50
  3. Timer2 als interne Uhr im powerdown Modus
    Von slavezero im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 07.04.2007, 11:01
  4. Problem mit Powerdown Modus
    Von albundy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 13
    Letzter Beitrag: 01.01.2006, 20:31
  5. Powerdown
    Von olis99 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 12
    Letzter Beitrag: 21.01.2005, 16:10

Berechtigungen

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

12V Akku bauen