Zitat Zitat von ExXeQtor
... würde dann fragen müssen:
wie machen(codebeispiel)?
Wie mit einem taster den attiny13E in den sleep- und aus dem sleep mode holen?
Na das ist der Stand, mit dem ich auch drangegangen war. Aber schon ok, erst das main - wirklich unwesentliche Dinge wie Timerinitialisierung und -nutzung habe ich weggelassen. Es ist nur I/O-Definition, Tastenabfrage und die Sache um PCI und sleep drin. Überall wo Punkte sind (..........) wurde etwas weggebraten *ggg*. Ach so, ja - nutzen wird Dir das nix, weil ich keinen tiny13E kenne und deshalb garnichts zu diesem exotischen Bauteil sagen kann.

Bitte beachten: im folgenden stehen Mustertexte - nur als Beispiel für Buchstaben in einer Reihe und ohne Ziel für irgendeine Funktion. Der Text ist ohne Gewähr für irgendeine Funktion. Die Unschädlichkeit dieses Textes ist weder nachgewiesen noch wird sie zugesichert. Jede Verwendung des Textes durch Dritte ist erst nach eingehender Prüfung sinnvoll, weil er voller Fehler steckt. Jedwede Ähnlichkeit des Textes mit einer Programmiersprache ist rein zufällig und nicht gewollt. © bei mir.

Code:
/* >> 
  Sicherung 13apr09 1730   ..\C2\Cpcrt13\Cpcr13_a12.c
 ===================================================================================
  Target MCU        : ATtiny 13
  Target Hardware   : Pcr 13
  Target cpu-frequ. : 9,6 MHz, interner Oszillator
 ===================================================================================
....
 ===================================================================================
  *** Versionsgeschichte:
 ====================
 a12 13apr09 1720 Zeithorizont Izthrznt wieder eingeführt - als Korrekturmöglichkeit
......
 ===================================================================================
Alle möglichen Portanschlüsse am ATtiny 13 :
               ==============          ===
        dW, /RESET, (PB5)   1   20   Vcc                   
 PCINT3, CLKI, ADC3,(PB3)   2   19   (PB2), SCK, T0, ADC1, PCINT2
       PCINT4, ADC2,(PB4)___3   18___(PB1), MISO, INT0, AIN1, PCINT1, OC0B
                      GND   4   11   (PB0), MOSI, AIN0, PCINT0, OC0A
--------------------==========-----------------------
Vorgesehene/belegte Anschlüsse am ATtiny 13 :
            ==================                                  v
            /RESET, (PB5)   1   20   Vcc                         
               rLED,(PB3)   2   19   (PB2)                       
    Taster, PCINT4, (PB4)___3   18___(PB1)                       
                      GND   4   11   (PB0), gLED                                  */
/* ============================================================================== */
#include <stdlib.h>              
#include <avr/io.h>              
#include <avr/interrupt.h>       
                                 
#include "CpcrT13_com_a12.h"     // commonvariable
#include "CpcrT13_tmr_a12.c"     // Routinen, Initialisierung etc
......
// =================================================================================
// =================================================================================


// =================================================================================
// ===  HAUPTProgramm ==============================================================
// Initialisierungen
                         
  int main(void)
{        
...........
// Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
//   A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
  DDRB  = 0b11101111;   // Aus- + Eingänge definieren
  PORTB = 0b00011001;   //    und Port/Pull Ups (1)  aktivieren
.....................
// ================================================================================
// ===>>> Beispiel Tastenabfrage #####################>>>>>>>>
/*  while (1)
      { if ( ! (PINB & (1 << PINB5)) )      // Taste abfragen auf SCK 
          { PORTC |=  (1<<PC4); }   // LED auf PC4/MISO einschalten
        else
          { PORTC &= ~(1<<PC4); }   // LED auf PC4/MISO ausschalten  }     */
// ########### Ende der Tastenabfrage auf MISO/PB4 #####################
........................................                                  
  sei();                // Abschluss der Initialisierung, erlaube Interrupts
                          
  while (1)
  {                       
    schlaf_PI4 ();      // Schlafen mit PCI auf PinB3 => Controller "wacht" auf,
                        //   wenn PB4 auf GND gezogen wird  
.....................................
  }                       
                                  
  return 0;                       
}                                 
// =====  Ende Testabschnitt
// ================================================================================
Code:
/* >> 
  Sicherung 13apr09 1730   ..\C2\Cpcrt13\CpcrT13_tmr_a12.c ###>>> noch nicht
 ===================================================================================
  Target MCU        : tiny 13
  Target Hardware   : pacer 13
  Target cpu-frequ. : In der Quelle wählbar
 ===================================================================================
        Enthaltene Routinen:        Nur Timer
......................
  ISR(PCINT0_vect)              // Vektor ??
  void schlaf_PI4 (void)        // Controller in Ruhemodus, aufwachen durch PCINT4
.......................
 ===================================================================================
........................
 ================================================================================ */


// ================================================================================
// ===  Nicht unterbrechbare ISR für PCINT ========================================
ISR(PCINT0_vect)                // Vektor 3 (1 ... 3 !!!)
{                                
//
// Hier könnten anhand einer Bittabelle (uint8_t wird sicher reichen)
//   Verzweigungen zu verschiedenen Programmen erledigt werden, damit WÄHREND
//   des Programmlaufs derselbe Taster für unterschiedliche Zwecke verwendet
//   werden kann/darf.           
//                               
  return;                      // Einfach "ret" -> bedeutet "Aufwachen" vom sleep
}                               
// ================================================================================


// ================================================================================
// ===  Ruhemodus fuer tiny 13 ===================================================
//  Aufgabenstellung: Controller setzen auf PinChangeInterrupt
//                    PCI aktivieren für PB4/PCINT4
//                    Sleepmodi setzen
//                    Sleepmodus aktivieren
  void schlaf_PI4 (void)        // Controller in Ruhemodus, aufwachen durch PCINT4
  {	                          
  GIMSK   |=  (1<<PCIE);        // PinChangeInterrupt enable
  PCMSK   |=  (1<<PCINT4);      // PinChangeInterrupt auf Pin PB4/PCINT4
  sei();                          
  MCUCR   |=  (1<<SM1)|(1<<SE);
  asm volatile ("sleep");         
  GIMSK   &= ~(1<<PCIE);        // PinChangeInterrupt disable
  return;                         
  }                               
// ================================================================================


// ================================================================================
// =====  ENDE    Subroutinen  ====================================================
// ================================================================================