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
  Programmablauf macht nicht das was ich möchte !! ESP + Blynk b3ta 1 44 Gestern 19:20
Letzter Beitrag: Tommy56
Rainbow File geht nicht zum compilieren!!!! Jocky 7 184 19.02.2017 20:01
Letzter Beitrag: Binatone
  IRremote bringe ich nicht zum laufen Franz54 5 122 19.02.2017 11:56
Letzter Beitrag: Tommy56
  Hilfe bei Taster huber5093 11 219 14.02.2017 19:26
Letzter Beitrag: Tommy56
  Code aus 1.6.9 geht mit 1.8.1 nicht mehr zu kompilieren DL1AKP 7 293 02.02.2017 12:16
Letzter Beitrag: Tommy56
  Arduino Läst sich nicht Programmieren Micha06 4 206 29.01.2017 17:27
Letzter Beitrag: Micha06
  Nicht verzagen Forum fragen bergfrei 13 458 28.01.2017 06:09
Letzter Beitrag: dqb312
  Sloeber findet meinen Com Port nicht :-( Pfeilebastler 2 120 27.01.2017 11:11
Letzter Beitrag: hotsystems
  Über drei Taster zwei externe Timer steuern Sidamo 23 557 09.01.2017 20:12
Letzter Beitrag: Tommy56
  nRF24l01 empfängt Daten nicht techniclover 1 193 09.01.2017 19:20
Letzter Beitrag: celle

Gehe zu:


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