INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Timer.h - es will nicht so, wie ich will. Daher benötige ich Hilfe.
13.09.2015, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2015 13:37 von Gelegenheitsbastler.)
Beitrag #1
Timer.h - es will nicht so, wie ich will. Daher benötige ich Hilfe.
Nach eurer Empfehlung, für timergesteuerte Aktionen die "Timer.h" zu verwenden, habe ich diese herunter geladen und installiert. Soweit funktionieren die Beispiele.

Nun möchte ich die Funktion in einen Sketch einbauen, der zu Testzwecken erst einmal folgendes auf einem Tiny85 macht:

Ein I/O soll für 3 Sekunden auf HIGH gehen Danach soll der Tiny schlafen. Aufgeweckt werden soll er, wenn sich der Pegel von I/O 0 verändert. Grundsätzlich funktionierte das mit den delays, über die ich eine LED blinken lasse, um zu sehen, was im Programm aktuell passiert.

Baue ich aber nun die Timer.h ein, dann klappt das nicht mehr so einwandfrei. Nach dem ersten Start läuft alles so, wie es soll. Wird der Tiny dann aber durch den Interrupt aus dem Schlaf geholt, geht er nicht mehr in den Schlafmodus zurück.

Ich würde den Timer im Anfang der loop gerne neu starten, weil ich denke, dass dort der Hase im Pfeffer liegt. Aber ich weiss nicht, wie das geht.

Das zweite Problem, ist, dass ich im nächsten Schritt einen Taster hinzu fügen möchte, der den Timer wieder null stellt. Wenn der Timer also schon zwei Sekunden läuft und dann der Knopf gedrückt wird, wird der Timer auf null gestellt und läuft von vorne los, bis er nach drei Sekunden den I/O auf LOW setzt. Auch hier weiss ich nicht, mit welchem Befehl man das macht.

Es wäre schön, jemand könnte mir auf die Sprünge helfen.

Hier noch der aktuelle Sketch:

Code:
/**
* Simple sketch to test how little power we can use when
* ATTiny goes to sleep.
* Most of the extra saving seems to be due to turning off ADC
**/

#include <avr/power.h>
#include <avr/sleep.h>
#include "Timer.h"

#define SWITCH_PIN 0
#define LED_PIN 2
#define TASTER 1

Timer t;
#define pin 3
int schlafen;


void setup() {
  pinMode(pin, OUTPUT);
  digitalWrite(pin, LOW);
  t.pulse(pin, 3 * 1000, HIGH);
  pinMode(TASTER, INPUT);
  pinMode(SWITCH_PIN, INPUT);
  digitalWrite(SWITCH_PIN, HIGH);
  pinMode(LED_PIN, OUTPUT);
  
  ADCSRA &= ~(1<<ADEN);                     //turn off ADC
  ACSR |= _BV(ACD);                         //disable the analog comparator
}

void gotoSleep() {
  digitalWrite(LED_PIN, HIGH);
  delay(250);                       // um zu erkennen, ob "gotoSleep" ausgeführt wird
  digitalWrite(LED_PIN, LOW);
  
  GIMSK |= 1<<PCIE;  //Enable Pin Change Interrupt
  PCMSK |= 1<<PCINT0; //Watch for Pin Change on Pin5 (PB0)
  
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_mode();
      
  // waking up from sleep mode.
  sleep_disable();

  GIMSK &= ~(1<<PCIE); //Disable the interrupt so it doesn't keep flagging
  PCMSK &= ~(1<<PCINT0);
}

void loop() {
  digitalWrite(pin, HIGH);
  
  t.update();
  schlafen = digitalRead(pin);
  
  digitalWrite(LED_PIN, HIGH); // soll anzeigen, ob die loop läuft
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
  
  if (schlafen == LOW)
  {
  gotoSleep();
  }
  
  // Wait for the button to be released
//  while (digitalRead(SWITCH_PIN) == LOW) {  }
}

void interrup() {}

// Interrupt for PIN0 falling edge
ISR(PCINT0_vect) {
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.09.2015, 14:32
Beitrag #2
RE: Timer.h - es will nicht so, wie ich will. Daher benötige ich Hilfe.
..ähm, also grundsätzlich läuft nicht alles vom Arduino auf dem Tiny85 weil der in dem Fall einfach einen Timer weniger wie ein UNO hat. Nur mal so als Tipp zum nachforschen.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  BME280 - Luftdruckoffset nicht einstellbar ? Stargazer 17 574 13.08.2017 15:38
Letzter Beitrag: hotsystems
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 815 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.179 11.07.2017 21:37
Letzter Beitrag: Customizer
  Ich komme mit millis nicht weiter !!! Gonmaus 8 530 09.07.2017 21:24
Letzter Beitrag: Tommy56
  Timer lernen AnjinSan 14 649 26.06.2017 13:25
Letzter Beitrag: Tommy56
  WEMOS Motorshield funzt nicht Rumpl-X 8 367 07.06.2017 21:10
Letzter Beitrag: Tommy56
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 1.525 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 653 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 568 10.05.2017 21:04
Letzter Beitrag: MicroBahner
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 587 06.05.2017 13:30
Letzter Beitrag: metzgefa

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste