mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Watchdog konfigurieren


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo Hallo
Ich würd gern mein Controller am Ende des Programms in Sleep-Modus 
setzen und ihn mit dem Watchdog-Timer der nicht vom Sleep-Modus 
beeinflußt wird wieder aufwecken. Wenn der Sleep-Modus gesetzt ist tut 
der Watchdog nach ablauf seiner Zeit ein Wake-Up durchführen.
Wie muss ich denn das konfigurieren, hab hier mal ein kleiner Quelltext 
der beim simulieren mit MPLAB aber nicht gefuntzt hat. Weiß aber auch 
nicht ob man den Watchdog mit dem
MPLAB Sim simulieren kann. Würd mich freuen wenn jemand mir ein kleiner 
Quelltext postet wie man Watchdog + Sleep richtig ins Programm einbaut.

#include <16f872.H>
#fuses HS,WDT,NOPROTECT   //Watchdog einbinden WDT

main()
{
setup_wdt(WDT_18MS);      //Watchdog 18ms stellen

while(1)                  //Dauerschleife
 {
 *
 *                        //*Programm
 *
 restart_wdt();           //Watchdog starten
 sleep();                 //Sleepmodus aktivieren
 }
}

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir den keiner Helfen, ein Tip würd ja schon reichen. Wenn Ihr nur 
was über den Watchdog wisst könnt Ihr das auch Posten.
Gruß
       Thomas

Autor: Fernando Heitor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Programm funktioniert 100%.
Der Watchdogtimer schaltet automatisch den SLEEP-Modus ab, nach ca. 2,3 
sek.


#include <16F873.h>
#use delay(clock=4000000)
#fuses XT,WDT

void main() {

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(FALSE);
   setup_counters(RTCC_INTERNAL,WDT_2304MS);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_ccp2(CCP_OFF);

   while(1) //Dauerschleife
   {
       delay_ms(200);
      output_low(PIN_C1);
      restart_wdt(); //Watchdog starten
      sleep(); //Sleepmodus aktivieren
      switch (restart_cause())                      // Mit dieser 
Funktion überwachst du  alle Reset Funktion
      {                                                        // wie 
auch der Watchdogtimer im Schlafmodus
         case WDT_FROM_SLEEP:
         output_high(PIN_C1);

      }
   }

}


Ich hoffe ich konnte dir helfen

Gruss
Fernando Heitor

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.