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
Sad Hilfe bei 2.4 TFT Display Harry Hirsch 40 1.419 22.04.2018 15:34
Letzter Beitrag: Tommy56
  Neuling kommt nicht weiter, ws2812 If abfragen Tabata 8 443 19.04.2018 14:07
Letzter Beitrag: Tommy56
  hilfe bei callback ausgabe per knopfdruck merz 5 173 15.04.2018 14:16
Letzter Beitrag: Tommy56
  millis() zählt nicht weiter sowerum 8 445 09.04.2018 17:55
Letzter Beitrag: Tommy56
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 524 05.04.2018 10:54
Letzter Beitrag: amithlon
  Hilfe bei Fehlermeldung TroyPan 3 289 23.03.2018 23:38
Letzter Beitrag: Tommy56
  Bootlader Brennen funktioniert nicht Ardusil 6 395 18.03.2018 10:53
Letzter Beitrag: hotsystems
  Hilfe beim skript Devtris 24 1.184 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe bei einen kleinen Programm FPV 9 826 11.03.2018 20:42
Letzter Beitrag: Tommy56
  Bool wird nicht umgesetzt Wampo 3 291 10.03.2018 23:04
Letzter Beitrag: Tommy56

Gehe zu:


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