www.mikrocontroller.net

Forum: Compiler & IDEs Sleep Mode für ATtiny2313


Autor: H. G. (ledi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
    }
  }
}

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

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

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.