Entwicklung SIGNALDuino Empfänger Firm- und Hardware V4 für Maple Mini und ESP32

Begonnen von Ralf9, 13 Dezember 2019, 12:48:26

Vorheriges Thema - Nächstes Thema

juergs

Hallo Locutus,

bist Du sicher, dass Deine Schaltung diesem Layout entspricht, wenn Du mit Ralf's Binary arbeitest?

Jürgen

Ralf9

Zitatbist Du sicher, dass Deine Schaltung diesem Layout entspricht, wenn Du mit Ralf's Binary arbeitest?
Das Layout sollte zum Testen egal sein, es wird bei falschem Layout zwar kein cc1101 erkannt, aber die Befehle funktionieren trotzdem.


Wenn mit "ls -l /dev/serial/by-id" das "ttyACM0" erkannt wird, sollten in einem seriellen Terminal Befehle wie z.B. P oder V oder ? funktionieren
Bei mir sieht es so aus
# ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13  9. Mai 21:32 usb-STMicroelectronics_MAPLEMINI_F103CB_CDC_in_FS_Mode_8D7452895051-if00 -> ../../ttyACM0


Das dmesg sieht recht gut aus
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

ZitatWenn ich den upload-reset im 00_Signalduino Modul in der Sub SIGNALduino_ResetDevice einbaue, sollte sich der Maple Mini, so wie es auch beim nano funktioniert, sich beim einem Absturz selber reseten.
Hab es eingebaut
https://github.com/Ralf9/RFFHEM/commit/c69593f34a3116f4f5f8dce8ad18a51fbf1b0ebb
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

juergs

Hallo Locutus,

ich glaube ich hatte heute ein ähnliche Phänomen mit einem neuen MapleMini.
Der hatte initial den MapleLeaf-Originalbootloader drauf.

Sketch hochgeladen und erkannt = alles OK.                                         (Einstellung: STMDuino, Original BL 17k)

Dann Telekatz-gepatchte Version mit STLink hochgeladen und                 (Einstellung: STMDuino, BL 2.0  20k)
es ging nichts mehr!

ZitatAn error occurred while uploading the sketch
maple_loader v0.1
Resetting to bootloader via DTR pulse
Reset via USB Serial Failed! Did you select the right serial port?
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...

Searching for DFU device [1EAF:0003]...
dfu-util - (C) 2007-2008 by OpenMoko Inc.
Couldn't find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY
timeout waiting for COM44 serial

Auch nach Ausschalten und Wiedereinschalten, verschiedene Bootloader  geflasht. Es ging einfach nichts mehr.

Dann Rogers Maple_Mini_20.bin geflasht, Rechner ausgeschalten, Board vom USB entfernt. Rechner wieder eingeschalten ...
Board an anderer USB-Schnittstelle wieder eingesteckt: Meldung "Installing Maple ... "     => geht.

Board wieder zurück auf "problematischne" USB-Port : geht wieder !
Telekatz-gepatchte Version geflasht: geht wieder. (Magic!)

Da ich unter WIN10 arbeite kann es schon etwas Anderes sein, aber irgendwas ist beim Einrichten des Devices (BL mit STLINK und Reset) schief gegangen, welches sich durch Zufall
durch Wechsel auf anderen anderem USB-Port wieder bereinigt hat ...

Vielleicht ist das unter Linux ähnlich?

Grüße,
Jürgen

/edit: der Bootloader streikt ebenfalls, wenn auf serielle 1..3 Daten ausgegeben werden
Wenn ich mein seriellen test von unten laufen lasse, geht nichts mehr Upload streikt
(siehe Screenshot:  Serielles Device_Statts Maple.png):

Zitatmaple_loader v0.1
Resetting to bootloader via DTR pulse
Reset via USB Serial Failed! Did you select the right serial port?
Searching for DFU device [1EAF:0003]...
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...

dfu-util - (C) 2007-2008 by OpenMoko Inc.
Couldn't find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY
timeout waiting for COM48 serial

Lösung: mit STLINK komplett Erase des Flashspeichers und Bootloader neu Flashen ...  :( :o

juergs

Aber mein Grundproblem:
Keine Ausgabe unter Seriellem Port >0

Zum Testen hier mit Arduino_STM32-Version, als Gegencheck zur stm32duino - Arduino_Core_STM32-Version ....
Beide Varianten geben am Port nichts aus ... Compile läuft aber ohne Fehler durch ...

Jetzt weiter mit stm32duino - Arduino_Core_STM32-Version getestet:


#include <Arduino.h>
//#include <HardwareSerial.h>    // wird wohl nicht direkt benötigt

void setup() {
  // put your setup code here, to run once:
  //  Maple_Serial3._STMDuino:9:10: error: 'class USBSerial' has no member named 'Println'

  delay(2000);
  Serial.begin(115200);
  Serial.println("bin da...");

  Serial1.begin(115200);
  Serial1.println ("Bin auch auf 1 da");

  Serial2.begin(115200);
  Serial2.println ("Bin auch auf 2 da");
 
  Serial3.begin(115200);
  Serial2.println ("Bin auch auf 3 da");
}

void loop()
{
  // put your main code here, to run repeatedly:

  while(true)
  {
    for (uint8_t i=32; i<128; i++)
    {
      delay(2000);       
      Serial1.println(i);
      Serial2.println(i);
      Serial3.println(i);
     
    }
  }
}



@ me: No support of UART2 & 3 in Version 1.8.0 <-- https://github.com/stm32duino/wiki/wiki/API#hardwareserial

======================================================
@Ralf9: CDC Serial write and flush lock up when interrupts are disabled
======================================================


/*
* Blink without delay and UART Test
*
* https://github.com/stm32duino/wiki/wiki/API#hardwareserial
*/
#include <HardwareSerial.h>

// Variables:
int previousMillis = 0;        // will store the last time the LED was updated
int interval = 500;            // interval at which to blink (in milliseconds)
uint32_t counter = 0;

//                      RX    TX
HardwareSerial Serial2(PA3, PA2);
HardwareSerial Serial3(PB11, PB10);

void setup() {
// Set up the built-in LED pin as output:
pinMode(PC13, OUTPUT);

Serial1.begin(19200);
Serial2.begin(19200);
Serial3.begin(19200);
}

void loop() {
// Check to see if it's time to blink the LED; that is, if the
// difference between the current time and last time we blinked
// the LED is bigger than the interval at which we want to blink
// the LED.
if (millis() - previousMillis > interval) {
// Save the last time you blinked the LED
previousMillis = millis();

Serial1.print("Counter: ");
Serial1.print(counter);
Serial1.println(" - Hello UART 1!");

Serial2.print("Counter: ");
Serial2.print(counter);
Serial2.println(" - Hello UART 2!");

Serial3.print("Counter: ");
Serial3.print(counter);
Serial3.println(" - Hello UART 3!");

counter ++;
// If the LED is off, turn it on, and vice-versa:
digitalWrite(PC13,!digitalRead(PC13));
    }
}

// ===> will be an working a *not* example.



Aber das hier?

/*
* Blink without delay and UART Test
*
* https://github.com/stm32duino/wiki/wiki/API#hardwareserial
*/
#include <HardwareSerial.h>

// Variables:
int previousMillis = 0;        // will store the last time the LED was updated
int interval = 500;            // interval at which to blink (in milliseconds)
uint32_t counter = 0;

//                      RX    TX
//HardwareSerial Serial2(PA3, PA2);
//HardwareSerial Serial3(PB11, PB10);

HardwareSerial Serial2(USART2);

HardwareSerial Serial3(USART3);


void setup() {
  // Set up the built-in LED pin as output:
  pinMode(PC13, OUTPUT);

  Serial1.setTx(PA9);
  Serial1.setRx(PA10);
  Serial2.setTx(PA2);
  Serial2.setRx(PA3);
  Serial3.setTx(PB10);
  Serial3.setRx(PB11);
 
 
  Serial1.begin(115200);
  Serial2.begin(115200);
  Serial3.begin(115200);
}

void loop()
{
  // Check to see if it's time to blink the LED; that is, if the
  // difference between the current time and last time we blinked
  // the LED is bigger than the interval at which we want to blink
  // the LED.
  if (millis() - previousMillis > interval) {
    // Save the last time you blinked the LED
    previousMillis = millis();

    Serial1.print("Counter: ");
    Serial1.print(counter);
    Serial1.println(" - Hello UART 1!");

    Serial2.print("Counter: ");
    Serial2.print(counter);
    Serial2.println(" - Hello UART 2!");

    Serial3.print("Counter: ");
    Serial3.print(counter);
    Serial3.println(" - Hello UART 3!");

    counter ++;
    // If the LED is off, turn it on, and vice-versa:
    digitalWrite(PC13,!digitalRead(PC13));
    }
}

// ===> will be an working example.




Geht, aber ohne Stoppbits (FTDI-Adapter!) ?


Zitat---------------------------
CoolTerm - Warning
---------------------------
A Serial Port Error Occured

103: No Stop Bit received
---------------------------
OK   
---------------------------



ZitatCounter: 0 - Hello UART 3!
Counter: 1 - Hello UART 3!
Counter: 2 - Hello UART 3!
Counter: 3 - Hello UART 3!
Counter: 4 - Hello UART 3!
Counter: 5 - Hello UART 3!
Counter: 6 - Hello UART 3!
Counter: 7 - Hello UART 3!
Counter: 8 - Hello UART 3!
Counter: 9 - Hello UART 3!
Counter: 10 - Hello UART 3!

=========
Damit geht es:
=========

  //                      RX    TX
  //HardwareSerial Serial2(PA3, PA2);    // -> Fehler beim Compile
  //HardwareSerial Serial3(PB11, PB10); // -> Fehler beim Compile   

  HardwareSerial Serial2(USART2, SERIAL_8N1 );
  HardwareSerial Serial3(USART3, SERIAL_8N1 );   //--- überladener Konstruktor mit 8N1

void setup() {
  // Set up the built-in LED pin as output:
  pinMode(PC13, OUTPUT);

  Serial1.setTx(PA9);
  Serial1.setRx(PA10);
  Serial2.setTx(PA2);
  Serial2.setRx(PA3);
  Serial3.setTx(PB10);
  Serial3.setRx(PB11);
 
  Serial.begin(115200);
  Serial1.begin(115200);
  Serial2.begin(115200);
  Serial3.begin(115200);
}



Negativer Beigeschmack: Upload über Arduino geht nicht mehr!
/edit: neuer Flash und Reset erhöht den COM-Schnittstellen-Index von COM48 auf COM49 und, wie erwartet: Serial0 wird als USB-Serial ausgegeben:

ZitatCounter: 17 - Hello USB-Serial 0!
Counter: 18 - Hello USB-Serial 0!
Counter: 19 - Hello USB-Serial 0!
Counter: 20 - Hello USB-Serial 0!
Counter: 21 - Hello USB-Serial 0!
Counter: 22 - Hello USB-Serial 0!
Counter: 23 - Hello USB-Serial 0!
Counter: 24 - Hello USB-Serial 0!

RaspiLED

Hi COM49?
Da wird es mal Zeit im Gerätemanager alle ungenutzten COMs zu löschen und wieder bei einer Zahl unter 16 anzufangen.
Ich habe schon viele Programme unter Windows gesehen, die nur bis COM16 klarkamen.
Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...


Ralf9

Habt Ihr mal getestet ob das "upload-reset" bei einem Absturz funktioniert?

Zitat@Ralf9: CDC Serial write and flush lock up when interrupts are disabled
Wenn ich das richtig überblicke, kann die serielle USB Ausgabe blockieren, wenn bei gesperrtem Interrupt ausgegeben wird.
Beim sduino werden in den beiden Interruptroutinen zwar die Interrupts gesperrt, aber es wird nichts ausgegeben.

Gruß Ralf 
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Reinhard.M

Hallo Ralf,
in meinem Log steht folgendes (falls es hilft): "reset: upload-reset not found". Was fehlt mir? Arbeite noch mit der "V 4.1.0-dev200427" MapleCUL, selber kompiliert. Teste hiermit gerade den Watchdog.

Ralf9

Ja, Dir fehlt noch das File upload-reset, dies wird in allen Verzeichnissen der path Variablen gesucht
https://github.com/Ralf9/RFFHEM/commit/c69593f34a3116f4f5f8dce8ad18a51fbf1b0ebb

ZitatBeim "set reset" wird nun der MapleSduino oder MapleCul (V 4.1.x) mit "upload-reset" reseted.
Dazu muss das File "upload-reset" auf den fhem Server kopiert werden
https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/tools
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

juergs

Hallo Ralf,


ZitatHabt Ihr mal getestet ob das "upload-reset" bei einem Absturz funktioniert?

Nein leider noch nicht, meine Version läuft gerade durch:


Zitat
V 4.1.0-dev200422 SIGNALduino cc1101 (R: A1 B-*) - compiled at Apr 24 2020 16:18:35

uptime: 3 21:26:25

Reinhard.M

Zitat von: Ralf9 am 12 Mai 2020, 08:32:13
Ja, Dir fehlt noch das File upload-reset, dies wird in allen Verzeichnissen der path Variablen gesucht
https://github.com/Ralf9/RFFHEM/commit/c69593f34a3116f4f5f8dce8ad18a51fbf1b0ebb
Habe ich versucht:
Zitat2020.05.12 10:27:12 3: myMaple reset
/bin/upload-reset: 1: /bin/upload-reset: Syntax error: word unexpected (expecting ")")
Was wäre sonst noch möglich? (Sorry, arbeite mich in allem bezüglich "Smart Home" gerade erst ein  :-[ )

Ralf9

Das upload-reset file muss in eines der Vezeichnisse kopiert werden das bei "echo $PATH" angezeigt wird,
z.B.
/usr/local/bin:/usr/bin:/bin:
Ich habe es bei mir nach  "/usr/local/bin" kopiert.
Das upload-reset ist auch bei der Arduino IDE beim STM32 core dabei, in dem Verzeichnis wo auch das dfu-util Verzeichnis ist.

Ausgeführt wird es mit den folgenden Parametern:
upload-reset /dev/ttyACM0 750
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Reinhard.M

Ich hatte das upload-reset direkt in das /bin Verzeichnis kopiert:
Zitat
/bin/upload-reset: 1: /bin/upload-reset: Syntax error: word unexpected (expecting ")")
/usr/local/bin/upload-reset: 1: /usr/local/bin/upload-reset: Syntax error: word unexpected (expecting ")")
Wie du siehst wird upload-reset gefunden, aus irgendeinem Grund generiert das aber einen Syntaxfehler. Zur Erinnerung: Ich arbeite noch mit der "V 4.1.0-dev200427 SIGNALduino cc1101" und nicht mit der aktuellsten Version. Sollte es nur mit der aktuellsten Version funktionieren bitte noch ein wenig warten, ich teste derzeit den Watchdog.

Nachtrag:
Das "/dev/ttyACM0" ist vorhanden.

Ralf9

/bin/upload-reset: 1: /bin/upload-reset: Syntax error: word unexpected (expecting ")")
Dies ist unabhängig von der firmware.
Ich hab mal danach gegoogled, da gibts einige Treffer, hat evtl was mit verwendeten Linux shell zu tun.
Welches Linux OS hast Du?

Funktioniert dies?
upload-reset /dev/ttyACM0 750
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7