I got a bit carried away using the bootstrap mode and got a bit off topic. Still, it's worth posting some of what I found out to the list. I wanted to get more sure of my setup before going after the TPU. I needed to make sure all the assembler switches were well understood and try a few test cases.
One easy target is the Port Replacement Unit with RAM (PRU) used on my boards. It is marked with GM house numbers:
65146C91
66285
466
The main features of this part are:
2K (less a few) RAM
Four channels of Pulse
Four ports of I/O
Watchdog timer
I wrote a simple RAM test for addresses $1810 through $1FFF. Then I wrote programs to toggle each bit of the first 3 ports. The device can be configured for input or output. I did not output on lines used as inputs to prevent contention. The last I/O port is open drain, thus needing no direction settings. I found the lower four bits. Still missing from my understanding are four pins and four register bits. Some day, a bit more work here...
The PWM section is interesting. The lower byte configures the pulse width in 1/256 increments. That I had figured would be the case. The upper byte of the PWM config was not known to me, so I wrote a routine to manipulate it. Turns out that the PWM section is driven by Eclock divided by 2. The upper byte scales this and affects the rep rate of the pwm. The lower the number the faster the rep rate. I guess this was done to tune the response of things like egr. Electro magnetic radiation may also come into it...run things as slow as you can. If trying to filter and create an analog you might want to run it fast. In any case, I have a couple of attachments. First is an excel table of pwm config upper byte vs repetition rate. Second is the pinout of the PRU.
If anyone can help with the missing pins/register bits, please post. The pins are connected to the ribbon cable and to a unknown chip:
609-3700521
CP08978
144436
9638N
Any and all details of that chip are of great interest.
-Tom
Bookmarks