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 ====================================================
// ================================================================================
Lesezeichen