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 wird nicht erkannt sowerum 14 248 10.12.2017 22:14
Letzter Beitrag: Tommy56
  Timer 0 Mathias 8 276 02.12.2017 17:26
Letzter Beitrag: MicroBahner
  Echtzeituhrmodul läuft nicht scritch 21 604 30.11.2017 10:44
Letzter Beitrag: Tommy56
  Bootloader lässt sich nicht brennen?? dobermann145 10 544 21.11.2017 22:58
Letzter Beitrag: hotsystems
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 1.877 10.11.2017 22:24
Letzter Beitrag: r4c3
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 378 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
Sad Nano - nicht genug Speicher torsten_156 10 626 30.10.2017 21:40
Letzter Beitrag: MicroBahner
  Hilfe bei Einschaltverzögerung gesucht Ingo 9 654 28.10.2017 19:04
Letzter Beitrag: Tommy56
Photo Hilfe bei meinem Arduino Projekt Niklas 10 563 23.09.2017 21:05
Letzter Beitrag: Niklas
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 488 22.08.2017 15:17
Letzter Beitrag: Tommy56

Gehe zu:


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