Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Hardware
  3. Teensy 3.2 and RFM69HW not working

Teensy 3.2 and RFM69HW not working

Scheduled Pinned Locked Moved Hardware
9 Posts 3 Posters 117 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    Nigel31
    wrote on last edited by
    #1

    HI,
    I have a daft problem.
    I have 20 nodes around, using Pro Mini / Nano / Uno and Mega, all with RFM69 tranceivers.
    I wish to rebuild one of the Mega nodes, using a Teensy 3.2, mainly for the physical size, needing as I do more program storage for this node ( Central heating thermostat, with touchscreen).
    Try as I might, I am failing at the first hurdle.
    I thought I would just upload a simple sketch, and test that the communication is all ok, and build from there.
    The node isn't seeing the gateway / controller, and the gateway is definitely not receiving anything from this new node.

    To prove the radio module, I wired it to a pro Mini, and uploaded the same sketch, which was then recognised, and added to the controller.

    the GW log for the ProMini sucessful presenting is below

    43;255;0;0;17;2.2.0
    43;255;3;0;6;0
    43;255;3;0;6;M
    43;255;3;0;11;test Node
    43;255;3;0;12;1.0.0
    43;5;0;0;33;Motion RX RSSI
    43;4;0;0;1;Prescence
    43;6;0;0;30;Motion Battery V
    43;4;1;0;16;0
    

    I have reconnected the Teensy to the same hardware, but it still fails, in desperation, I have changed pins for the IRQ and the CS pins, and defined them in the sketch, still no joy. I clearly am doing something basic wrong, but I am going round is a very small circle.
    first bit of the failing Log from the teensy

    300 MCO:BGN:INIT NODE,CP=RRNNT---,VER=2.2.0
    300 TSM:INIT
    300 TSF:WUR:MS=0
    301 TSM:INIT:TSP OK
    301 TSM:INIT:STATID=43
    301 TSF:SID:OK,ID=43
    301 TSM:FPAR
    1502 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    3503 !TSM:FPAR:NO REPLY
    3503 TSM:FPAR
    4703 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    6704 !TSM:FPAR:NO REPLY
    6704 TSM:FPAR
    7904 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    9905 !TSM:FPAR:NO REPLY
    9905 TSM:FPAR
    11105 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    13106 !TSM:FPAR:FAIL
    13106 TSM:FAIL:CNT=1
    13106 TSM:FAIL:DIS
    13106 TSF:TDI:TSL
    23107 TSM:FAIL:RE-INIT
    23107 TSM:INIT
    

    Connections are:

    Teensy > RFM69HW
    DIO 2 (pin 4) > DIO 0
    DIO 10 CS > NSS
    DIO 11 DOUT > MOSI
    DIO 12 DIN > MISO
    DIO 13 SCK > SCK

    0V and 3.3V Connected 3.311v actual measured on the pads of the RFM69

    the sketch is below.

    Please point out my stupid mistake.

    Many thanks

    Nigel

    // Enable debug prints
    #define MY_DEBUG
    #define   MY_DEBUG_VERBOSE_RFM69
    //#define MY_DEBUG_VERBOSE_SIGNING
    //#define MY_SIGNING_SOFT
    //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
    //#define MY_SIGNING_REQUEST_SIGNATURES
    #define   MY_SPLASH_SCREEN_DISABLED
    //#define   MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
    //#define MY_TRANSPORT_WAIT_READY_MS 5000
    // Enable and select radio type attached
    //#define MY_REPEATER_FEATURE
    #define MY_RADIO_RFM69
    #define MY_RFM69_FREQUENCY RFM69_433MHZ // Set your frequency here
    #define MY_RFM69_MAX_POWER_LEVEL_DBM (13)   // max. TX power 10dBm = 10mW
    #define   MY_RFM69_TX_POWER_DBM (13)
    #define MY_IS_RFM69HW // Omit if your RFM is not "H"
    //#define   MY_RFM69_IRQ_PIN  2
    //#define   MY_RFM69_IRQ_NUM   digitalPinToInterrupt(MY_RFM69_IRQ_PIN)
    //#define   MY_RFM69_CS_PIN 10 // NSS. Use MY_RF69_SPI_CS for older versions (before 2.2.0)
    //#define MY_RFM69_ENABLE_ENCRYPTION
    //#define MY_RFM69_NETWORKID 100  // Default is 100 in lib. Uncomment it and set your preferred network id if needed
    #define MY_NODE_ID 43
    
    //#include <MyConfig.h>
    //#include <Filter.h>
    #include <MySensors.h>
    //#include <TimeLib.h> 
           
    
    
    //#include <Bounce2.h>
    //#include <avr/wdt.h>
    //#include <Vcc.h>
    
    
    #define VCC_MIN 3.0
    #define VCC_MAX 4.25
    //Vcc vcc;
    
    
    int rawbatteryLevel = 0;
    int prevbatterylevel=0;
    int scaledbatterylevel = 0;
    uint8_t batP = 100;
    float batV = 3.250;
    int oldBatteryPcnt = 0;
    const float BatVccMin   = 3000;           // Minimum expected Battery Vcc level, in Volts.
    const float BatVccMax   = 4250;        // Maximum expected BatteryVcc level, in Volts.
    const int MaxBattCount = 1023;
    const float BatVccCorrection = 4.15 / 4.18; // Measured Battery Vcc by multimeter divided by reported Vcc
    
    
    
    
    #define CHILD_ID_PRESENCE 4
    #define CHILD_ID_RX_RSSI 5
    #define CHILD_ID_BATVCC 6
    
    
    int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
    
    const int PresenceDetect = 3; 
    
    const long interval = 20000;   
    
    unsigned long previousMillis,previousrelayMillis,previouprescence= 0;
    unsigned long debouncetime =0;
    
    bool  myprescenceDetected = 0;
    
    bool Relaystate = 0;
    bool uplinkAvailable = true;
    bool requestState;
    bool firstStart = true;
    
    
    
    unsigned long MYsleepTime = 3600000;//SLEEP_SEC*1000 * SLEEP_MINS * 60  ; //period_t is an enum type defined in the LowPower library (LowPower.h)
    
    int sleepcnt =0;
    volatile long currenttime = 0;
    volatile long temptime = 0;
    //long lightLevel = 0;
    
    // Initialize  message
    
    
    
    MyMessage msgPrescenceDetect(CHILD_ID_PRESENCE, V_TRIPPED);
    MyMessage msgRxRSSI(CHILD_ID_RX_RSSI, V_LEVEL);
    MyMessage msgVcc(CHILD_ID_BATVCC, V_VOLTAGE);
    
    
    void setup() {  // put your setup code here, to run once:
    //pinMode (MY_RFM69_IRQ_PIN, INPUT_PULLUP);
    
     // pinMode(PresenceDetect, INPUT);      // interruptPin
     // pinMode(2, INPUT_PULLUP);      // interruptPin2
    //  EIFR = (1<<INTF0) | (1<<INTF1);// prevent initial trigger, clear interrupt
    //  wait(100);
    //  EIFR = (1<<INTF0) | (1<<INTF1);
    //  attachInterrupt(digitalPinToInterrupt(PresenceDetect), prescenceDetected, RISING);
    
     //wdt_disable(); // Might be redundant as the bootloader should have done this already
    
    analogReference(INTERNAL);
         
     }//end setup
    
    void presentation() {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("test Node", "1.0.0");
    
    
      // Register all sensors to gw (they will be created as child devices)
     //   present(CHILD_ID_LIGHTLEVEL, S_LIGHT_LEVEL,"LIGHT_LEVEL",true);
     //     wait(250);
        present(CHILD_ID_RX_RSSI, S_SOUND, "Motion RX RSSI",true);
          wait(1000);
          present(CHILD_ID_PRESENCE, S_MOTION, "Prescence", true);
           wait(250);
           present(CHILD_ID_BATVCC, S_MULTIMETER, "Motion Battery V");
      
    }//end presentation
    
    
    
    
    void loop() { // put your main code here, to run repeatedly:
    
    
        // Read digital motion value
        wait(50);// wait a bit, then read in level, avoid spurious noise as PIR holds high state for 27sec
        bool Motion = digitalRead(PresenceDetect) == HIGH;
    
        Serial.print("Motion ");
        Serial.println(Motion);
        send(msgPrescenceDetect.set(Motion?"1":"0"));  // Send tripped value to gw
    
        // get the battery Voltage
        
    
    if(Motion == 0){
      wait(5);
      rawbatteryLevel = analogRead(BATTERY_SENSE_PIN);// 
      if(prevbatterylevel != rawbatteryLevel){
    
      wait(5);
    
        long tempV=0;
        for(int i=1;i<=50;i++){
          wait(5);
          rawbatteryLevel = analogRead(BATTERY_SENSE_PIN);// 
          tempV=tempV + rawbatteryLevel;
        }
          rawbatteryLevel = tempV/50;
          prevbatterylevel = rawbatteryLevel;
      
          float scaledbatterylevel =  map(rawbatteryLevel,0,MaxBattCount,0,BatVccMax );// changed it to milivolts
          float batV = scaledbatterylevel /(1000); // Battery voltage
          uint8_t batP = (((scaledbatterylevel - BatVccMin)*100)/(BatVccMax-BatVccMin)); //((input - min) * 100) / (max - min)
    
         
          #ifdef MY_DEBUG
                              Serial.print("RAWbatcount :");
                                              Serial.println(rawbatteryLevel);
                            Serial.print("batV :");
                                              Serial.println(batV);
                            Serial.print("batP :");
                                              Serial.println(batP);
          #endif
          
          wait(100);
    
                 //  float volts = vcc.Read_Volts();
                   send(msgVcc.set(batV,2),false);
    
                      if (oldBatteryPcnt != batP) {
                          sendBatteryLevel(batP);
                          oldBatteryPcnt = batP;
                      }
    
         RX_SEND();
      
    }
        
      }
      
        Serial.println("Sleep 10000");
    
    sleep(10000);
        Serial.println("Sleep infinit");
       // EIFR = 1;// clear interrupts
       // EIFR = 2;
     //   EIFR = (1<<INTF0) | (1<<INTF1);// clear interrupts
    //sleep(digitalPinToInterrupt(PresenceDetect), CHANGE, MYsleepTime);
    
    
    
    
    }// end loop
    
    
    
    void receive(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.isAck()) {
         #ifdef MY_DEBUG
         Serial.println("+Ack FMGW");
         #endif
      }
      
                            #ifdef MY_DEBUG
                                   Serial.print("*InMsgty :");
                                   Serial.print(message.type);
                                   Serial.print(" MsgComd:");
                                   Serial.print(message.getCommand());
                                   Serial.print(" childID:");
                                   Serial.print(message.sensor);
                            
                                   Serial.print(" Switch:");
                                   Serial.println(message.getFloat());
                            #endif
                            
    
      if (message.type == V_STATUS || S_HEATER || V_LIGHT || V_HVAC_SETPOINT_HEAT || V_TEMP || S_HVAC) {
    
    
           if (message.getCommand() == 2){// THIS PROCESSES THE CONTROLLERS EXPECTED STATE OF THE OUTPUT
                           // put code here to be executed when the message is from a request
                            #ifdef MY_DEBUG
                                      Serial.print("REQ_Msg :");
                                      Serial.print(message.type);
                                      Serial.print(" MsgCmd:");
                                      Serial.print(message.getCommand());
                                      Serial.print(" childID:");
                                      Serial.print(message.sensor);
                                      Serial.print(" Switch:");
                                      Serial.println(message.getBool());       
                           #endif
    
                      switch (message.sensor) {// the child ID
    
                        case 1:
                            
                          break;
                             case 6:
                             
      
                              break;
    
                     
    
                                                    
                               
    
                             
                       } // end switch
                                                            
    
    
        
          }// end msg=2
    
            if (message.getCommand() == 1){// THIS PROCESSES DIRECTED COMMANDS
    
              
               #ifdef MY_DEBUG
                                              Serial.print("*InMsgty :");
                                              Serial.print(message.type);
                                              Serial.print(" MsgComd:");
                                              Serial.print(message.getCommand());
                                              Serial.print(" childID:");
                                              Serial.print(message.sensor);
                            
                                              Serial.print(" Switch:");
                                              Serial.println(message.getBool());
               #endif                 
    
             
    
    
                      switch (message.sensor) {// the child ID
    
                        case 1:
                            
                              break;
                              
                             case 3:
                             
                              break;
    
                             case 6:
                             
    
                              break;
                            
                                                           
                             
    
                             
                       } // end switch
    
    
    
                       
              }// end if msg = 1
    
    
        }// end msg type function
    
    }// end void loop
    
    
    void prescenceDetected() { // action when interrupt button doesnt really do anyhing as edge triggered
      currenttime = millis();
      if ((currenttime - debouncetime) > 2000) {
       myprescenceDetected = 1;
    
    
      }
      debouncetime = currenttime;
    }
    
    
    
    void RX_SEND()
    {
    
        send(msgRxRSSI.set(transportGetSignalReport(SR_RX_RSSI)));
    
    }  
    
    
    
    
    
    void sendBatteryReport() {
     
     // float p = vcc.Read_Perc(VCC_MIN, VCC_MAX, true);
     // int batP = static_cast<int>(p);
    #ifdef MY_DEBUG
      Serial.print("Battery is: "); Serial.println("99");
    #endif
      sendBatteryLevel(99);
    }
    
    /*
    
    // This is called when a new time value was received
    void receiveTime(unsigned long controllerTime) {
      // Ok, set incoming time 
      #ifdef MY_DEBUG
        Serial.print("Time value received: ");
      #endif 
    
      if (controllerTime > 1525129200){
     
      setTime(controllerTime);  
        #ifdef MY_DEBUG
            Serial.print("Time value valid: "); 
              Serial.println(controllerTime);
       #endif
    
     // RTC.set(controllerTime); // this sets the RTC to the time from controller - which we do want periodically
      timeReceived = true;
      
      #ifdef MY_DEBUG
                             
             
      Serial.print(hour());
      Serial.print(" ");
      Serial.print(minute());
      Serial.print(" ");
      Serial.print(second());
      Serial.print(" ");
      Serial.print(day());
      Serial.print(" ");
      Serial.print(month());
      Serial.print(" ");
      Serial.print(year()); 
      Serial.println(); 
    
       #endif
     }
      
    }
    */
    
    1 Reply Last reply
    0
    • TheoLT Offline
      TheoLT Offline
      TheoL
      Contest Winner
      wrote on last edited by
      #2

      What does the debug show in your serial monitor?

      N 1 Reply Last reply
      0
      • electrikE Offline
        electrikE Offline
        electrik
        wrote on last edited by
        #3

        Is the RFM module actually a HW model? And which RFM driver (old/new) is the gateway using?

        N 2 Replies Last reply
        0
        • TheoLT TheoL

          What does the debug show in your serial monitor?

          N Offline
          N Offline
          Nigel31
          wrote on last edited by
          #4

          @TheoL
          Hi. The serial log is the second "code" entry in the original post.

          1 Reply Last reply
          0
          • electrikE electrik

            Is the RFM module actually a HW model? And which RFM driver (old/new) is the gateway using?

            N Offline
            N Offline
            Nigel31
            wrote on last edited by
            #5

            @electrik
            Hi, yes it is the higher power HW. Model.
            The same sketch was used in the teensy and the pro mini, with the same radio module. One worked, one didn't.

            1 Reply Last reply
            0
            • electrikE electrik

              Is the RFM module actually a HW model? And which RFM driver (old/new) is the gateway using?

              N Offline
              N Offline
              Nigel31
              wrote on last edited by
              #6

              @electrik
              Hi sorry, the GW and all nodes use the old driver. I did try the new one, some time ago, and it plain didn't work for me. I am sticking with 2.2.0 for the moment, when I upgraded to 2.3.0, everything broke, so I am sticking with 2.2.0 untill a major revision.

              1 Reply Last reply
              0
              • electrikE Offline
                electrikE Offline
                electrik
                wrote on last edited by
                #7

                Can you double check the interrupt pin? It is now commented out in the code. Is the right pin being used?
                I also don't see the verbose messages in the node log, while the define for it is is enabled

                1 Reply Last reply
                0
                • N Offline
                  N Offline
                  Nigel31
                  wrote on last edited by
                  #8

                  Hi,

                  I have uncommented the defines for the IRX and the CS pins, they are however the defaults.
                  I have tried other pins for the IRQ (9)
                  A log is below.

                  300 MCO:BGN:INIT NODE,CP=RRNNT---,VER=2.2.0
                  300 TSM:INIT
                  300 TSF:WUR:MS=0
                  301 TSM:INIT:TSP OK
                  301 TSM:INIT:STATID=43
                  301 TSF:SID:OK,ID=43
                  301 TSM:FPAR
                  7502 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  9503 !TSM:FPAR:NO REPLY
                  9503 TSM:FPAR
                  16703 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  18704 !TSM:FPAR:NO REPLY
                  18704 TSM:FPAR
                  25904 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  27905 !TSM:FPAR:NO REPLY
                  27905 TSM:FPAR
                  35105 TSF:MSG:SEND,43-43-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  37106 !TSM:FPAR:FAIL
                  37106 TSM:FAIL:CNT=1
                  37106 TSM:FAIL:DIS
                  37106 TSF:TDI:TSL
                  47107 TSM:FAIL:RE-INIT
                  47107 TSM:INIT
                  47157 !TSM:INIT:TSP FAIL
                  47157 TSM:FAIL:CNT=2
                  47157 TSM:FAIL:DIS
                  47157 TSF:TDI:TSL
                  57158 TSM:FAIL:RE-INIT
                  57158 TSM:INIT
                  57208 !TSM:INIT:TSP FAIL
                  57208 TSM:FAIL:CNT=3
                  57208 TSM:FAIL:DIS
                  57208 TSF:TDI:TSL
                  67209 TSM:FAIL:RE-INIT
                  67209 TSM:INIT
                  67259 !TSM:INIT:TSP FAIL
                  67259 TSM:FAIL:CNT=4
                  67259 TSM:FAIL:DIS
                  67259 TSF:TDI:TSL
                  77260 TSM:FAIL:RE-INIT
                  77260 TSM:INIT
                  77310 !TSM:INIT:TSP FAIL
                  77310 TSM:FAIL:CNT=5
                  77310 TSM:FAIL:DIS
                  77310 TSF:TDI:TSL
                  87311 TSM:FAIL:RE-INIT
                  87311 TSM:INIT
                  87361 !TSM:INIT:TSP FAIL
                  87361 TSM:FAIL:CNT=6
                  87361 TSM:FAIL:DIS
                  87361 TSF:TDI:TSL
                  97362 TSM:FAIL:RE-INIT
                  97362 TSM:INIT
                  97412 !TSM:INIT:TSP FAIL
                  97412 TSM:FAIL:CNT=7
                  97412 TSM:FAIL:DIS
                  97412 TSF:TDI:TSL
                  
                  

                  The sketch for this log is below

                  // Enable debug prints
                  #define MY_DEBUG
                  #define   MY_DEBUG_VERBOSE_RFM69
                  //#define MY_DEBUG_VERBOSE_SIGNING
                  //#define MY_SIGNING_SOFT
                  //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
                  //#define MY_SIGNING_REQUEST_SIGNATURES
                  #define   MY_SPLASH_SCREEN_DISABLED
                  //#define   MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
                  //#define MY_TRANSPORT_WAIT_READY_MS 5000
                  // Enable and select radio type attached
                  //#define MY_REPEATER_FEATURE
                  #define MY_RADIO_RFM69
                  #define MY_RFM69_FREQUENCY RFM69_433MHZ // Set your frequency here
                  #define MY_RFM69_MAX_POWER_LEVEL_DBM (13)   // max. TX power 10dBm = 10mW
                  #define   MY_RFM69_TX_POWER_DBM (13)
                  #define MY_IS_RFM69HW // Omit if your RFM is not "H"
                  #define   MY_RFM69_IRQ_PIN  2
                  #define   MY_RFM69_IRQ_NUM   digitalPinToInterrupt(MY_RFM69_IRQ_PIN)
                  #define   MY_RFM69_CS_PIN 10 // NSS. Use MY_RF69_SPI_CS for older versions (before 2.2.0)
                  //#define MY_RFM69_ENABLE_ENCRYPTION
                  //#define MY_RFM69_NETWORKID 100  // Default is 100 in lib. Uncomment it and set your preferred network id if needed
                  #define MY_NODE_ID 43
                  
                  //#include <MyConfig.h>
                  //#include <Filter.h>
                  #include <MySensors.h>
                  //#include <TimeLib.h> 
                         
                  
                  
                  //#include <Bounce2.h>
                  //#include <avr/wdt.h>
                  //#include <Vcc.h>
                  
                  
                  #define VCC_MIN 3.0
                  #define VCC_MAX 4.25
                  //Vcc vcc;
                  
                  
                  int rawbatteryLevel = 0;
                  int prevbatterylevel=0;
                  int scaledbatterylevel = 0;
                  uint8_t batP = 100;
                  float batV = 3.250;
                  int oldBatteryPcnt = 0;
                  const float BatVccMin   = 3000;           // Minimum expected Battery Vcc level, in Volts.
                  const float BatVccMax   = 4250;        // Maximum expected BatteryVcc level, in Volts.
                  const int MaxBattCount = 1023;
                  const float BatVccCorrection = 4.15 / 4.18; // Measured Battery Vcc by multimeter divided by reported Vcc
                  
                  
                  
                  
                  #define CHILD_ID_PRESENCE 4
                  #define CHILD_ID_RX_RSSI 5
                  #define CHILD_ID_BATVCC 6
                  
                  
                  int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
                  
                  const int PresenceDetect = 3; 
                  
                  const long interval = 20000;   
                  
                  unsigned long previousMillis,previousrelayMillis,previouprescence= 0;
                  unsigned long debouncetime =0;
                  
                  bool  myprescenceDetected = 0;
                  
                  bool Relaystate = 0;
                  bool uplinkAvailable = true;
                  bool requestState;
                  bool firstStart = true;
                  
                  
                  
                  unsigned long MYsleepTime = 3600000;//SLEEP_SEC*1000 * SLEEP_MINS * 60  ; //period_t is an enum type defined in the LowPower library (LowPower.h)
                  
                  int sleepcnt =0;
                  volatile long currenttime = 0;
                  volatile long temptime = 0;
                  //long lightLevel = 0;
                  
                  // Initialize  message
                  
                  
                  
                  MyMessage msgPrescenceDetect(CHILD_ID_PRESENCE, V_TRIPPED);
                  MyMessage msgRxRSSI(CHILD_ID_RX_RSSI, V_LEVEL);
                  MyMessage msgVcc(CHILD_ID_BATVCC, V_VOLTAGE);
                  
                  
                  void setup() {  // put your setup code here, to run once:
                  //pinMode (MY_RFM69_IRQ_PIN, INPUT_PULLUP);
                  
                   // pinMode(PresenceDetect, INPUT);      // interruptPin
                   // pinMode(2, INPUT_PULLUP);      // interruptPin2
                  //  EIFR = (1<<INTF0) | (1<<INTF1);// prevent initial trigger, clear interrupt
                  //  wait(100);
                  //  EIFR = (1<<INTF0) | (1<<INTF1);
                  //  attachInterrupt(digitalPinToInterrupt(PresenceDetect), prescenceDetected, RISING);
                  
                   //wdt_disable(); // Might be redundant as the bootloader should have done this already
                  
                  analogReference(INTERNAL);
                       
                   }//end setup
                  
                  void presentation() {
                    // Send the sketch version information to the gateway and Controller
                    sendSketchInfo("test Node", "1.0.0");
                  
                  
                    // Register all sensors to gw (they will be created as child devices)
                   //   present(CHILD_ID_LIGHTLEVEL, S_LIGHT_LEVEL,"LIGHT_LEVEL",true);
                   //     wait(250);
                      present(CHILD_ID_RX_RSSI, S_SOUND, "Motion RX RSSI",true);
                        wait(1000);
                        present(CHILD_ID_PRESENCE, S_MOTION, "Prescence", true);
                         wait(250);
                         present(CHILD_ID_BATVCC, S_MULTIMETER, "Motion Battery V");
                    
                  }//end presentation
                  
                  
                  
                  
                  void loop() { // put your main code here, to run repeatedly:
                  
                  
                      // Read digital motion value
                      wait(50);// wait a bit, then read in level, avoid spurious noise as PIR holds high state for 27sec
                      bool Motion = digitalRead(PresenceDetect) == HIGH;
                  
                      Serial.print("Motion ");
                      Serial.println(Motion);
                      send(msgPrescenceDetect.set(Motion?"1":"0"));  // Send tripped value to gw
                  
                      // get the battery Voltage
                      
                  
                  if(Motion == 0){
                    wait(5);
                    rawbatteryLevel = analogRead(BATTERY_SENSE_PIN);// 
                    if(prevbatterylevel != rawbatteryLevel){
                  
                    wait(5);
                  
                      long tempV=0;
                      for(int i=1;i<=50;i++){
                        wait(5);
                        rawbatteryLevel = analogRead(BATTERY_SENSE_PIN);// 
                        tempV=tempV + rawbatteryLevel;
                      }
                        rawbatteryLevel = tempV/50;
                        prevbatterylevel = rawbatteryLevel;
                    
                        float scaledbatterylevel =  map(rawbatteryLevel,0,MaxBattCount,0,BatVccMax );// changed it to milivolts
                        float batV = scaledbatterylevel /(1000); // Battery voltage
                        uint8_t batP = (((scaledbatterylevel - BatVccMin)*100)/(BatVccMax-BatVccMin)); //((input - min) * 100) / (max - min)
                  
                       
                        #ifdef MY_DEBUG
                                            Serial.print("RAWbatcount :");
                                                            Serial.println(rawbatteryLevel);
                                          Serial.print("batV :");
                                                            Serial.println(batV);
                                          Serial.print("batP :");
                                                            Serial.println(batP);
                        #endif
                        
                        wait(100);
                  
                               //  float volts = vcc.Read_Volts();
                                 send(msgVcc.set(batV,2),false);
                  
                                    if (oldBatteryPcnt != batP) {
                                        sendBatteryLevel(batP);
                                        oldBatteryPcnt = batP;
                                    }
                  
                       RX_SEND();
                    
                  }
                      
                    }
                    
                      Serial.println("Sleep 10000");
                  
                  sleep(10000);
                      Serial.println("Sleep infinit");
                     // EIFR = 1;// clear interrupts
                     // EIFR = 2;
                   //   EIFR = (1<<INTF0) | (1<<INTF1);// clear interrupts
                  //sleep(digitalPinToInterrupt(PresenceDetect), CHANGE, MYsleepTime);
                  
                  
                  
                  
                  }// end loop
                  
                  
                  
                  void receive(const MyMessage &message) {
                    // We only expect one type of message from controller. But we better check anyway.
                    if (message.isAck()) {
                       #ifdef MY_DEBUG
                       Serial.println("+Ack FMGW");
                       #endif
                    }
                    
                                          #ifdef MY_DEBUG
                                                 Serial.print("*InMsgty :");
                                                 Serial.print(message.type);
                                                 Serial.print(" MsgComd:");
                                                 Serial.print(message.getCommand());
                                                 Serial.print(" childID:");
                                                 Serial.print(message.sensor);
                                          
                                                 Serial.print(" Switch:");
                                                 Serial.println(message.getFloat());
                                          #endif
                                          
                  
                    if (message.type == V_STATUS || S_HEATER || V_LIGHT || V_HVAC_SETPOINT_HEAT || V_TEMP || S_HVAC) {
                  
                  
                         if (message.getCommand() == 2){// THIS PROCESSES THE CONTROLLERS EXPECTED STATE OF THE OUTPUT
                                         // put code here to be executed when the message is from a request
                                          #ifdef MY_DEBUG
                                                    Serial.print("REQ_Msg :");
                                                    Serial.print(message.type);
                                                    Serial.print(" MsgCmd:");
                                                    Serial.print(message.getCommand());
                                                    Serial.print(" childID:");
                                                    Serial.print(message.sensor);
                                                    Serial.print(" Switch:");
                                                    Serial.println(message.getBool());       
                                         #endif
                  
                                    switch (message.sensor) {// the child ID
                  
                                      case 1:
                                          
                                        break;
                                           case 6:
                                           
                    
                                            break;
                  
                                   
                  
                                                                  
                                             
                  
                                           
                                     } // end switch
                                                                          
                  
                  
                      
                        }// end msg=2
                  
                          if (message.getCommand() == 1){// THIS PROCESSES DIRECTED COMMANDS
                  
                            
                             #ifdef MY_DEBUG
                                                            Serial.print("*InMsgty :");
                                                            Serial.print(message.type);
                                                            Serial.print(" MsgComd:");
                                                            Serial.print(message.getCommand());
                                                            Serial.print(" childID:");
                                                            Serial.print(message.sensor);
                                          
                                                            Serial.print(" Switch:");
                                                            Serial.println(message.getBool());
                             #endif                 
                  
                           
                  
                  
                                    switch (message.sensor) {// the child ID
                  
                                      case 1:
                                          
                                            break;
                                            
                                           case 3:
                                           
                                            break;
                  
                                           case 6:
                                           
                  
                                            break;
                                          
                                                                         
                                           
                  
                                           
                                     } // end switch
                  
                  
                  
                                     
                            }// end if msg = 1
                  
                  
                      }// end msg type function
                  
                  }// end void loop
                  
                  
                  void prescenceDetected() { // action when interrupt button doesnt really do anyhing as edge triggered
                    currenttime = millis();
                    if ((currenttime - debouncetime) > 2000) {
                     myprescenceDetected = 1;
                  
                  
                    }
                    debouncetime = currenttime;
                  }
                  
                  
                  
                  void RX_SEND()
                  {
                  
                      send(msgRxRSSI.set(transportGetSignalReport(SR_RX_RSSI)));
                  
                  }  
                  
                  
                  
                  
                  
                  void sendBatteryReport() {
                   
                   // float p = vcc.Read_Perc(VCC_MIN, VCC_MAX, true);
                   // int batP = static_cast<int>(p);
                  #ifdef MY_DEBUG
                    Serial.print("Battery is: "); Serial.println("99");
                  #endif
                    sendBatteryLevel(99);
                  }
                  
                  /*
                  
                  // This is called when a new time value was received
                  void receiveTime(unsigned long controllerTime) {
                    // Ok, set incoming time 
                    #ifdef MY_DEBUG
                      Serial.print("Time value received: ");
                    #endif 
                  
                    if (controllerTime > 1525129200){
                   
                    setTime(controllerTime);  
                      #ifdef MY_DEBUG
                          Serial.print("Time value valid: "); 
                            Serial.println(controllerTime);
                     #endif
                  
                   // RTC.set(controllerTime); // this sets the RTC to the time from controller - which we do want periodically
                    timeReceived = true;
                    
                    #ifdef MY_DEBUG
                                           
                           
                    Serial.print(hour());
                    Serial.print(" ");
                    Serial.print(minute());
                    Serial.print(" ");
                    Serial.print(second());
                    Serial.print(" ");
                    Serial.print(day());
                    Serial.print(" ");
                    Serial.print(month());
                    Serial.print(" ");
                    Serial.print(year()); 
                    Serial.println(); 
                  
                     #endif
                   }
                    
                  }
                  */
                  

                  one thing of interest is that after the point or re-init it fails.
                  Should the Reset be connected for this? I see that a comment is made on the Radio hardware build page, that
                  "* Adafruit modules need RST connected to GND, or to MY_RFM69_RST_PIN"
                  Ill try that in a while.
                  I also tried the#define TEENSYDUINO, just in case, but this failed to compile as a re- definition, so that is being set.

                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    Nigel31
                    wrote on last edited by Nigel31
                    #9

                    Hi,

                    Well progress, and questions !

                    When I started this with the Teensy3.2, I used a RFM69CW (smaller pcb) device, and ran into the problems as detailed above.
                    As part of the troubleshooting, I part assembled a "EASY PCB" which I have, to enable, hopefully proving a different radio module (RFM69HW) which is my normal radio module, and attempt to "tight fit" a Pro mini to header pins on the board, to "prove" the radio. This was sucessful, as mentioned above. Using this proven radio / assembly, I removed the Pro Mini, and jumpered to the Teensy with dupont cables, which got the radio "working" in the sense that the transport succeeded, it just couldn't find the parent / gateway.
                    I mentioned above the possibility of connecting the reset pin, as I had the origional bare RFM69CW already to go, I soldered another wire to the reset pad, and utilised this at the radio, commenting out the #define MY_IS_RFM69HW .
                    and adding the #define MY_RFM69_RST_PIN 9 .

                    I uploaded this, and it found, and presented to the GW / Controller.
                    BUT subsequent messages were met with "!MCO:SND:NODE NOT REG"
                    as in the log below

                    300 MCO:BGN:INIT NODE,CP=RRNNT---,VER=2.2.0
                    300 TSM:INIT
                    300 TSF:WUR:MS=0
                    301 TSM:INIT:TSP OK
                    301 TSM:INIT:STATID=44
                    301 TSF:SID:OK,ID=44
                    301 TSM:FPAR
                    1529 TSF:MSG:SEND,44-44-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    1547 TSF:MSG:READ,0-0-44,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                    1547 TSF:MSG:FPAR OK,ID=0,D=1
                    3530 TSM:FPAR:OK
                    3530 TSM:ID
                    3530 TSM:ID:OK
                    3530 TSM:UPL
                    3536 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                    3747 TSF:MSG:READ,0-0-44,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                    3747 TSF:MSG:PONG RECV,HP=1
                    3747 TSM:UPL:OK
                    3747 TSM:READY:ID=44,PAR=0,DIS=1
                    4774 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                    4985 TSF:MSG:READ,0-0-44,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    6218 !TSF:MSG:SEND,44-44-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=NACK:2.2.0
                    6234 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=OK:0
                    6459 TSF:MSG:READ,0-0-44,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                    7492 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=11,pt=0,l=9,sg=0,ft=0,st=OK:test Node
                    7502 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=12,pt=0,l=5,sg=0,ft=0,st=OK:1.0.0
                    7515 TSF:MSG:SEND,44-44-0-0,s=5,c=0,t=33,pt=0,l=14,sg=0,ft=0,st=OK:Motion RX RSSI
                    7729 TSF:MSG:READ,0-0-44,s=5,c=0,t=33,pt=0,l=14,sg=0:Motion RX RSS
                    7729 TSF:MSG:ACK
                    +Ack FMGW
                    
                    *InMsgty :33 MsgComd:0 childID:5 Switch:0.00
                    
                    7936 TSF:MSG:READ,0-0-44,s=5,c=0,t=33,pt=0,l=14,sg=0:Motion RX RSS
                    7936 TSF:MSG:ACK
                    +Ack FMGW
                    
                    *InMsgty :33 MsgComd:0 childID:5 Switch:0.00
                    
                    8141 TSF:MSG:READ,0-0-44,s=5,c=0,t=33,pt=0,l=14,sg=0:Motion RX RSS
                    8141 TSF:MSG:ACK
                    +Ack FMGW
                    
                    *InMsgty :33 MsgComd:0 childID:5 Switch:0.00
                    
                    8344 TSF:MSG:READ,0-0-44,s=5,c=0,t=33,pt=0,l=14,sg=0:Motion RX RSS
                    8345 TSF:MSG:ACK
                    +Ack FMGW
                    
                    *InMsgty :33 MsgComd:0 childID:5 Switch:0.00
                    
                    8937 TSF:MSG:SEND,44-44-0-0,s=4,c=0,t=1,pt=0,l=9,sg=0,ft=0,st=OK:Prescence
                    9149 TSF:MSG:READ,0-0-44,s=4,c=0,t=1,pt=0,l=9,sg=0:Prescenc
                    9149 TSF:MSG:ACK
                    +Ack FMGW
                    
                    *InMsgty :1 MsgComd:0 childID:4 Switch:0.00
                    
                    10225 TSF:MSG:SEND,44-44-0-0,s=6,c=0,t=30,pt=0,l=16,sg=0,ft=0,st=OK:Motion Battery V
                    10226 MCO:REG:REQ
                    10234 TSF:MSG:SEND,44-44-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                    10444 TSF:MSG:READ,0-0-44,s=255,c=3,t=27,pt=1,l=1,sg=0:0
                    10444 MCO:PIM:NODE REG=0
                    10445 MCO:BGN:STP
                    10445 MCO:BGN:INIT OK,TSP=1
                    Motion 0
                    
                    10495 !MCO:SND:NODE NOT REG
                    10647 TSF:MSG:READ,0-0-44,s=255,c=3,t=27,pt=1,l=1,sg=0:0
                    10647 MCO:PIM:NODE REG=0
                    RAWbatcount :179
                    
                    batV :0.74
                    
                    batP :0
                    
                    10850 TSF:MSG:READ,0-0-44,s=255,c=3,t=27,pt=1,l=1,sg=0:0
                    10850 MCO:PIM:NODE REG=0
                    10857 !MCO:SND:NODE NOT REG
                    10857 !MCO:SND:NODE NOT REG
                    wait 10000
                    
                    11258 TSF:MSG:READ,0-0-44,s=255,c=3,t=27,pt=1,l=1,sg=0:0
                    11258 MCO:PIM:NODE REG=0
                    
                    

                    Progress of a sort. I noticed however that in the Controller, each child presentation, including the MYSENSORS version was missing the last character. I have seen this sort of thing in entirely different situations with serial coms, baud rates mismatching slightly (due to processor speed dividing ratios), and I knew that out of the box, the teensy runs overclocked at 96Mhz, so I changed the speed of the processor, to 72Mhz, and uploaded, had the same results, Then I selected 48Mhz, and uploaded again, and Eureka, it all works.

                    So in summary, I have wired in the Reset Pad to (in my case) Pin 9, and slowed the Processor to 48Mhz, and all is working.

                    AFTER this, I have simplified the sketch, to be a incrementing count, in a txt field.
                    Sketch as is NOW, but AFTER it was working

                    // Enable debug prints
                    #define MY_DEBUG
                    #define   MY_DEBUG_VERBOSE_RFM69
                    //#define MY_DEBUG_VERBOSE_SIGNING
                    //#define MY_SIGNING_SOFT
                    //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
                    //#define MY_SIGNING_REQUEST_SIGNATURES
                    #define   MY_SPLASH_SCREEN_DISABLED
                    //#define   MY_DISABLE_RAM_ROUTING_TABLE_FEATURE
                    //#define MY_TRANSPORT_WAIT_READY_MS 5000
                    // Enable and select radio type attached
                    //#define MY_REPEATER_FEATURE
                    #define MY_RADIO_RFM69
                    #define MY_RFM69_FREQUENCY RFM69_433MHZ // Set your frequency here
                    #define MY_RFM69_MAX_POWER_LEVEL_DBM (14)   // max. TX power 10dBm = 10mW
                    #define   MY_RFM69_TX_POWER_DBM (14)
                    //#define MY_IS_RFM69HW // Omit if your RFM is not "H"
                    #define   MY_RFM69_IRQ_PIN  2
                    #define   MY_RFM69_IRQ_NUM   digitalPinToInterrupt(MY_RFM69_IRQ_PIN)
                    #define   MY_RFM69_CS_PIN 10 // NSS. Use MY_RF69_SPI_CS for older versions (before 2.2.0)
                    #define   MY_RFM69_RST_PIN 9 // try reset pin
                    
                    //#define MY_RFM69_ENABLE_ENCRYPTION
                    //#define MY_RFM69_NETWORKID 100  // Default is 100 in lib. Uncomment it and set your preferred network id if needed
                    #define MY_NODE_ID 45
                    
                    //#include <MyConfig.h>
                    
                    #include <MySensors.h>
                    
                    long counter = 0;
                    
                    #define CHILD_ID_RX_RSSI 5
                    
                    #define CHILD_ID_TEXT1 7
                    
                    
                    
                    
                    
                    // Initialize  message
                    
                    
                    
                    MyMessage msgRxRSSI(CHILD_ID_RX_RSSI, V_LEVEL);
                    
                    MyMessage msgText(CHILD_ID_TEXT1, V_TEXT);
                    
                    
                    void setup() {  // put your setup code here, to run once:
                    
                    
                    analogReference(INTERNAL);
                         
                     }//end setup
                    
                    void presentation() {
                      // Send the sketch version information to the gateway and Controller
                      sendSketchInfo("test Node", "1.0.1");
                    
                        present(CHILD_ID_RX_RSSI, S_SOUND, "Motion RX RSSI",true);
                           wait(250);
                           present(CHILD_ID_TEXT1, S_INFO,"UpdateTxt",false);
                      
                    }//end presentation
                    
                    
                    
                    
                    void loop() { // put your main code here, to run repeatedly:
                    
                    counter++;
                     send(msgText.set(counter), false);
                    
                        wait(10000);// wait a bit, then read in level, avoid spurious noise as PIR holds high state for 27sec
                    
                         RX_SEND();
                         wait(10000);
                    
                    }// end loop
                    
                    
                    void RX_SEND()
                    {
                    
                        send(msgRxRSSI.set(transportGetSignalReport(SR_RX_RSSI)));
                    
                    }  
                    
                    
                    

                    Log NOW

                    300 MCO:BGN:INIT NODE,CP=RRNNT---,VER=2.2.0
                    300 TSM:INIT
                    300 TSF:WUR:MS=0
                    300 TSM:INIT:TSP OK
                    300 TSM:INIT:STATID=45
                    300 TSF:SID:OK,ID=45
                    300 TSM:FPAR
                    1520 TSF:MSG:SEND,45-45-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    1604 TSF:MSG:READ,0-0-45,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                    1604 TSF:MSG:FPAR OK,ID=0,D=1
                    3521 TSM:FPAR:OK
                    3521 TSM:ID
                    3521 TSM:ID:OK
                    3521 TSM:UPL
                    3527 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                    3739 TSF:MSG:READ,0-0-45,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                    3739 TSF:MSG:PONG RECV,HP=1
                    3739 TSM:UPL:OK
                    3739 TSM:READY:ID=45,PAR=0,DIS=1
                    3759 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                    3968 TSF:MSG:READ,0-0-45,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    3983 TSF:MSG:SEND,45-45-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.2.0
                    3994 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                    4024 TSF:MSG:READ,0-0-45,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                    4050 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=11,pt=0,l=9,sg=0,ft=0,st=OK:test Node
                    4066 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=12,pt=0,l=5,sg=0,ft=0,st=OK:1.0.1
                    4081 TSF:MSG:SEND,45-45-0-0,s=5,c=0,t=33,pt=0,l=14,sg=0,ft=0,st=OK:Motion RX RSSI
                    4294 TSF:MSG:READ,0-0-45,s=5,c=0,t=33,pt=0,l=14,sg=0:Motion RX RSSI
                    4295 TSF:MSG:ACK
                    4338 TSF:MSG:SEND,45-45-0-0,s=7,c=0,t=36,pt=0,l=9,sg=0,ft=0,st=OK:UpdateTxt
                    4338 MCO:REG:REQ
                    4346 TSF:MSG:SEND,45-45-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                    4555 TSF:MSG:READ,0-0-45,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                    4555 MCO:PIM:NODE REG=1
                    4555 MCO:BGN:STP
                    4555 MCO:BGN:INIT OK,TSP=1
                    4577 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:1
                    14583 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    24589 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:2
                    34595 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    44601 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:3
                    54607 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    64613 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:4
                    74619 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    84625 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:5
                    94631 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    106058 !TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=NACK:6
                    115278 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    115278 TSF:MSG:BC
                    115482 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    115482 TSF:MSG:BC
                    115685 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    115686 TSF:MSG:BC
                    115889 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    115889 TSF:MSG:BC
                    116673 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=1,st=OK:0
                    118528 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    118528 TSF:MSG:BC
                    118731 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    118731 TSF:MSG:BC
                    118934 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    118934 TSF:MSG:BC
                    119138 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    119139 TSF:MSG:BC
                    119342 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    119342 TSF:MSG:BC
                    119545 TSF:MSG:READ,7-7-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                    119545 TSF:MSG:BC
                    126679 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:7
                    136690 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    147104 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:8
                    157111 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    167117 TSF:MSG:SEND,45-45-0-0,s=7,c=1,t=47,pt=4,l=4,sg=0,ft=0,st=OK:9
                    177123 TSF:MSG:SEND,45-45-0-0,s=5,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=OK:0
                    
                    

                    Has anyone had to reduce the Processor speed to make Teensy 3.2 Work previously?

                    Any thoughts gratefully received.

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    16

                    Online

                    11.7k

                    Users

                    11.2k

                    Topics

                    113.1k

                    Posts


                    Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • MySensors
                    • OpenHardware.io
                    • Categories
                    • Recent
                    • Tags
                    • Popular