When I suggested that theme I didn't really think about the fact most devices have greater than 1KB - so a good point made. If this were selected as a future Project14 theme then I guess we could mandate that the program listing or HEX is supplied to ensure it falls within any set limit (or build log as you rightfully suggest).
Out of interest I just looked at my preferred manufacturer as see they only make one 8-bit device with less than 1KBytes (PIC10F322) and only two with 1.75KBytes.
I remember there were 1K games for the ZX81 so was hoping to rekindle some of the clever techniques people used to know for extracting the absolute maximum from bytes and assembly instructions. Again, maybe another theme could be "80's technology - (1)build something replicating technology from the 1980's (using modern components) or (2) build something using components from the 1980's". tariq.ahmad
Very interesting! I like the idea of a challenge to see what the biggest project is that can be fit into 1kb
I just looked a little closer at device specs - for 1kb we would be down to ATtiny13 or similar. Even the Digispark or Trinket have ATtiny85 which already jumps up to 8kb.
What microcontroller(s) did you have in mind, or was it more of taking a regular board and just keeping code size small? (I think the build log shows code size?)
I'm not sure it would qualify, being nearly 40 years old!!
Main problem would be lack of evidence: several house moves mean that my archives have been progressively thinned. I know I still have a printout of the source code for a later model - targeted at an 8051 or 8052. I may also have some of my old development log books - I need to look. I also have a few sample chips and parts of my development rig. However, what I don't have are any working examples of the echo sounder and later models - wind speed and log.
Your echo sounder is the ideal project entry. Sounds like you did a good job of the changes as well.
As an aside I've recently seen code routinely using a 4-byte unsigned integer to hold a boolean value...then again it was for the x86-64 which had 8GByte of RAM. Old school would have utilised every single bit separately.
In the late 70s I designed an echo sounder for pleasure boats, based around an Intel 8048 - 8bit, 1K of RAM, one time programmable chips (at first). It went into commercial production.
My heart sank when the company asked for a couple of extra features - I spent hours going through the code until I found a few adjustments that saved a handful of bytes and allowed me to shoehorn in the tweaks.
I was narrowing it down in my suggestion as that would force entrants to be really clever with code use...a skill that is gradually lost as we compile in higher level languages & get spoilt by the available program memory sizes (if your code doesn't fit then you can usually upgrade to the next part with the same footprint for £0.02 extra).
But good point; it would be a shame to exclude people form taking part just because they are geared up for 16-bit or 32-bit MCU.
Perhaps your suggestion of multiprocessors could be a different month's Project 14 - "Clustered MCU's - design something that uses two or more MCU". tariq.ahmad
Man, talk about putting a restrictor plate on a dev. I like the idea though. Would this be restricted to just a single 8-bit 8/6 pin MCU or could one cluster a set of similar chips to expand functionality?
For an upcoming Project14 how about a 1K MCU challenge. Essentially any idea is allowed but must include a single 8-bit microcontroller using no more than 1KByte of program memory/internal flash. No other external flash or program storage is allowed but you can use as much of the data memory/non-volatile RAM as you want. Therefore the Arduino Uno could be used if members want to test out their C skills; but some will just jump into assembler with their favourite MCU.
Along a similar track we could also have an Eight Pin MCU challenge (or 6 pin even !). e.g. using a device that has only 8/6 pins in total.
Top Comments