Estimated First Ship Date: December 22, 2019 (Date Code: 1952)
...
Revision History: January 03, 2019: Issued initial notification. November 22, 2019: Issued final notification. Attached the Qualification Report. Revised the affected parts list. Provided estimated first ship date to be on December 22, 2019.
I have questions, LOTS of them. Hope that answers will be generally useful to others. I recognize that there MAY be (and probably are) answers to some of these questions in the documentation, but I've not been able to sort them out, so far.
1) What is PORTMUX? Is it "just" a cross-point switch or does it alter the functionality of the pins (input vs output, pullup/down, etc)? That is, does the peripheral take over the full function of the pin, as in M328P? Does more have to be done for pin control with PORTMUX compared to AVR-standard?
2) EVSYS? Can someone describe the broad behavior of this thing? I see a block diagram with gates and flipflops but that does not give me any sense of what it really does.
3) I'm struggling to understand differences between TCA and TCB peripherals. Can anyone help with a high-level overview?
4) CRC - it appears that the hardware CRC module only works on data being written to flash as part of programming. In other words, it appears to NOT be available for generation of serial message CRCs. Is this correct?
5) AVR-standard generally have an interlock between the SPI and the SS pin; to do certain things, the SS pin has to be configured a certain way. It is not at all clear whether there are similar requirements for the USART in SPI mode. Any help, here?
Thanks
Jim
Until Black Lives Matter, we do not have "All Lives Matter"!
2) EVSYS? Can someone describe the broad behavior of this thing? I see a block diagram with gates and flipflops but that does not give me any sense of what it really does.
3) I'm struggling to understand differences between TCA and TCB peripherals. Can anyone help with a high-level overview?
4) CRC - it appears that the hardware CRC module only works on data being written to flash as part of programming. In other words, it appears to NOT be available for generation of serial message CRCs. Is this correct?
5) AVR-standard generally have an interlock between the SPI and the SS pin; to do certain things, the SS pin has to be configured a certain way. It is not at all clear whether there are similar requirements for the USART in SPI mode. Any help, here?
The Event System (EVSYS) basically allows one peripheral to control another. On devices with DMA you can do stuff like have the DMA copy data from a USART when a byte received event is generated, replacing the usual interrupt handler. Since these don't have DMA the system is a bit more limited. You can clock counters from other peripherals, say a pin change event on a GPIO or the custom logic.
TCA has waveform generation (advanced PWM) capability, TCB has the ability to timestamp inputs which lets you measure periods or determine frequency. The latter can be quite handy for stuff like MODBUS where the end of a frame is a gap, which you can use TCB to measure. Actually you can use the pin change event to do that with TCA too I think, I haven't looked at it.
CRC does seem to have been nerfed a bit compared to the XMEGA, you kinda wonder why they bother having it just for flash and not adding a CPU interface that would have been incredibly useful.
USART in SPI mode is master only, so there is no SS pin. The main advantage is that it's buffered, where as the SPI peripherals are not.
1) What is PORTMUX? Is it "just" a cross-point switch or does it alter the functionality of the pins (input vs output, pullup/down, etc)?
That's a good question. I think when you enable event output in the PORTMUX, it does take control of the pins. But when you use it to multiplex peripherals to different ports, I think this depends on the peripheral, not PORTMUX itself. Frankly, this requires testing.
ka7ehk wrote:
2) EVSYS? Can someone describe the broad behavior of this thing? I see a block diagram with gates and flipflops but that does not give me any sense of what it really does.
On each peripheral chapter, you will find an "events" section. This will explain whether this peripheral can generate or use events. For example, for TCB it says:
The TCB is an event generator. (...)
The peripheral accepts one event input. (...)
This means TCB both generates and accepts events. The event generator routes these events between peripherals. Basically, it allows some simple actions, that would normally be executed by an ISR, to happen fully in hardware.
On the 328p you might write an interrupt handler, triggered by an "input" peripheral, to change the state of an "output" peripheral. The event system lets you shortcut the function of the interrupt handler. And in some cases I believe the behavior is asynchronous.
What is PORTMUX? Is it "just" a cross-point switch or does it alter the functionality of the pins (input vs output, pullup/down, etc)? That is, does the peripheral take over the full function of the pin, as in M328P? Does more have to be done for pin control with PORTMUX compared to AVR-standard?
In general, the peripherals on the Mega-0 seem to be less "take over" than they were in previous Mega parts. For instance, in UART initialization, you need to set the TX pin as an output, and maybe set it to ONE as well (the datasheet doesn't say you need to set it to ONE, but it's in the example.)
Microchip Thailand will be the second assembly site for megaAVR 0-series in TQFP-32 and TQFP-48 at MSL 1 (unlimited floor life at elevated relative humidity and warm room temperature)
This is a basic example of bringing up the ATMega 4808/4809 and enabling the most common hardware. I wrote this so I could use it to control various features in RC aircraft (telemetry and lights mostly).
It has support for:
SBus protocol (channel information from radio, inverted serial)
S.Port Protocol (only for volts/amps reporting, bi-directional 1-wire inverted serial)
DSHOT 600 (bit bang) to set motor speed and get telemetry from newer ESCs
Analog to Digital conversion (to read battery volts/amps)
PWM for controlling 'dumb' leds
APA102 (via SPI) & WS2812 (via bit bang)
Serial used by several protocols above as well as for debugging
Some simple RGB functions for LED control
Very minimal debugging log/print support
RTC clock
Licensed under the Apache 2.0 license (see the file LICENSE-2.0 for details).
Please let me know if you decide to use it.
I also have some small board designs for the 4808/4809 that I may include as well at some point if there is interest.
mega32U4 UPDI to/from mega4809 in Seeed Studio's board
I'm guessing they ported MuxTO to the mega32U4. Personally I think it would make more economic sense to port to a STM32, they have 5V tolerant pins, so the level shifters present on the Uno WiFi R2 would also not be needed (like they are not needed with the mega32U4). The difference is that a STM32 would probably be cheaper.
IIRC, Seeed Studio has a wiki (didn't search therefore not answering the question of what firmware is in the mega32U4)
There is one 3.3V linear voltage regulator on that board to the connectors; IIRC, mega32U4's internal voltage regulator sets the USB common-mode voltage.
A jelly bean 1117 so a lot of 3.3V current is available.
Otherwise, all is 5V (USB Vbus or external)
330 ohm series termination on UPDI between mega32U4 and mega4809.
No UPDI break-out though 0 ohm resistors are present (patch to connect to an Atmel-ICE, MPLAB Snap, or MPLAB PICkit 4)
If you are in the situation of needing many boards for your classroom, or if you need to present a complex prototype with many functional blocks, this pack will offer you exactly what you need: a series of Arduino Nano Every boards at a discounted price.
...
The pack is available in two sizes with either 3 or 6 boards of Arduino Nano Every without headers.
...
Get to Know More
To know more about the history of the Nano Every don’t miss the interview with Dario Pennisi, Arduino’s hardware and firmware development manager, who led the development of this board.
Description of Change: 1) Added Silicon Revision D1.
...
4) The ADC errata, ADC Functionality Cannot be Ensured with ADCCLK Above 1.5 MHz for All Conditions, has been split into two separate erratas and rewritten.
While I have a deep appreciation for Rube Goldberg machines, pointless creations 'just because', and other unnecessarily complex apparatuses, something about a Useless Machine made with anything other than a simple brushed DC gear motor, a DPDT switch, a limit switch, and a battery, just makes my teeth itch.
"Experience is what enables you to recognise a mistake the second time you make it."
"Good judgement comes from experience. Experience comes from bad judgement."
"Wisdom is always wont to arrive late, and to be a little approximate on first possession."
"When you hear hoofbeats, think horses, not unicorns."
"Fast. Cheap. Good. Pick two."
"We see a lot of arses on handlebars around here." - [J Ekdahl]
as the evidence suggests they have quite a trouble keeping it accurate in the one main reference I'm not sure multiple copies elsewhere, in need of similar maintenance, is necessarily a good idea.
#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."
Description of Change: Qualification of MMT as an additional assembly site for selected Atmel products available in 32L VQFN (5x5x0.9mm) package with MSL 1 classification.
...
Estimated First Ship Date: November 15, 2020 (date code: 2047)
...
Revision History: November 3, 2020: Issued final notification. Attached the Qualification Report. Provided estimated first ship date to be on November 15, 2020.
You can also preserve the current period if wanted. These 16bit registers are best treated as a 16bit register on reads and writes, so as not to get confused by the temp register. Even if I knew the period in this case, I would still write as a 16bit value- TCB1.CCMP = (255<<8)|duty;
Another thing that probably is just a matter of low odds so goes unseen, is the temp register usage in an isr. If you are using a peripheral in an isr that will modify the temp register, and main code is also doing something in the peripheral that uses the temp register (same temp is shared for all 16bit in peripheral), you have the possibility of the isr corrupting the temp register the main code is in the middle of using. The temp register can be backed up and restored in the isr code, or you guard the main code from interrupts. Probably an easily overlooked thing, and may be easier to put the responsibility in the isr code and let main code run without having to remember to interrupt guard.
MMT - Microchip Thailand
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopThe 48-pin QFN pads will be taller by probably the middle of next year ('20)
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopI have questions, LOTS of them. Hope that answers will be generally useful to others. I recognize that there MAY be (and probably are) answers to some of these questions in the documentation, but I've not been able to sort them out, so far.
1) What is PORTMUX? Is it "just" a cross-point switch or does it alter the functionality of the pins (input vs output, pullup/down, etc)? That is, does the peripheral take over the full function of the pin, as in M328P? Does more have to be done for pin control with PORTMUX compared to AVR-standard?
2) EVSYS? Can someone describe the broad behavior of this thing? I see a block diagram with gates and flipflops but that does not give me any sense of what it really does.
3) I'm struggling to understand differences between TCA and TCB peripherals. Can anyone help with a high-level overview?
4) CRC - it appears that the hardware CRC module only works on data being written to flash as part of programming. In other words, it appears to NOT be available for generation of serial message CRCs. Is this correct?
5) AVR-standard generally have an interlock between the SPI and the SS pin; to do certain things, the SS pin has to be configured a certain way. It is not at all clear whether there are similar requirements for the USART in SPI mode. Any help, here?
Thanks
Jim
Until Black Lives Matter, we do not have "All Lives Matter"!
- Log in or register to post comments
TopThe Event System (EVSYS) basically allows one peripheral to control another. On devices with DMA you can do stuff like have the DMA copy data from a USART when a byte received event is generated, replacing the usual interrupt handler. Since these don't have DMA the system is a bit more limited. You can clock counters from other peripherals, say a pin change event on a GPIO or the custom logic.
TCA has waveform generation (advanced PWM) capability, TCB has the ability to timestamp inputs which lets you measure periods or determine frequency. The latter can be quite handy for stuff like MODBUS where the end of a frame is a gap, which you can use TCB to measure. Actually you can use the pin change event to do that with TCA too I think, I haven't looked at it.
CRC does seem to have been nerfed a bit compared to the XMEGA, you kinda wonder why they bother having it just for flash and not adding a CPU interface that would have been incredibly useful.
USART in SPI mode is master only, so there is no SS pin. The main advantage is that it's buffered, where as the SPI peripherals are not.
- Log in or register to post comments
TopThat's a good question. I think when you enable event output in the PORTMUX, it does take control of the pins. But when you use it to multiplex peripherals to different ports, I think this depends on the peripheral, not PORTMUX itself. Frankly, this requires testing.
On each peripheral chapter, you will find an "events" section. This will explain whether this peripheral can generate or use events. For example, for TCB it says:
This means TCB both generates and accepts events. The event generator routes these events between peripherals. Basically, it allows some simple actions, that would normally be executed by an ISR, to happen fully in hardware.
- Log in or register to post comments
TopThanks,
There is some useful help here!
Jim
Until Black Lives Matter, we do not have "All Lives Matter"!
- Log in or register to post comments
TopSome MCU for geo-physical have a boot ROM and SRAM; fire the internal battery, bootload, then down the bore hole.
MRAM has some radiation tolerance though its temperature range is for most automotive applications and some avionics.
ADC has an accumulator; somewhat similar complexity could be additional for that CRC interface.
RIP Opportunity | The Embedded Muse 368
HT-DAB-1 Reference Design Kit - VORAGO | Mouser
Aerospace | Everspin (MRAM)
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopThis is my thinking on the event system:
On the 328p you might write an interrupt handler, triggered by an "input" peripheral, to change the state of an "output" peripheral. The event system lets you shortcut the function of the interrupt handler. And in some cases I believe the behavior is asynchronous.
- Log in or register to post comments
TopIn general, the peripherals on the Mega-0 seem to be less "take over" than they were in previous Mega parts. For instance, in UART initialization, you need to set the TX pin as an output, and maybe set it to ONE as well (the datasheet doesn't say you need to set it to ONE, but it's in the example.)
- Log in or register to post comments
TopThanks on that. I thought that I had seem some posts that suggested that (about PORTMUX), hence the question.
Jim
Until Black Lives Matter, we do not have "All Lives Matter"!
- Log in or register to post comments
TopMicrochip Thailand will be the second assembly site for megaAVR 0-series in TQFP-32 and TQFP-48 at MSL 1 (unlimited floor life at elevated relative humidity and warm room temperature)
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopIf anyone is interested I just made my code for running the 4808/4809 available on GitHub:
https://github.com/flitebits/rclib
This is a basic example of bringing up the ATMega 4808/4809 and enabling the most common hardware. I wrote this so I could use it to control various features in RC aircraft (telemetry and lights mostly).
It has support for:
Licensed under the Apache 2.0 license (see the file LICENSE-2.0 for details).
Please let me know if you decide to use it.
I also have some small board designs for the 4808/4809 that I may include as well at some point if there is interest.
Warmest Regards,
Flite Bits flitebits@gmail.com
- Log in or register to post comments
TopThanks!
https://www.sparkfun.com/categories/tags/apa102?sort_by=date_desc&filter_price_floor=&filter_price_ceil=
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopDidn't add the board's URL at Seeed Studio.Seeeduino Crypto (ATmega4809 & ECC608) - Seeed Studio
ATMEGA4809 - 8-bit Microcontrollers
ATmega32U4 - 8-bit AVR Microcontrollers
http://wiki.seeedstudio.com/Seeeduino-Crypto-ATmega4809-ECC608/
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopI'm guessing they ported MuxTO to the mega32U4. Personally I think it would make more economic sense to port to a STM32, they have 5V tolerant pins, so the level shifters present on the Uno WiFi R2 would also not be needed (like they are not needed with the mega32U4). The difference is that a STM32 would probably be cheaper.
- Log in or register to post comments
TopI'm guessing
imEDBGmEDBG.IIRC, Seeed Studio has a wiki (didn't search therefore not answering the question of what firmware is in the mega32U4)
There is one 3.3V linear voltage regulator on that board to the connectors; IIRC, mega32U4's internal voltage regulator sets the USB common-mode voltage.
A jelly bean 1117 so a lot of 3.3V current is available.
Otherwise, all is 5V (USB Vbus or external)
330 ohm series termination on UPDI between mega32U4 and mega4809.
No UPDI break-out though 0 ohm resistors are present (patch to connect to an Atmel-ICE, MPLAB Snap, or MPLAB PICkit 4)
GitHub - MCUdude/microUPDIcore: Arduino core for flashing mEDBG firmware onto the microUPDI programmer
due to https://www.avrfreaks.net/forum/standalone-medbg-updi-programmer-and-issues-avrdude#comment-2743461
edit : mEDBG
https://github.com/arduino/ArduinoCore-megaavr/blob/master/programmers.txt
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopA new arrival at Mouser :
AVR-BLE Development Board (DT100111) - Microchip Technology | Mouser
is AVR-BLE Development Board (Microchip)
edit :
Introducing the AVR and PIC BLE Development Platforms - YouTube (2m17s)
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopThe ADC clock above 1.5MHz errata underwent a re-write.
Product Change Notification - SYST-30VGGO965 - 03 Feb 2020 - ERRATA - ATmega4808/4809 Silicon Errata and Data Sheet Clarification
Product Change Notification - SYST-30AYTH465 - 03 Feb 2020 - ERRATA - ATmega808/809/1608/1609 Silicon Errata and Data Sheet Clarification
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topedit : likewise
Product Change Notification - SYST-30XVYQ059 - 05 Feb 2020 - Data Sheet - ATmega4808/4809 Data Sheet
Product Change Notification - SYST-30JPEF324 - 05 Feb 2020 - Data Sheet - ATmega3208/3209 Data Sheet
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topa new arrival
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topupdated today :
GitHub - MicrochipTech/AVR-IoT_LoRa_Click: The project source code of the "Adding LoRa® RN2483 Click to AVR-IoT WG Board (ATmega4808)" Application Note
AN3076 Adding LoRa RN2483 Click to AVR-IoT WG Board
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopFast Prototyping of BLE Sensors for AWS Cloud Using the ATmega4809 Curiosity Nano Development Platform
edit :
AN3403 Indoor Air Quality Monitor: Concept and Implementation
AN3417 Indoor Air Quality Monitor: Firmware Creation Using Atmel START and MPLAB® Code Configurator (MCC)
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topnew arrival
AVR-IoT WA Development Board (EV15R70A) - Microchip Technology | Mouser
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Top"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topfrom a banner on Microchip's home page
https://www.microchipdirect.com/product/promo/Learn-IoT-from-home
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopDIY Useless Box - Developer Help
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Top"Experience is what enables you to recognise a mistake the second time you make it."
"Good judgement comes from experience. Experience comes from bad judgement."
"Wisdom is always wont to arrive late, and to be a little approximate on first possession."
"When you hear hoofbeats, think horses, not unicorns."
"Fast. Cheap. Good. Pick two."
"We see a lot of arses on handlebars around here." - [J Ekdahl]
- Log in or register to post comments
TopDavid
- Log in or register to post comments
TopProduct Change Notification - SYST-19FKNH955 - 22 Jun 2020 - Data Sheet - ATmega4808/4809 Data Sheet
Product Change Notification - SYST-19LLGD189 - 22 Jun 2020 - Data Sheet - ATmega808/809/1608/1609 Data Sheet
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopHmmph. I like having the summary in the datasheet (although I liked the old and briefer Atmel-style summary better.)
- Log in or register to post comments
Top- Log in or register to post comments
TopI keep a laminated copy handy on the bench.
#1 Hardware Problem? https://www.avrfreaks.net/forum/...
#2 Hardware Problem? Read AVR042.
#3 All grounds are not created equal
#4 Have you proved your chip is running at xxMHz?
#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."
- Log in or register to post comments
TopProduct Change Notification - RMES-19QWFS608 - 25 Jun 2020 - Memo # ML112019001A Final Notice: Introduction of new package 48L VQFN (6x6x0.9mm) to an existing ATMEGA3209 and ATMEGA4809 device families that are currently available in 48L UQFN (6x6x0.5mm) package.
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopProduct Change Notification - SYST-19XSDQ080 - 26 Jun 2020 - Data Sheet - ATmega3208/3209 Data Sheet
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopAssembly of mega808 and mega1608 in QFN will be moving to Microchip Thailand.
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopPDF :
ATmega808/809/1608/1609 Silicon Errata and Data Sheet Clarification
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
Topedit :
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopThe TCB issue is a bit nasty for PWM mode. You can't update the duty cycle w/o updating the period at the same time.
WAS:
IS (using knowledge of how 16-bit writes are implemented by the compiler):
- Log in or register to post comments
TopThanks for the snippet expanding on that work around.
"Dare to be naïve." - Buckminster Fuller
- Log in or register to post comments
TopYou can also preserve the current period if wanted. These 16bit registers are best treated as a 16bit register on reads and writes, so as not to get confused by the temp register. Even if I knew the period in this case, I would still write as a 16bit value- TCB1.CCMP = (255<<8)|duty;
Another thing that probably is just a matter of low odds so goes unseen, is the temp register usage in an isr. If you are using a peripheral in an isr that will modify the temp register, and main code is also doing something in the peripheral that uses the temp register (same temp is shared for all 16bit in peripheral), you have the possibility of the isr corrupting the temp register the main code is in the middle of using. The temp register can be backed up and restored in the isr code, or you guard the main code from interrupts. Probably an easily overlooked thing, and may be easier to put the responsibility in the isr code and let main code run without having to remember to interrupt guard.
//duty=L, period=H
uint8_t dutyVal = 123;
TCB1.CCMP = (TCB1.CCMP & 0xFF00) | dutyVal;
/*
lds r24,2716 //r24 = L/duty, H/period -> TEMP
lds r25,2716+1 //r25 = H/period (TEMP)
clr r24
ori r24,123 //r24 = 123
sts 2716,r24 //L/duty (TEMP) = 123
sts 2716+1,r25 //H/period = r25 (unchanged), TEMP->L/duty
*/
- Log in or register to post comments
TopPages