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
Stromsparender Microkontroller für Akkubetrieb
19.11.2020, 18:24
Beitrag #33
RE: Stromsparender Microkontroller für Akkubetrieb
(19.11.2020 18:10)louard schrieb:  Ja Big Grin was doch so ein Forum bringt...

Ich hoffe nur gutes. Wink

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 19:01
Beitrag #34
RE: Stromsparender Microkontroller für Akkubetrieb
Ich habe jetzt herausgefunden wo mein Fehler lag das der Power down Mode des funk Moduls nicht funktionierte: ich habe vergessen radio.startListening aufzurufen nachdem das Modul wieder hochgefahren ist.
Ich habe nun hier einen Sketch der konstant rund 6mA verbraucht und ohne sleep arduino seitig läuft.
Code:
#include <avr/sleep.h>
#include <avr/power.h>
#include "nRF24L01.h" // NRF24L01 library created by TMRh20 https://github.com/TMRh20/RF24
#include "RF24.h"

RF24 radio(8, 9); // NRF24L01 used SPI pins + Pin 9 and 10 on the UNO
int ReceivedMessage[1] = {000}; // Used to store value received by the NRF24L01
const uint64_t pipe = 0xE6E6E6E6E6E6; // Needs to be the same for communicating between 2 NRF24L01

int buzzer = 5, board = 2;

void setup() {
  Serial.begin(115200);
  pinMode(buzzer, OUTPUT);
  Serial.println("start");
  radio.begin(); // Start the NRF24L01
  radio.openReadingPipe(1, pipe); // Get NRF24L01 ready to receive
  radio.startListening(); // Listen to see if information received
}

void loop() {
  radio.powerUp();
  delay(100);
  radio.startListening();
  delay(100);
    if (radio.available())
    {
      Serial.println("available");
      radio.read(ReceivedMessage, 1); // Read information from the NRF24L01
      Serial.println(ReceivedMessage[0]);
      if (ReceivedMessage[0] == board) {
        digitalWrite(buzzer, HIGH);
        delay(2000);
        digitalWrite(buzzer, LOW);
      }
      else if (ReceivedMessage[0] == 0) {
        digitalWrite(buzzer, HIGH);
        delay(1000);
        digitalWrite(buzzer, LOW);
      }
      ReceivedMessage[1] = {000};
   // }
  }
  radio.powerDown();            // Power down the radio
  delay(9000);
}

Allerdings startet der Arduino immer neu wenn er mit dem Funk Modul angesprochen wird, also hier 0 oder 2 empfängt.
Ich erkenne dass weil dann immer "start" ausgegeben wird, also der setup Teil ausgeführt wird.
Ich bin ratlos wiso das passiert, oder ob das villeicht sogar gewollt ist.

LG louard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 19:11
Beitrag #35
RE: Stromsparender Microkontroller für Akkubetrieb
(19.11.2020 18:24)hotsystems schrieb:  
(19.11.2020 18:10)louard schrieb:  Ja Big Grin was doch so ein Forum bringt...

Ich hoffe nur gutes. Wink

das habe ich damit gemeintWink

LG louard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 20:55
Beitrag #36
RE: Stromsparender Microkontroller für Akkubetrieb
Das habe ich doch auch so verstanden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 23:44
Beitrag #37
RE: Stromsparender Microkontroller für Akkubetrieb
(19.11.2020 19:01)louard schrieb:  Allerdings startet der Arduino immer neu wenn er mit dem Funk Modul angesprochen wird, also hier 0 oder 2 empfängt.
Ich erkenne dass weil dann immer "start" ausgegeben wird, also der setup Teil ausgeführt wird.
Ich bin ratlos wiso das passiert, oder ob das villeicht sogar gewollt ist.

Das kann ja eigentlich nur ein Power-up-Reset sein, z. B. durch den Buzzer.

In dem Mikrocontroller gibt es ein Register, dass den Grund des letzten Resets angibt. Lies das doch mal im Setup aus.

Hier mal ein Beispiel, wie ich das für einen DUE gemacht habe, Du musst das an Deinen Prozessor anpassen. Und die HEX-Adresse brauchst Du nicht, Du kannst dass Register einfach mit seinem Name im Datenblatt ansprechen. Klappte bei mir für den DUE nicht, da habe ich es eben selbst definiert.
Code:
void getResetgrund() {
  word RegisterWert;
  volatile word* RSTC_SR =    (word*)0x400E1A04;
  RegisterWert = *RSTC_SR;
  RegisterWert = (RegisterWert >> 8) & 0x7;
  SWResetZaehler = 0;

  switch (RegisterWert) {
    case 0:
      ResetText = TxRSTGeneral;
      break;
    case 1:
      ResetText = TxRSTBackup;
      break;
    case 2:
      ResetText = TxRSTWatchdog;
      break;
    case 3:
      ResetText = TxRSTSoftware;
      SWResetZaehler = 10;
      break;
    case 4:
      ResetText = TxRSTUser;
      break;
    default:
      ResetText = TxRSTunklar;
      break;
  }
  pprint(ResetText, true);
}
Gruß GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2020, 14:36
Beitrag #38
RE: Stromsparender Microkontroller für Akkubetrieb
Also ich kann jetzt behaupten, dass alles funktioniert.
Ich zeige hier meine Ergebnisse in wenigen Tagen, wenn ich mir sicher bin, dass alles funktioniert.
Der ungewollte Resett am slave passiert immer noch stört mich aber nicht weiter wenn er meinem Arduino nicht schadet.

LG louard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2020, 14:40
Beitrag #39
RE: Stromsparender Microkontroller für Akkubetrieb
(19.11.2020 23:44)GuaAck schrieb:  
(19.11.2020 19:01)louard schrieb:  Allerdings startet der Arduino immer neu wenn er mit dem Funk Modul angesprochen wird, also hier 0 oder 2 empfängt.
Ich erkenne dass weil dann immer "start" ausgegeben wird, also der setup Teil ausgeführt wird.
Ich bin ratlos wiso das passiert, oder ob das villeicht sogar gewollt ist.

Das kann ja eigentlich nur ein Power-up-Reset sein, z. B. durch den Buzzer.

In dem Mikrocontroller gibt es ein Register, dass den Grund des letzten Resets angibt. Lies das doch mal im Setup aus.

Hier mal ein Beispiel, wie ich das für einen DUE gemacht habe, Du musst das an Deinen Prozessor anpassen. Und die HEX-Adresse brauchst Du nicht, Du kannst dass Register einfach mit seinem Name im Datenblatt ansprechen. Klappte bei mir für den DUE nicht, da habe ich es eben selbst definiert.
Code:
void getResetgrund() {
  word RegisterWert;
  volatile word* RSTC_SR =    (word*)0x400E1A04;
  RegisterWert = *RSTC_SR;
  RegisterWert = (RegisterWert >> 8) & 0x7;
  SWResetZaehler = 0;

  switch (RegisterWert) {
    case 0:
      ResetText = TxRSTGeneral;
      break;
    case 1:
      ResetText = TxRSTBackup;
      break;
    case 2:
      ResetText = TxRSTWatchdog;
      break;
    case 3:
      ResetText = TxRSTSoftware;
      SWResetZaehler = 10;
      break;
    case 4:
      ResetText = TxRSTUser;
      break;
    default:
      ResetText = TxRSTunklar;
      break;
  }
  pprint(ResetText, true);
}
Gruß GuaAck

Erstmal danke für die Antwort, allerdings kann ich noch nicht viel mit Registern usw. anfangen habe mich dazu noch zu wenig damit auseinandergesetzt, deswegen meine Frage bevor ich weiter versuche den Grund des resetts zu finden.
Würde so ein Resett auf Dauer den elektronischen Kompinenten schaden?

LG louard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2020, 20:10
Beitrag #40
RE: Stromsparender Microkontroller für Akkubetrieb
Zitat:Erstmal danke für die Antwort, allerdings kann ich noch nicht viel mit Registern usw. anfangen habe mich dazu noch zu wenig damit auseinandergesetzt, deswegen meine Frage bevor ich weiter versuche den Grund des resetts zu finden.
Würde so ein Resett auf Dauer den elektronischen Kompinenten schaden?

Eine Schädigung oder vorzeitige Alterung kann ich mir nicht vorstellen.

Aber wenn so etwas unkontrolliert passiert, dann kann ja auch was anderes in Deiner Schaltung unkontrolliert passieren. Ich würde den Fehler lieber jetzt suchen, wo die ja klare Bedingungen für das Fehlverhalten hast. Nimm doch mal möglichst viel Peripherie weg und siehe, was passiert.

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Akkubetrieb und USB kommunikation gleichzeitig kartoffelsuppe 1 2.506 11.06.2015 21:52
Letzter Beitrag: Thorsten Pferdekämper
  Stromsparender Mikrocontroller Xtremefly 1 2.015 12.03.2015 10:41
Letzter Beitrag: Xtremefly

Gehe zu:


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