I think you can assume that you can reliably count edges of your 10 MHz external clock. If your TXCO is 10 MHz, and you set your match value in the range 1000 to 10000, you will get interrupts that are nominally 100 us...
I can understand the desire to have timers with callbacks, but it sounds like you may not have all of the necessary logic to stop/start/reset those timers when events occur, such as pushing a button. The timers are nice...
The default clock frequency for T4.x GPT and PIT timers in TeensyTimerTool is 24 MHz, so max period in 32 bits is (2^32)/24e6 = 178.95697 seconds. There are both 32- and 64-bit software-based timers (TCK). At 64 bits,...
You can set the CPU Frequency from the Tools menu of Arduino IDE. Nominal frequency for T3.6 is 180 MHz. For the T4.1, the closest setting is 150 MHz, so you could try that. Do your PID loops run at a fixed frequency...
Yes, the decimal part is discarded when converting the float result to an integer, but 0.5 is added. The modulo value will be <= 64434 as long as 150M/Freq < 65534.5
millis() provides 1 ms accuracy. If you want to test the accuracy of IntervalTimer, read the ARM cycle counter in your callback function, compute the difference between cycle count values, and then convert the...
elapsedMillis uses millis(), and millis() simply returns systick_count, which is updated in the ISR for the ARM SysTick timer. The Teensy4 systick_isr() from EventResponder.cpp and millis() from core_pins.h are shown...
Searched the forum for "usb 12mbit" and found this thread
https://forum.pjrc.com/threads/68347-USB-Output-Force-12mbit-and-change-bPacketSize?highlight=usb+12mbit
Thanks for pointing out that VM/VS uses what has already been installed for Arduino. I find that much preferable to the PlatformIO approach, and I'll try it again.
I've tried PlatformIO a couple of times, but ended up going back to Arduino. Arduino has lots of issues, but I do understand how to install it and maintain it. Can you explain where in the PlatformIO process was...
You say you looked at this? According to FrankB, it works.
https://forum.pjrc.com/threads/48430-Program-Teensy-from-another-Teensy?p=289237&viewfull=1#post289237
I recommend installing direct from SD rather than via a second T4.1. You need to take what you need from FlasherX and integrate it into your own application. It’s or a plug and play solution.
A few have people have done what you want via "FlasherX" discussed in the thread below.
https://forum.pjrc.com/threads/43165-Over-the-Air-firmware-updates-changes-for-flashing-Teensy-3-5-amp-3-6
The latest release...
Check the source. Think there might be only two. Is there any relationship between the 4 frequencies that would allow one time to support more than one frequency?
It's part of the Teensy4 core, not a library (see cores\Teensy4\IntervalTimer.cpp). It's a 32-bit timer, and it has a maximum interval of more than 178 sec.
I'm having a hard time imagining what is your objective. Can you say more about what you're trying to do, and why you need nanosecond precision? You may be able to get the 3 x 16-bit timer method to work with the method...
Have you tried IntervalTimer, as shown below? It supports a maximum interval of about 178 seconds, so it seems to work fine at 60 seconds. To ensure minimum delay I've shown how to set to highest priority, but you have...
Do you mean that you want to get an interrupt when the timers each have a specific value, such as T0=X, T1=Y, T2=Z? I don't think there is a way to do that.
Can you say more about what you're trying to do? If you...
ARM processors have a running counter of clock cycles. For T4.x, all you have to do is read ARM_DWT_CYCCNT. Here is an example program that shows how to use it. Cycles are converted to nanoseconds using macro F_CPU,...
The existing code does use the "full not-quite-16-bit" range if the specified frequency allows. What happens is that if the computed modulo is > 65534, the prescaler is incremented and the modulo is divided by 2, so the...
Okay, that's helpful. The smaller value (2288.82) results in a "modulo" value of 65536, which is too large for the 16-bit counter, so the prescaler is incremented by 1, and the modulo value is divided by 2, to 32768,...
and from your cross-post
The Teensy 4.x PWM code is in cores/Teensy4/pwm.c. The functions for Flex or Quad timer get called as a function of the chosen pin. The code intends to support 16 bits, and I can't see a...
Yes, I saw that, but it seems to limit the results to an arbitrary (and relatively small) number of posts, so it's not very useful for looking at history for someone who posts frequently.
When I search for ClickEncoder library, I find quite a few, and I don't see any that support Teensy. Which one are you using and are you sure it supports Teensy? Also, with Teensy, you may want to move from TimerOne to...
Yes, that's right, and hopefully you won't have to disable interrupts.
Yes, that's my thinking, but it may not be as simple as that.
There's a lot of good information on this forum. It takes some practice...
The interrupt would occur after you re-enable interrupts.
The page you linked says...
... so it sounds like 1-byte variables are okay. I may be corrected by one of the more senior members, but I would...
Are you using Teensy's Encoder library, or some other Arduino library? I don't see a file named ClickEncoder.h anywhere in the TeensyDuino installation. Anyway, that's the first error that I run into when I try to...
I had no internet the last two days, so just able to respond now. Are you saying that the same FlasherX code was used before and after the changes to your own code? I think that's what you're saying, so I have to agree...
I don't think you want to read "continuously" (read multiple times). You want to read chan 1/2 once, then read channel 3/4 once, then back to 1/2, 3/4, etc. Reading continuously means starting the ADC and having it do...
I'm doing something similar to what you want to do with a T3.5, which I'll get to below. First, regarding your example code, read "continuous" means start once, and then read many times. You don't want to start...
Without looking at the library itself, I would say the line below in the table at the top of your program indicates the default pin usage for T4.1. There is no line for T4.0, so you might have to add support for T4.0...
What OS are you using means are you developing on Windows, Mac, Linux?? It's unlikely that anyone is going to watch a youtube video to figure out what went wrong. Suggest you uninstall everything and start over. Install...
Maybe others will give their opinion, but I'll try to answer. Arduino makes it easy for the beginner to get started. You can buy a board and immediately write programs, with little or no knowledge of what is going on...
Teensy is a great product, with exceptionally good software and the best support forum/community. If you decide to try to do something with your T4.1, you'll find good resources here.
You haven’t really said what is your speed requirement. It seems to just be “faster”. You might be on your own with FlexIO. You could try transfer32() or multiple SPI.
T4.1 digital output signals are 3.3V, so a PWM signal is switching between ~0 and ~3.3V. What your meter shows will be a function of how it averages, but if you connect that PWM to something else (your controller), it...
In order to generate an analog voltage, you need a DAC output, which Teensy 4.x does not have. When you use AnalogWrite() on a digital pin, you are creating a PWM signal. The 2nd argument to the analogWrite() is the...
Teensy 4.x also has transfer16() and transfer32(). If you can do each DAC with a single 32-bit transfer, that should be a significant improvement over individual 8-bit transfers, even without DMA.
You should try with your T4.0, since FreqCount takes a gate interval in microseconds for T4.x. See the FreqCount library examples Serial_Output (T3) and Serial_Output_T4 in TeensyDuino.
HID is part of the USB specification. There are people on this forum, Paul and others, who know a lot about USB and HID, so if you go that direction or CAN, you should be able to get help here. I thought of CAN because...
I did some googling about electronic drums to see how they work, and I still don't know much, but it looks like you have done a lot of good work on the project. If you haven't already put multiple drums together, it...
Yes, as far as I know it's okay to do that. I'm not sure of the terminology with respect to read, but my understanding is the processor "translates" accesses to QSPI flash or RAM into the proper QSPI transactions and...
With Ethernet you have a CRC on every packet, so if you verify that packets received = packets sent, that's pretty good. A cumulative CRC would be better. Regarding verification after Flash, the first step is does it...
What changed with Bootloader 1.07 is what is erased by the bootloader. See the section labeled Minimum Erase Size on this page (https://www.pjrc.com/teensy/td_code_security.html). If you are using EEPROM, you need to...
Okay, yes, I never updated FlasherX after Paul released Bootloader 1.07, and now that more folks are using LittleFS in program flash, I do need to do that. Could be a little while, but I'll get going on it.
If your...
I think this will be hard to do with PWM, and using an IntervalTimer won't meet your accuracy requirements, so it may not be the only solution, but I think I can outline something that will work. Every timer has two...
I'm not sure why you say you have a library problem. TeensyDuino 1.57b1 is available, but I think you're okay with 1.56. Here is the declaration of the printConfig() function. The argument is a pointer to a structure of...
I remember being very confused when I first started trying to use QuadEncoder. The HOLD registers are simply a "snapshot" of what was in various registers at the time that a read() was executed. This is done in hardware...
My applications don't have a HOME signal, but I think the basic idea is that you have a HOME switch on your machine, and that is input to the Teensy pin defined as the QDC HOME input. That switch defines an absolute...
I recommend reading the Quad Decoder (QDC) section of the processor reference manual. This will provide some background when looking at the library source and examples. It looks like the HOME signal can be used to...
Do you mean a different duty cycle? Can you define the two signals you need, and in what sense they need to be synchronized?
Edit: I see now you provided that info in the first post. I would follow the subsequent...
Perhaps not true for any two arbitrary pins, but possibly true for two pins on the same FlexPWM module, such as 7/8, 6/9, 28/29, 2/3. For reference see link below.
https://www.pjrc.com/store/teensy40.html#timing
Next step I would say is to show your wiring, provide info on the specific display, and specify your Arduino and TeensyDuino versions. If not the latest, that's always a good step to take so that others can replicate...
Paul, I have a question about calling yield() from the various "available" functions. These functions don't fit the pattern of calling yield() while waiting for something in hardware to finish, and I think therefore...