--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/1la9tbpq2l2aui29c235hsndm6ik8eleun%404ax.com.
For more options, visit https://groups.google.com/d/optout.
Is this within the capabilities of the BBB?
Hi TJF,So basically the libpruio is a driver that makes it easier to access the PRU and assign I/O and create a subsystem program loop? Is that correct? What would be the downside of using this driver? Added Latency?
I am trying to figure out where to go from here. Libpruio looks promising, but I would like to take the path that would offer the best overall determinism & latency characteristics for reading encoder input and controlling IO accordingly. I would think the best case scenario would be to program the PRU directly and skip linux altogether.
Well I have obtained a BBB along with the PRU cape. I soldered the Jtag header on and I purchased a blackhawk XDS100v2 JTAG Emulator. I istalled CCSv6 and I have completed the PRU labs 1 through 4 - found here: http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs#Hardware
I am trying to figure out where to go from here. Libpruio looks promising, but I would like to take the path that would offer the best overall determinism & latency characteristics for reading encoder input and controlling IO accordingly. I would think the best case scenario would be to program the PRU directly and skip linux altogether. This may be overkill for my current project, but it seems like it would be useful for more demanding applications I may cross in the future.
My current PLC loop just sets an "Upper" stroke limit and a "Lower" stroke limit. It then uses if statements to determine when the current position meets or exceeds one of those two settings which activates a solenoid to change direction. It also counts the strokes and writes to some registers for the "Automatic grinding cycle". It is currently working, but the windows environment doesn't keep up very well. I would think the best case scenario would be to program the PRU directly and skip linux altogether.
My understanding is that eQEP0 is the only eQEP that can directly interrupt the PRU's. I think this should be fine because I only need to read 1 encoder.
It looks like the eQEP0 pins are on the P9 header as follows:P9 - pin 25 - eQEP0_STROBEP9 - pin 27 - eQEP0B_inP9 - pin 41B - eQEP0B_indexP9 - pin 42B - eQEP0A_in
I have read through the AM3358 TRM ( wow that is huge ) but I am not quite sure were to start as far as Initializing the eQEP0 and getting readings from the encoder? Are there any tutorials out there for programming the PRU's to read eQEP0 inputs, then use that information to trigger GPIO events?
I didn't use JTag yet. And I don't use the bloated TI tools. Instead I use the lightweight pasm assembler and uio_pruss driver.
You can develop everything from scratch, the subsystem configuration and your controller loop. Or you can use the configuration from libpruio, use the high level API to set the registers in a convenient way and just add some individual controller loop code.
What is eQEP0? There're three PWMSS (subsystems), each of them have one eQEP module with the same features. So there is PWMSS-0.eQEP, PWMSS-1.eQEP and PWMSS-2.eQEP. All of them have the same interrupt features. And you don't need them. Better poll the current state for lower latency.
PRU will give you the encoder data, but where do you go from there? If all you need is some calculations and running simple actuators of the PWM kind, and/or display to low-pixel-count LCD, you dont' need Linux---however, if you need communication stacks such as Ethernet, BT or WiFi, it's probably a bad idea to try to write them from scratch.
I didn't use JTag yet. And I don't use the bloated TI tools. Instead I use the lightweight pasm assembler and uio_pruss driver.What do you mean by "bloated"? Do you think my CCSv6/Jtag approach is overly complicating this project?
I know very little about the pasm assembler language. Is there some good learning material for that?
I would love to complete this project using a "baremetal" approach, but I am beginning to feel like this may be a bit over my head at the moment. I have learned a lot with the hands on labs, but I have further to go and I can't seem to find many entry level tutorials with the baremetal CCSv6 approach. I may have to throw in the towel on the baremetal and give libpruio a shot.
What is eQEP0? There're three PWMSS (subsystems), each of them have one eQEP module with the same features. So there is PWMSS-0.eQEP, PWMSS-1.eQEP and PWMSS-2.eQEP. All of them have the same interrupt features. And you don't need them. Better poll the current state for lower latency.The TRM refers to the module registers as eQEP0, eQEP1 & eQEP2 under each PWM subsystem (Table 2-3 in the ARM memory map chapter) I understand the difference between interrupts and polling, but it seems like i have seen the PRU polling being referred to as interrupts somewhere.
Here is a thread I found discussing PRU interrupts for the eQEP modules. Do you know why the original poster is looking for interrupts on all 3 equip modules? This confused me a bit. - https://e2e.ti.com/support/arm/sitara_arm/f/791/t/391174
Well I have obtained a BBB along with the PRU cape. I soldered the Jtag header on and I purchased a blackhawk XDS100v2 JTAG Emulator. I istalled CCSv6 and I have completed the PRU labs 1 through 4 - found here: http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs#HardwareI am trying to figure out where to go from here. Libpruio looks promising, but I would like to take the path that would offer the best overall determinism & latency characteristics for reading encoder input and controlling IO accordingly. I would think the best case scenario would be to program the PRU directly and skip linux altogether. This may be overkill for my current project, but it seems like it would be useful for more demanding applications I may cross in the future.
Hi TJF! It's been a few months since my last post, just curious if you have the QEP features ready in libpruio?
Hi beezerlm! I tried to answer your EMail, but got an error message: 550 <your.emailaddress.here> Account Inactive Here's the text I tried to sent: AFAIR the QEP docu is done, but the preparation/installing is still work in progress. I uploaded the beta source at https://github.com/dtjf/libpruio Just check it out, your feedback is much appreciated. Regards