Making a jtag2updi adapter

This article is about selection and reprogramming of an adapter to make a jtag2updi adapter using the code published at https://github.com/ElTangas/jtag2updi.

The purpose is for programming some of the newer AVR chips that use UPDI.

Above is a JTAG ICE that I purchased, but I did not check the pics carefully enough and fell foul of the Chinese Cheats. The chip arrowed is the USB-RS232TTL chip, it is a PL2303HX which will not work in Windows 10 since the driver was poisoned many years ago. Continue reading Making a jtag2updi adapter

Hot water woes

A recent episode where the 170l gas storage hot water service relieved itself through the pressure / temperature relief valve sent me on a quest to understand the problem.

At the time, a ‘full rate’ discharge of 95° water was holding the valve open, and even with the gas turned off, the flow continued for some time until I closed the water isolation valve to let the system cool down.

So, was this simply a thermostat failure, temporary or permanent, or perhaps the result of ‘stacking’.

Stacking is caused by repeated very short draws of hot water, which cool the bottom of the tank near the thermostat, triggering heat input which can cause the top of the tank to reach temperatures considerably higher than the set point of the thermostat.

Another question that was of interest in choosing a replacement if needed, was how much heat is lost from the heater, what is the running cost of heat leakage alone.

Heat leakage

The heater was allowed to reach ‘normal’ operating temperature and stabilise, and the gas valve was closed which would allow the unit to cool.

A variation on my IoT water tank telemetry project was configured to use a type K thermocouple and 4-20mA converter to provide a temperature logger, a type K thermocouple was inserted between the insulation blanket and tank at the top of the tank. The 4-20mA converter does not incorporate cold junction compensation, but the logger incorporates an ambient temperature measurement facility which will be used for approximate compensation.

Above is the improvised data logger setup. Continue reading Hot water woes

(tr)uSDX firmware, bootloader, application – an explanation

Introduction

The term firmware means lots of things to lots of people, and you will see so many definitions that it becomes confusing.

It is apparent from postings by people about (tr)uSDX (trusdx) that the rubbery definition prevails in that environment also.

The term firmware came into being 50 odd years ago, about the time that microcomputers appeared. There was a need for a term to describe something that sat between traditional hardware and software, the programming that was ’embedded’ in the system.

ATmega328P memory

In the case of the ATmega328P (as used in the (tr)uSDX), it contains three main blocks of memory and some auxilliary non-volatile storage, the three main types are:

  • RAM (volatile scratch storage used for running programs);
  • FLASH (non-volatile memory used for user programs (instructions and constant data); and
  • EEPROM (non-volatile memory often used to save settings, calibration data etc).

Firmware

We might reasonably regard that all of the contents of FLASH is firmware.

Bootloader

(tr)uSDX uses a bootloader, user code that can be executed on startup to load user programs into FLASH. In the case of the ATmega328P, the bootloader resides in FLASH at the top of the address range. FUSE settings tell the system to start at the boot section on power on reset, and they can be used to protect the bootloader from corruption on reliable systems (this last feature is NOT used on (tr)uSDX).

Above is a map of FLASH memory for an ATmega328P for the configuration used by (tr)uSDX from the chip datasheet. Continue reading (tr)uSDX firmware, bootloader, application – an explanation

SNTP synchronised clock v0.04 – beta release

The SNTP synchronised clock (ssc) is an ESP8266 based time of day clock with an LED display.

Above are two prototypes both using HT16K33 display modules. (The display has a blinking colon, it is off in the pic.) There is a silicon photo transistor just above the display, used to sense day/night and the firmware changes display brightness. Continue reading SNTP synchronised clock v0.04 – beta release

Chinese 9.6V 700mAh Tamiya style battery pack

I had need for a rechargeable 9.6V NiMHbattery to replace a worn out one.

The last was made by fabricating a pack with AA long life cells and it worked well for 10 years… but its time had come.

The above pack on eBay for $12 ($17/Ah) looked interesting, though it would need a wrap of heavier heatshrink. Continue reading Chinese 9.6V 700mAh Tamiya style battery pack

Chinese 3.0V 16340 CR2 Lithium Ion batteries

I had need for a rechargeable CR2 battery. The ‘standard’ CR2 is a non-rechargeable Lithium battery of nominal 3.0V.

I purchased two Ultrafire batteries advertised on eBay as Lithium-ion of 800mAh for $20. Without further qualification, we normally take Lithium Ion to be nominally 3.6V. The batteries are marked Li-ion 3.0V. Continue reading Chinese 3.0V 16340 CR2 Lithium Ion batteries

(tr)uSDX bootloader corruption – a smoking gun – an experiment

At (tr)uSDX bootloader corruption – a smoking gun I proposed that the (tr)uSDX (trusdx) is vulnerable to users attempting to program the initial bootloader file using the (tr)uSDX USB port and its bootloader interface because without protection, that will attempt to overlay the bootloader while it is being executed and that is likely to corrupt the bootloader.

The (tr)uSDX bootloader code is proprietary, ie secret.

This article documents an experiment that demonstrates the vulnerability, and the effect of bootloader section protection.

Below are a series of verbose AVRDUDE logs of the operations to discover / demonstrate the outcomes. Continue reading (tr)uSDX bootloader corruption – a smoking gun – an experiment

(tr)uSDX bootloader corruption – a smoking gun

A common topic of discussion on (tr)uSDX (trusdx) forum is problems in loading firmware (application or bootloader.

A user posting provides evidence for discussion of the problem in this case, probable cause, solution, and a better design to prevent the problem.

Analysis

The type of programmer (Arduino), connection (COM port) are the settings one would use to talk to a bootloader already installed on the mcu to write the application program to flash. They are not the settings one would use to install the bootloader, they are not suitable for talking to the ISP facility burned into silicon. Continue reading (tr)uSDX bootloader corruption – a smoking gun

Digital display for DIY 25W dummy load – part 2

Digital display for DIY 25W dummy load – part 1 described VK4MQ’s build of a DIY 25W dummy load / digital wattmeter with very good performance. As part of the project, Bruce made an exhaustive set of measurements of Prf vs Vdc from 0.001W to 25W. A second order curve fit was calculated and is used in the instrument to transform measured Vdc to Prf for display.

That project was an elaboration of a design worked up at Digital display for QRP labs 20W dummy load – part 1 and following articles. That workup included an LTSPICE model of the half wave detector with BAT46 diode, 0.1µF capacitor and 56k+1k voltage divider. A second order curve fit was calculated and is used to transform measured Vdc to Prf for display.

This article compares the LTSPICE model data set, its curve fit, the measurements of Bruce’s implementation, and its curve fit. Continue reading Digital display for DIY 25W dummy load – part 2