ATtiny basics

Begonnen von KölnSolar, 23 November 2016, 14:10:48

Vorheriges Thema - Nächstes Thema

KölnSolar

Ich bin es leid. Selber rege ich mich über ellenlange Threads ohne direkten Bezug zum Thema auf und habe selber lange den hier https://forum.fhem.de/index.php/topic,52755.0.html missbraucht, obwohl es mir überhaupt nicht um ein Funkthermometer, sondern meine Anfänge mit preiswerten, kleinen, programmierbaren, stromsparsamen µC für Selbstbauprojekte ging  :-[ Da die ATtiny-Reihe die vorgenannten Voraussetzungen erfüllt, habe ich mich eben an den o.g. Thread gehangen, wo wir dann Themen wie:
- Programmierumgebung: Arduino IDE, avr-gcc, avrdude, ISP .....
- Programmiersprache: C und allgemeine Bibliotheken
- Stromsparfunktionen des attiny
- Interruptsteuerung beim attiny
- Funkprotokolle: Lacrosse, Intertechno
- Hardwareaufbau
etc. abhandelten (DANKE !!!)
Nun aber möchte ich diesen Thread für eigentliche basic Fragen und Antworten nutzen, die mit einem Selbstbau-Thermometer nur entfernt etwas zu tun haben. Da darf es dann gerne auch mal eine "dumme" Frage eines Bastelanfängers sein  ;D
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

#1
nun dann zur dort zuletzt gestellten Frage bezüglich Stromsparmodus und Aufweckfunktion per PIN-Interrupt:
ZitatKlingt ja gut - ist Dein Attiny auch im Sleep-Mode?

Hast Du mal den Stromverbrauch bei offenem/geschlossenen Kontakt gemessen?

Und, kannst Du vllt hier mal Deinen Sketch posten? (Oder als PN)

LG

Ja, power_down.

ZitatBin jetzt auf 5µA runter  ;) Die werden vom WDT verursacht. Mein Problem war, dass ADC nicht abgeschaltet hatte, obwohl das eigentlich im power_down so sein soll. Machte also 260 µA !!. Schau ich mir noch einmal in Ruhe an.
Ohne WDT, also mit reinem Interrupt-wake-up läuft mit 0 µA(also mein Schätzeisen zeigt nix mehr an). Ideal für meine geplanten Postmelder  ;)
Grüße Markus

Code möchte ich (noch)nicht komplett posten, weil ich die Veröffentlichung von halb fertigen Sachen nicht mag. Außerdem hab ich den sleep mode ja über die narcoleptic lib realisiert. Im nachhinein kein Wunderwerk  :( Aber die (abgekupferte) Interruptsteuerung teile ich gerne:

Initialisierung:
    byte Int_K =                   0;

    cli();
    GIMSK |= (1 << PCIE);   
    PCMSK |= (1 << PIN_K1);
    sei();

Interrupt-handler:

ISR(PCINT0_vect)
{
  cli();//disable interrupts during excecution
  Int_K = 1;
  sei();  // enable interrupt handling
}

Main:

  if (Int_K == 1) // contact status change
  {
  ....Verarbeitung...
  Int_K = 0;
  }
  ....sleep....



Ist so vielleicht auch übersichtlicher und leichter verständlich, als in einem seitenlangen Sketch  ;)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt