Pages: [1]   Go Down
Author Topic: Sicherheit gegen Signalunterbrechung  (Read 634 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,
kleine Frage: Ich habe ein Programm, bei dem ich einen Motor per Bluetooth über PWM steuer. Hier ein bisschen vom Code:
Code:
void setup() {
Serial.begin(115200);
}

void loop() {
switch(value) {

case 1:
digitalWite(12, HIGH);
analogWrite(6, 60);
break;

case 2:
digitalWite(12, LOW);
analogWrite(6, 0);
break;
}
}

Die Frage ist nun, gibt es eine Möglichkeit dass der Motor stoppt, FALLS DIE BT-VERBINDUNG ABREIßT??


Greetings,
K86
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quick&dirty: Ich würde im Sekundentakt ein Dummy-Byte senden. Wenn dieses Byte ausbleibt, kann man den Motor einfach stoppen.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das geht leider nicht smiley-sad
Ich benutze zur Steuerung ein Android-Phone (Amarino, kennt vllt jemand). Den Datentransfer kann ich nicht editieren.
Logged

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2455
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Frage ist nun, gibt es eine Möglichkeit dass der Motor stoppt, FALLS DIE BT-VERBINDUNG ABREIßT??

Gegen hängende Programme aller Art hilft die Installation eines Watchdogs.

Wenn der Watchdog-Timer überläuft ohne vorher resettet worden zu sein, resettet dann das ganze Programm. Du mußt dann nur die Schaltung so ausgelegt haben, dass im Fall eines Programm-Resets der Motor steht.

Using Watchdog timer in Arduino projects:
http://tushev.org/articles/electronics/48-arduino-and-watchdog-timer
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 9
Posts: 642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das geht leider nicht smiley-sad
Ich benutze zur Steuerung ein Android-Phone (Amarino, kennt vllt jemand). Den Datentransfer kann ich nicht editieren.

Das würde schon gehen. Allerdings kann man dann nicht die Amarino Anwendung verwenden, sondern muss sich mittels der Amarino Bibliothek ein eigenes Android Programm schreiben.
Logged

_______
Manfred

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@MaFu: Eigentlich will ich nichts extra schreiben.
@jurs: Über den WDT habe ich auch schonmal nachgedacht. Das Problem ist, bevor ich die verbindung zwischen handy und smartphone hergestellt habe vergehen meist ca. 30sec. bis dahin hat mir der WDt schon dem µC resettet.

Es muss doch irgendeine Abfrage o.ä. geben, ob eine serielle Verbindung zum Bluetooth-Device besteht oder nicht ... smiley-confuse
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Welches Bluetooth-Modul/-Shield verwendest du denn? Ist jemandem bekannt, wie die Steuerleitungen RTS/CTS auf Verbindungsabbrüche reagieren? Vielleicht kann man dort ansetzen.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich benutze die Sparkfun Bluetooth Mate Gold
https://www.sparkfun.com/products/9358
Logged

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2455
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@jurs: Über den WDT habe ich auch schonmal nachgedacht. Das Problem ist, bevor ich die verbindung zwischen handy und smartphone hergestellt habe vergehen meist ca. 30sec. bis dahin hat mir der WDt schon dem µC resettet.

1. Wieso soll das ein Problem darstellen?
Wird Deine loop-Funktion für 30 Sekunden blockiert und läuft in der Zeit nicht, während die Verbindung hergestellt wird?

2. Falls die loop beim Herstellen der Verbindung tatsächlich blockiert sein sollte:
Einen Watchdog-Timer kannst Du zu jedem beliebigen Zeitpunkt im Programm aktivieren (und auch deaktivieren), das muß nicht unbedingt in der setup()-Funktion stattfinden. Das kannst Du jederzeit auch später in der loop()-Funktion irgendwann machen.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

{Solved}
Aaah Danke Jurs!
Habe den WDT jetzt in einer meiner Funktionen erst initialisiert. Dadurch klappt es so wie es will  smiley-wink
Logged

Pages: [1]   Go Up
Jump to: