Forum: Compiler & IDEs Sleep Mode für ATtiny2313


von H. G. (ledi)


Angehängte Dateien:

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
    }
  }
}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.)

von Falk B. (falk)


Lesenswert?

@  Heimo G. (ledi)

>      C_code.png
>      189,2 KB, 5 Downloads

Patsch

Wer Quelltext als Screenshot postet muss geschlagen werden! Lies mal was 
über Netiquette!

>Ich bitte um Hilfestellung! DANKE!!!

Siehe Sleep Mode.

MFG
Falk

von Rolf Magnus (Gast)


Lesenswert?

Mich würde vor allem interessieren, wie er es geschafft hat, Screenshots 
als PNG zu erstellen, die aber JPEG-Artefakte haben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.