You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Error trying to build SpeedTest.ino on Teensy 4.1 in Arduino 1.8.19: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile unsigned char*' in initialization
#78
When I try to build the speedTest.ino example I get the following error.
error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile unsigned char*' in initialization
#define portOutputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 0))**
More detail below.
Steps To Reproduce Problem
Install Arduino 1.8.19 and Teensyduino Version 1.56, on Windows 10 pro and attempt to build the SpeedTest.ino example under Teensy4.1>Encoder
Hardware & Software
Board
Teensy 4.1
Arduino IDE version
1.8.19
Teensyduino version (if using Teensy)
Version 1.56 for windows 7 and up (downloaded from teensyduino website today 3/22/2022)
Version info & package name (from Tools > Boards > Board Manager)
Teensy 4.1
Operating system & version
Windows 10 pro
Any other software or hardware?
Arduino Sketch
Using the included encoder>speedtest.ino
/* Encoder Library - SpeedTest - for measuring maximum Encoder speed * http://www.pjrc.com/teensy/td_libs_Encoder.html * * This example code is in the public domain.*/// This SpeedTest example provides a simple way to verify how much// CPU time Encoder is consuming. Connect a DC voltmeter to the// output pin and measure the voltage while the encoder is stopped// or running at a very slow speed. Even though the pin is rapidly// pulsing, a DC voltmeter will show the average voltage. Due to// software timing, it will read a number much less than a steady// logic high, but this number will give you a baseline reading// for output with minimal interrupt overhead. Then increase the// encoder speed. The voltage will decrease as the processor spends// more time in Encoder's interrupt routines counting the pulses// and less time pulsing the output pin. When the voltage is// close to zero and will not decrease any farther, you have reached// the absolute speed limit. Or, if using a mechanical system where// you reach a speed limit imposed by your motors or other hardware,// the amount this voltage has decreased, compared to the baseline,// should give you a good approximation of the portion of available// CPU time Encoder is consuming at your maximum speed.// Encoder requires low latency interrupt response. Available CPU// time does NOT necessarily prove or guarantee correct performance.// If another library, like NewSoftSerial, is disabling interrupts// for lengthy periods of time, Encoder can be prevented from// properly counting the intput signals while interrupt are disabled.// This optional setting causes Encoder to use more optimized code,// but the downside is a conflict if any other part of your sketch// or any other library you're using requires attachInterrupt().// It must be defined before Encoder.h is included.//#define ENCODER_OPTIMIZE_INTERRUPTS
#include<Encoder.h>
#include"pins_arduino.h"// Change these two numbers to the pins connected to your encoder// or shift register circuit which emulates a quadrature encoder// case 1: both pins are interrupts// case 2: only first pin used as interrupt
Encoder myEnc(5, 6);
// Connect a DC voltmeter to this pin.constint outputPin = 12;
/* This simple circuit, using a Dual Flip-Flop chip, can emulate quadrature encoder signals. The clock can come from a fancy function generator or a cheap 555 timer chip. The clock frequency can be measured with another board running FreqCount http://www.pjrc.com/teensy/td_libs_FreqCount.html +5V | Quadrature Encoder Signal Emulator Clock | Input o----*-------------------------- ---------------------------o Output1 | |14 | | | _______|_______ | | _______________ | | CD4013 | | | | CD4013 | | 5 | | 1 | | 9 | | 13 ---------| D Q |-----|----*----| D Q |------o Output2 | | | | | | | | | 3 | | | 11 | | | ----|> Clk | ---------|> Clk | | | | | | | 6 | | 8 | | | ----| S | ----| S | | | | | | | | | | 4 | _ | 2 | 10 | _ | 12 | *----| R Q |--- *----| R Q |---- | | | | | | | | | | |_______________| | |_______________| | | | | | | | | | 7 | | | | | | | -------------------------------------------------------------- | | | | | | ----- ----- ----- --- --- --- - - -*/voidsetup() {
pinMode(outputPin, OUTPUT);
}
#if defined(__AVR__) || defined(TEENSYDUINO)
#defineREGTYPEunsignedchar
#else
#defineREGTYPEunsignedlong
#endifvoidloop() {
volatileint count = 0;
volatile REGTYPE *reg = portOutputRegister(digitalPinToPort(outputPin));
REGTYPE mask = digitalPinToBitMask(outputPin);
while (1) {
myEnc.read(); // Read the encoder while interrupts are enabled.noInterrupts();
*reg |= mask; // Pulse the pin high, while interrupts are disabled.
count = count + 1;
*reg &= ~mask;
interrupts();
}
}
Errors or Incorrect Output
Arduino: 1.8.19 Hourly Build 2019/02/04 10:33 (Windows 10), TD: 1.56, Board: "Teensy 4.1, Serial, 600 MHz, Faster, US English"
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/core_pins.h:33:0,
from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/wiring.h:39,
from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/WProgram.h:45,
from C:\Users\name\AppData\Local\Temp\arduino_build_426018\pch\Arduino.h:6:
SpeedTest: In function 'void loop()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/pins_arduino.h:149:75: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile unsigned char*' in initialization
#define portOutputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 0))
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.ino:101:27: note: in expansion of macro 'portOutputRegister'
volatile REGTYPE *reg = portOutputRegister(digitalPinToPort(outputPin));
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.pde: At global scope:
SpeedTest:46: error: redefinition of 'Encoder myEnc'
Encoder myEnc(5, 6);
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.ino:46:9: note: 'Encoder myEnc' previously declared here
Encoder myEnc(5, 6);
^
SpeedTest:49: error: redefinition of 'const int outputPin'
const int outputPin = 12;
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.ino:49:11: note: 'const int outputPin' previously defined here
const int outputPin = 12;
^
SpeedTest: In function 'void setup()':
SpeedTest:89: error: redefinition of 'void setup()'
void setup() {
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.ino:89:6: note: 'void setup()' previously defined here
void setup() {
^
SpeedTest: In function 'void loop()':
SpeedTest:99: error: redefinition of 'void loop()'
void loop() {
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.ino:99:6: note: 'void loop()' previously defined here
void loop() {
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/core_pins.h:33:0,
from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/wiring.h:39,
from C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/WProgram.h:45,
from C:\Users\name~1\AppData\Local\Temp\arduino_build_426018\pch\Arduino.h:6:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4/pins_arduino.h:149:75: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile unsigned char*' in initialization
#define portOutputRegister(pin) ((digital_pin_to_info_PGM[(pin)].reg + 0))
^
C:\Users\name~1\AppData\Local\Temp\arduino_modified_sketch_275677\SpeedTest.pde:101:27: note: in expansion of macro 'portOutputRegister'
volatile REGTYPE *reg = portOutputRegister(digitalPinToPort(outputPin));
^
redefinition of 'Encoder myEnc'
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
The text was updated successfully, but these errors were encountered:
Description
When I try to build the speedTest.ino example I get the following error.
More detail below.
Steps To Reproduce Problem
Install Arduino 1.8.19 and Teensyduino Version 1.56, on Windows 10 pro and attempt to build the SpeedTest.ino example under Teensy4.1>Encoder
Hardware & Software
Board
Teensy 4.1
Arduino IDE version
1.8.19
Teensyduino version (if using Teensy)
Version 1.56 for windows 7 and up (downloaded from teensyduino website today 3/22/2022)
Version info & package name (from Tools > Boards > Board Manager)
Teensy 4.1
Operating system & version
Windows 10 pro
Any other software or hardware?
Arduino Sketch
Using the included encoder>speedtest.ino
Errors or Incorrect Output
The text was updated successfully, but these errors were encountered: