free-pdk / fppa-pdk-documentation Goto Github PK
View Code? Open in Web Editor NEWDocumentation for PADAUK FPPA MCUs
Documentation for PADAUK FPPA MCUs
It would be good to have documentation for the programming protocol, so alternatives to the somewhat expensive Programmer by Padauk (which is currently supported only by non-free Windows software) can be made.
How does this wiki work?
I made changes in the repository (fixed a typo, added a device) recently. What do I have to do to make this change show up in the wiki? Is there some automatic synchronization at all? Are the files that I changed in the repository just redundant duplicates of the real wiki elsewhere?
I have been in contact with Padauk. They stated that they have 3 instruction sets (14 bit, 15 bit, 16 bit). So there is a 15-bit instruction set to be documented, too.
Philipp
The Padauk µC have a "system using" (stated like that in the manual) i.e. reserved area at the end of the program memory. depending on the type it is 8 to 32 words.
The Chinese IDE manual has some information on the 8-word variant (apparently it contains a checksum, a rolling code, oscillator calibration data and "code option"s (whatever they are).
But it would be good to have exact documentation for all devices.
Philipp
P.S.: The file Last8W.html contained in the IDE documentation has some information on the 8-Word variant. too. Depending on support for the ltabl/ltabh instructions, the rolling code is either 16 bit per entry or 8 bit per entry (with each byte encoded in a ret b instruction, so each byte can be read by a call into the rolling code. The code option is apparently a 5-valued voltage vs. speed choice and a three-valued "security" setting.
Some 16-bit devices have documented ldtabh, ldtabl instructions. These should be in the list in the wiki, too.
Philipp
Even for the 14-bit instruction set, some such as the xor io or mul, a are not supported in all devices. So it would be good to have a table that shows instructions supported vs. device.
The documentation is wrong for those two.
stt16 - M ← Timer16 (last bit of M set to 0, M must be word aligned)
ldt16 - Timer16 ← M (last bit of M set to 1, M must be word aligned)
stt16 stores the word to memory, while ldt16 saves the value of the timer to the word in memory. Not sure if the last bit part of the description is correct or not. Can someone check please?
It would be good to also have documentation for the older 16-bit instruction set used by the 8-core devices. Again it would also be good to have a instruction support vs. device table, too, since AFAIK, some instruction, such as mul and pushw are not supported in all devices.
I noticed your post http://www.eevblog.com/forum/blog/eevblog-1144-padauk-programmer-reverse-engineering/msg1970672/#msg1970672
And the one feature IMO missing the most from the Padauk devices is an efficient way to access the stack. Could ldsptl and ldspth be stack load instructions? If yes, they would be a useful feature for implementing C. By far not as useful as having an sp-relative addressing mode, but still useful. Since there are no arguments, I would assume they transfer a byte between stack and accumulator.
It would make sense to have two (one for the lower byte of the word on the stack, one for the upper byte of the word on the stack): The stack pointer is meant to be increment / decremented by multiples of 2 only (I don't know why, but that is what the datasheets say, even though they insist that the stack pointer is a full 8 bits wide).
Philipp
P.S.: The ldtabh and ldtabl you mentioned in the same post are actually a documented instruction in the 16-bit instruction set. They can be found e.g. in the MCS11, PMC884 and PMC251 datasheets.
The following instructions in teh 15-bit instruction set do not have their opcodes documented in the wiki yet:
NMOV A, M
NMOV M, A
SWAP M
XOR A, IO
These are available e.g. on the PMC133.
Philipp
IMHO we should migrate the content of the partnumber.wikitext file to the free-pdk.github.io website.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.