Sleep Mode für ATtiny2313

OP #1731295
Lesenswert?
• ▲
▼
Hallo!
Mit dem ATtiny2313 steuere ich einen LED-Treiber mittels PWM (über Port 
PB3) an und möchte, da die Schaltung mit 4 AA-Batterien versorgt wird, 
den UC in den Power-Down-Mode versetzen sobald die LED über den Taster 
an Pin PB0 ausgeschaltet wird.
Da ich noch selbst Anfänger bin, komme ich hier auch nach intesivem 
Datenblattstudium nicht zurecht. PWM funktioniert aber einwandfrei.

Ich bitte um Hilfestellung! DANKE!!!


Hier der C-Code für das Testprogramm:

//****************************************************
//* Testprogramm   Sleep-Mode ATtiny 2313            *
//* Funktion:  Taster = on --> LED = on     *
//*     Taster = off --> LED = off     *
//*     LED an PORTB3, Taster an PORTB0   *
//****************************************************

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

//********************board***************************
#define button_down   (PINB & (1<<PIN0))

int main(void)
{

  uint16_t taste=0;

  ACSR |= (1<<ACD);    //Analogcomparator OFF

  DDRB |= (1 << DDB3);   //led output enable
  DDRB 
|=((1<<DDB1)|(1<<DDB2)|(1<<DDB4)|(1<<DDB5)|(1<<DDB6)|(1<<DDB7));//Regist 
er  B output enable
  DDRD 
|=((1<<DDB0)|(1<<DDB1)|(1<<DDB2)|(1<<DDB3)|(1<<DDB4)|(1<<DDB5)|(1<<DDB6) 
);//Register  B output enable
  PORTD = 0xFF;    // enable Pull-up

  MCUCR = 0b00100000;  // sleep-mode enable (SE-Bit = 1)

  sei();      //enable Interrupts

  while (1)
  {
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_mode();

    if (button_down)
    {
        PORTB = (1<<3);  // LED ON
      taste=1;
    }
    else
    {
      PORTB = (0<<3); // LED OFF
    }
  }
}
Angehängte Dateien:
Moderator Persönliche Seite #1731373
Lesenswert?
• ▲
▼
Habe den Code nicht so genau angeguckt, aber was auf den ersten
Blick schon auffällt: wodurch soll den bitte der ATtiny2313 wieder
aufwachen?  Du hast zwar globale Interrupts gestattet, aber nichts
aktiviert, was einen Interrupt durch den Button ermöglichen würde,
geschweige denn einen Interrupthandler dafür installiert.  (Der
muss sein, selbst falls er leer ist, was für deinen Fall wohl
genügen würde.)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.