Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : Micromite MkII beta testers needed
Page 1 of 8 | |||||
Author | Message | ||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3165 |
Over the past couple of month I have been working on the Micromite MkII. This is essentially a Micromite running on the MX170 chip which uses the extra memory of the chip to do a lot more than the original Micromite could. I hope to formally introduce the Micromite MkII in a Silicon Chip Magazine article in a month or two. I have had a small group of testers helping me so far but it is time to expand the list. So, if you have a MX170 chip and would like to experiment with this new version, please sent an email to me at projects@geoffg.net and I will email you the firmware and new manual. All that I ask is that you let me know if you find a bug or anomaly. The short list of the new features in the Micromite MkII (compared to the MX150 Micromite) is: The one hex file will work with both 28 and 44-pin chips. The amount of free flash for program storage is 60KB and the free RAM is 52KB. Programs will run about 40% faster at the same CPU speed. 64-bit integers can be used to store and manipulate numbers as large as 19 digits and are about 25% faster than floating point. You can define and use variables in a much more flexible way. For example the DIM command can specify the type of a variable so you can say: DIM AS STRING variable (ie, you do not need the $ suffix). You can specify constants using the CONST keyword (ie, CONST MaxVoltage = 3.4). A full SELECT CASE decision structure has been implemented. An unlimited number of compiled C or assembler programs can be embedded in the BASIC program (was called a plugin but is now called a CFunction). The temperature and humidity can be read from a DHT22 sensor. The frequency of the internal clock can be trimmed for better timekeeping. The >> and << operators can shift bits in a number to the right or left. The processor can be put to sleep for a specified number of seconds. The gate time used when making frequency measurements can be specified. Internal pull up or pull down resistor can be attached to an input pin. Voltage measurements can be corrected for variations in the supply voltage. The console can be used with RS232 signals without a converter. The TIMER function will now count up for over 200 million years. The SPI function can now send/receive data in 32 bit blocks (in addition to 8 and 16 bits). There are additional features (like OPTION EXPLICIT) to prevent common programming errors. The manual has been updated and it includes a full bookmark listing. The one thing that is not in this list is support for RF communications using the nRF24L01 or RFM12B modules. Quite frankly I have run out of time and they both seem to be very complex devices. If someone has a MMBasic program that drives these two I might be able to squeeze them in but all the example C programs that I have found are complex and not at all intuitive. I will continue to maintain the firmware for the original MX150 based Micromite (bug fixes, etc) but due to memory constraints these new features will not be available for it. They are for the MX170 based Micromite MkII only. Geoff Geoff Graham - http://geoffg.net |
||||
plasma Guru Joined: 08/04/2012 Location: GermanyPosts: 437 |
wow so much fun :) sounds great News. where come the speed up from ? |
||||
Lou Senior Member Joined: 01/02/2014 Location: United StatesPosts: 229 |
Geoff, Thanks for all the new features. Lou Microcontrollers - the other white meat |
||||
retepsnikrep Senior Member Joined: 31/12/2007 Location: United KingdomPosts: 131 |
And I wanted 250 million years Oh well better wait for the next version. Thanks for the hard work Geoff Gen1 Honda Insights. |
||||
paceman Guru Joined: 07/10/2011 Location: AustraliaPosts: 1328 |
That's an impressive list of extras and improvements Geoff - I can see a lot of TBS threads and requests from the past have suddenly become redundant! Many thanks from me too. Greg |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9066 |
[quote]The processor can be put to sleep for a specified number of seconds.[/quote] ...and we just perfected the cap and resistor on the 150's. Still, I knew this feature was coming, but I expected it might have been a while away yet. You have outdone yourself - again. Did you have to force yourself to rapidly learn the problematic Harmony or did you find a way around that? Smoke makes things work. When the smoke gets out, it stops! |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3165 |
I used the extra flash memory in the Micromite MkII to optimise MMBasic for speed (rather than small size as with previous versions). No, I am using the trick which avoided Harmony... but it is still waiting for me in the future Geoff Graham - http://geoffg.net |
||||
atmega8 Guru Joined: 19/11/2013 Location: GermanyPosts: 712 |
Hi Geoff, thank you for all the work on this great Project! I have send you an Email to take part in further testing the new Version. Regarding the RF chip, i can say that the nordic Module is most easiest one. The shockmode would be a good choice to implement in the Firmware. Here IS a link with a Bascom AVR code for the chips, easy to understand and working. I have tested and played around with it. bascom code Maybe this will help you. |
||||
MicroBlocks Guru Joined: 12/05/2012 Location: ThailandPosts: 2209 |
I have used this code successfully for quit a while on arduinos. http://maniacbug.github.io/RF24Network/ Yeah! 64-bit integers!!! Now that is for me the single most important feature. Together with bitwise operators there are no more limits in usability. Amazing job Geoff!! Will it also run on a 32MX270? I have those in stock as well and would be great to use them too. (I know USB is not in the firmware, but who knows..... with that speed of implementing it might be possible in the future). Microblocks. Build with logic. |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9066 |
Yes, will run on 270's according to the beta tester information.(in change.log) Smoke makes things work. When the smoke gets out, it stops! |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3165 |
Yes (without two I/O pins). No, I don't have that planned. On reflection it was not worth it. You are forced to use a crystal and that plus USB support meant that you lost four I/Os compared to the non USB version. USB-Serial bridges are now just a few dollars - less than the price of a USB connector in some cases. It was just not worth it. Geoff Geoff Graham - http://geoffg.net |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3165 |
Wait until you get into CFunctions (was called plugins). They have changed out of sight and I have great hopes for them. The beta distribution includes a SerialTx CFunction which adds up to eight transmit serial ports (that is 13 serial ports counting COM1, COM2 and the console). In the future I hope that people will add extra I2C and SPI channels, encryption algorithms, drivers for special chips and more. They can all be done using CFunctions. Geoff Geoff Graham - http://geoffg.net |
||||
Grogster Admin Group Joined: 31/12/2012 Location: New ZealandPosts: 9066 |
Wow..... Not that I mind, but I thought you had said that adding MIPS routines to MMBasic was not going to be THAT flexible, and you could really only use that idea for some very restricted speed-intensive tasks? As I say - not that I mind one bit, but I thought that was the case. Smoke makes things work. When the smoke gets out, it stops! |
||||
robert.rozee Guru Joined: 31/12/2012 Location: New ZealandPosts: 2290 |
have just been having a read through the manuals, it is all most impressive. geoff, might i suggest you start 3 related threads on the forums for: 4.6 firmware bugs, 4.6 documentation, 4.6 feature feedback. this would help make the feedback we will all no doubt generate en mass much easier for all to follow. i have noticed one issue in the documentation: it is not mentioned that the 5v tolerant pins are different between the 170 and 270; on the 28-pin DIP 270 pins 21 and 22 are not 5v tolerant. similarly for the 44-pin TQFP. unlikely to affect many users, but worthwhile mentioning. the 4.5 manual doesn't mention this either. rob :-) |
||||
Geoffg Guru Joined: 06/06/2011 Location: AustraliaPosts: 3165 |
All those things could be done with just a few lines of code. For example the SerialTx CFunction is 40 lines of C code. The work that Peter (G8JCF) has done with his code converter also makes it much easier. It is still a difficult environment (and C is not easy) but hopefully some skilled people will think that it is worth it. Geoff Geoff Graham - http://geoffg.net |
||||
MicroBlocks Guru Joined: 12/05/2012 Location: ThailandPosts: 2209 |
I understand your reasoning. I thought that the 44 pins would offer enough pins that the pain to loose 4 pins is well compensated with the extra functionality and saving precious PCB space. Personally i design most with i2c so i not really run into not enough pin problems, loosing those 4 pins would for me be no problem. Making a choice for the 270 is mostly done for USB functionality otherwise the 170 is a better choice. But i understand that is not done commonly. So no worries. I will probably get knocked of my feet with this version. :) Microblocks. Build with logic. |
||||
robert.rozee Guru Joined: 31/12/2012 Location: New ZealandPosts: 2290 |
geoff - having finished a first pass through the new manual, i'd like to offer the following comments / suggestions / questions: 1. the "CPU SLEEP <delay>" ability looks extremely useful, but it will be a little bit of a pain with all timekeeping suspended while asleep. since the length of the delay is known, would it be possible for the function to automatically increment the value TIMER appropriately upon waking up (TIMER = TIMER + <delay> + overhead); perhaps even update TIME$ and DATE$ too. while the user program could do both of these, if handled within MMbasic small creeping errors could be minimised. 2. it would be possible to depreciate "OPTION BAUDRATE <rate>", with the functionality rolled into "OPTION CONSOLE <rate>". i don't know if this would achieve any real advantage, but would perhaps group the functions together more nicely. 3. "OPTION CONSOLE [INVERT | NOINVERT]" poses the chicken/egg problem. a solution might be to allow the polarity to be set to auto-select, depending on the idle state of RxD. that is, after RxD has been seen sitting low for an extended period of time then the polarity is set to inverted. similarly, if seen set high for an extended period then set to non-inverted. this could be enabled with something like "OPTION CONSOLE AUTOSTATE". 4. the changelog doesn't mention that DIM now allows setting the maximum length of an individual string (not just arrays of strings). to me, this is a big plus that is worth mentioning. 5. i really hate the new requirements that variable names be unique, ie A and A$ are mutually exclusive names. i really really think that this should be a configurable option the same as "OPTION EXPLICIT" that defaults to being off. amongst other things, it may break existing code. 6. on a related note, it gives me the willies to think of string variable names not having to be terminated in a $. this is one of the defining characteristics of basic, and i have a strong opinion that A is a float, A$ is a string, and A% is an integer. the '$' and '%' are important parts of the syntax and extremely useful for beginners and professionals alike. 7. i'm extremely happy that PIN(0) now returns the value of the internal bandgap reference. if there was just ONE feature i'd like seen ported back to the MX150 version, it would be this. if two features were allowed, the second would be "CPU SLEEP <delay>" cheers, rob :-) |
||||
Keith W. Senior Member Joined: 09/10/2011 Location: AustraliaPosts: 118 |
Thank you Geoff for Micromite MKII, you have been busy. Many useful enhancements. And thank you for the quick response to my request to join up as a Tester. Using Peter Carnegies MMProgRPC version 1.1 and with a MX170 programmed with V4.5D I programmed a chip to Micromite MKII. This took 40:17 to complete. After confirming that MKII was alive I swapped the chips and programmed again, this time taking 34:03 when using the MKII Ver 4.6 Beta 16 chip as the programmer, and again successfully. With this complicated application a 15% speed improvement here. Now with large integers and right and left bit shifts, and of course CFunctions I hope that we will hear from Peter again soon with an update to MMProgRPC. Or is Peter busy updating his DDS control software? He has done a lot of work wrestling with large numbers in MMBasic. Large integers solves the DDS arithmetic problem that I posed to thebackshed (in early April), and now we have 32 bit SPI transmissions to control the DDS. Keith W. |
||||
twofingers Guru Joined: 02/06/2014 Location: GermanyPosts: 1133 |
@Geoff Seems to be a one giant leap for mankind. Thanks a lot! I just have to find a distributor for MX170 chips in germany, or immigrate to China or Cambodia? Michael PS: Only one thing to consider: I'm not sure if it's a good idea to make MMBasic more and more dependent on hardware (sensors). Some chips have a limited lifetime. What may be in three years? If I could get a MX170 then I would glad to beta test the new features. |
||||
G8JCF Guru Joined: 15/05/2014 Location: United KingdomPosts: 676 |
@Keith W. I have a version of MMProgRPC which only runs on 4.6 which programs 4.6 in about 13 minutes - needless to say it use CFunctions !! I'll publish that version as soon as I get a chance Peter The only Konstant is Change |
||||
Page 1 of 8 |
Print this page |