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
  Arduino lässt sich nicht installieren bergfrei 4 154 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Arduino Mega 2560 läuft nicht Wolfgang50 6 188 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Countdown Timer Uwe1475 23 744 19.10.2016 18:33
Letzter Beitrag: Uwe1475
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 361 16.10.2016 14:07
Letzter Beitrag: Pit
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 125 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 238 09.10.2016 18:39
Letzter Beitrag: Prosac
  Upload funktioniert nicht Levi 5 250 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 396 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 226 16.09.2016 20:36
Letzter Beitrag: Datatom
  at24c256 Hilfe Gandalf 6 249 29.08.2016 18:59
Letzter Beitrag: MKc

Gehe zu:


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