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...
This is strange. Note that the big jump does not occur at the same switch position on the way down as on the way up. Instead it occurs on the 7th step in both directions. Seems like the hardware doesn't work in the way...
Please see this page on the PJRC website regarding library FreqCount. T3.x use pin 13, and T4.x uses pin 9. Library FreqMeasure is similar in that it supports only 1 pin per Teensy type. Depending on what you want to...
This question is an unusual one. The entire purpose of the TeensyDuino core and libraries is to access the power of the Teensy. Even if you want to write 100% of your own code, you seem to be under the impression that...
Here is a summary of your values. The first 5 values (109,203,299,392,490) are much closer to steps of 1/10 of the 1023 max than 1/9. That's why you don't get 1,2,3,4,5. After 490, there is big jump to 726, and then on...
Teensy 4.0 can do frequency counting, but it's a different processor, so the underlying code is different. Paul did a great job of maintaining pin compatibility, but that doesn't mean that all of the same features are...
It would be interesting to look at the actual values you are getting from readAnalog() by replacing the Serial.println(val) statement with:
Serial.printf( "%1hd %1hd\n", input, val );
Just to add to @defragster's answer, there is no "list" of code that runs before reaching your setup() function. If you want to review every line of code that runs before setup(), you can, but it's not as simple as...
In the code below, you are trying to allocate an array large enough to hold ALL of the samples, no matter how many there are. If your file is 7MB, then you are trying to allocate an array of size ~7MB, then read all of...
One more recommendation. When searching, start with Google. It's a much better search engine than the forum search tool. For example, if I was looking for information regarding Teensy and a particular part, such as A/D...
You could start at www.pjrc.com. That is where you will find a LOT of information on the Teensy boards, companion boards such as audio, TeensyDuino software and all of the libraries, tutorials, and much more. Choose a...
When you run the sketch, it tell you the time for 30000 samples. Yes, you have 30000 samples, but these are read in slightly less than 1 second, so your SPS (samples PER SECOND) is not 30000
SPS = 30000 samples /...
You're welcome. "SPS" is probably 30000, and this value must already be part of "ydata5". When the FFT is computed, you need to tell it the actual samples per second, which is 30005.25. Pseudo-code would look something...
Okay, good. Your 0 value is closer to 0 for the lower frequency sine wave because your time series offset is close to 0. You will ALWAYS have a non-zero value at 0 Hz if you have ANY offset, and there is almost always...
Yes, that's correct.
Can you please show a time series chart and FFT chart for a lower frequency, such as 50 or 100 Hz? I think you have a bias in the time series of the higher frequencies because the sample rate is...
Can you show the time series chart? The 0th element of the FFT is simply the mean value. If you have your function generator set up to produce a sine wave with 0 offset, the mean of your signal should be 0. If your mean...
On T4.1, I get total time of 999825 us for 30000 samples. That means sample rate = 30000/0.999825 = 30005.25
When you do your FFT, instead of specifying your sample rate as 30000 Hz, specify it as 30005.25 or...
With 30-kHz sampling of a 12-kHz sine wave, your raw data won't look like a sine wave (only 2.5 samples per period), but theoretically the FFT is okay up to sample freq / 2 = 15 kHz.
Here is another update, with a...
With the program above, I tested an input sine wave with frequency = 60 Hz, amplitude = 0.2 Vpp, and offset = 0 V. The data from the ADS1256 looks good. At 30 kSPS, the period of the sine wave is 500 samples, max = 0.1,...
Since you are getting a good sine wave with your own sketch, I decided to start from there. The code below has my changes to your sketch. There are only 3 functional changes, which are listed below. There are some other...
@frohr, I can only guess that your configuration of the ADS1256 is different from the program @mbilsky. Can you please tell us how you produce the sine wave for test, and what are the settings (frequency, amplitude,...
This is an interesting question. I haven't spent much time studying the ADS1256 data sheet, but the (settable) data rate, in this case 30kSPS must be derived from the on-board clock. 7.68M / 30000 = 256, so if you have...
Yes, it's also a pain to have to modify your laptop network settings. Here's a wifi extender that I use to avoid that trouble and connect the T4.1 on my desk to my network without running a long cable.
...
I can't answer that specific question, and the problem may be really simple, but I don't think you should expect examples written for Wiznet will work with just a change from "Ethernet.h" to "QNEthernet.h". If you...
I don't know how the A/D is clocked, or the accuracy of either the Teensy clock or the A/D clock, but you probably shouldn't expect to do any better unless you switch to clocking the samples with a signal from Teensy....
Assuming you are using T4.1, have you tried running any of shawn's QNEthernet examples? That would be a good starting point to be sure that your ethernet hardware/software is okay and the basics work, and then move on...
Have you looked at this page? https://mattbilsky.com/mediawiki/index.php?title=Teensy_and_the_ADS1256
And this github repository? https://github.com/mbilsky/TeensyADS1256
There is a video that shows how to...
For each sample, you have 5 calls to transfer() (8 bits each) for a total of 40 bits. With the SPI clock rate 1.95 MHz, the bit transfer time is 20.5 us, and that does not include any of the overhead for...