Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 05:41 06 May 2024 Privacy Policy
Jump to

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: Australia
Posts: 3165
Posted: 06:55pm 26 Oct 2014
Copy link to clipboard 
Print this post

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: Germany
Posts: 437
Posted: 07:23pm 26 Oct 2014
Copy link to clipboard 
Print this post

wow so much fun :) sounds great News.
where come the speed up from ?
 
Lou

Senior Member

Joined: 01/02/2014
Location: United States
Posts: 229
Posted: 07:40pm 26 Oct 2014
Copy link to clipboard 
Print this post

Geoff,

Thanks for all the new features.

Lou
Microcontrollers - the other white meat
 
retepsnikrep

Senior Member

Joined: 31/12/2007
Location: United Kingdom
Posts: 131
Posted: 08:20pm 26 Oct 2014
Copy link to clipboard 
Print this post

  Geoffg said  
• The TIMER function will now count up for over 200 million years.



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: Australia
Posts: 1328
Posted: 08:59pm 26 Oct 2014
Copy link to clipboard 
Print this post

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 Zealand
Posts: 9066
Posted: 09:30pm 26 Oct 2014
Copy link to clipboard 
Print this post

[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?Edited by Grogster 2014-10-28
Smoke makes things work. When the smoke gets out, it stops!
 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3165
Posted: 09:47pm 26 Oct 2014
Copy link to clipboard 
Print this post

  plasma said  where come the speed up from ?

I used the extra flash memory in the Micromite MkII to optimise MMBasic for speed (rather than small size as with previous versions).

  Grogster said  Did you have to force yourself to rapidly learn the problematic Harmony or did you find a way around that?

No, I am using the trick which avoided Harmony... but it is still waiting for me in the future Edited by Geoffg 2014-10-28
Geoff Graham - http://geoffg.net
 
atmega8

Guru

Joined: 19/11/2013
Location: Germany
Posts: 712
Posted: 10:11pm 26 Oct 2014
Copy link to clipboard 
Print this post

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: Thailand
Posts: 2209
Posted: 10:52pm 26 Oct 2014
Copy link to clipboard 
Print this post

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).




Edited by TZAdvantage 2014-10-28
Microblocks. Build with logic.
 
Grogster

Admin Group

Joined: 31/12/2012
Location: New Zealand
Posts: 9066
Posted: 11:07pm 26 Oct 2014
Copy link to clipboard 
Print this post

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: Australia
Posts: 3165
Posted: 11:14pm 26 Oct 2014
Copy link to clipboard 
Print this post

  TZAdvantage said  Will it also run on a 32MX270?

Yes (without two I/O pins).

  TZAdvantage said  I know USB is not in the firmware, but who knows..... with that speed of implementing it might be possible in the future.

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: Australia
Posts: 3165
Posted: 11:22pm 26 Oct 2014
Copy link to clipboard 
Print this post

  TZAdvantage said  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.

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 Zealand
Posts: 9066
Posted: 11:27pm 26 Oct 2014
Copy link to clipboard 
Print this post

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 Zealand
Posts: 2290
Posted: 11:35pm 26 Oct 2014
Copy link to clipboard 
Print this post

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 :-)Edited by robert.rozee 2014-10-28
 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3165
Posted: 11:40pm 26 Oct 2014
Copy link to clipboard 
Print this post

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: Thailand
Posts: 2209
Posted: 01:18am 27 Oct 2014
Copy link to clipboard 
Print this post

  Geoffg said  
  TZAdvantage said  Will it also run on a 32MX270?

Yes (without two I/O pins).

  TZAdvantage said  I know USB is not in the firmware, but who knows..... with that speed of implementing it might be possible in the future.

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

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 Zealand
Posts: 2290
Posted: 02:30am 27 Oct 2014
Copy link to clipboard 
Print this post

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: Australia
Posts: 118
Posted: 02:33am 27 Oct 2014
Copy link to clipboard 
Print this post

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 Carnegie’s 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: Germany
Posts: 1133
Posted: 04:54am 27 Oct 2014
Copy link to clipboard 
Print this post

@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.Edited by twofingers 2014-10-28
 
G8JCF

Guru

Joined: 15/05/2014
Location: United Kingdom
Posts: 676
Posted: 07:01am 27 Oct 2014
Copy link to clipboard 
Print this post

@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
© JAQ Software 2024