VGA to X-Y-Z scope converter

This is a fun project I found on Jon’s antique radios web-page. He has managed to convert the VGA output signal from PC to X Y X oscilloscope signal. Converting the VGA RGB signal to a synchronized oscilloscope input signal is pretty easy because VGA has two sync signals separate from RGB signals. Look at pin-out of VGA cable: Sync signals make things much easier as there is no need for additional sync signal generators – thus circuit becomes pretty simple without any programmable components:

Continue reading

ATTiny2313 Monitor tester

This project was born for repairing broken PC monitors. This allows avoiding using a computer while testing monitor patterns. The Tiny monitor tester uses ATTiny2313 AVR MCU running at 20MHz speed. Such speed allows running synchro H and V signals directly from MCU ports. Also circuit converts R, G, B signals to analog using a simple R-2R resistor network. ATTiny2313 Monitor tester:

Continue reading

ARM7 MCU Bus structure

ARM MCU has multiple bus structures. There are two types of Busses in ARM7 microcontroller – Advanced High-performance BUS (AHB) and VPB bus. AHB is a fast bus that is clocked directly by PLL and works simultaneously as the ARM core. So to the AHB bus, the ARM core, and Interrupt controller is directly connected while other peripherals are connected through the VPB divider. VPB divider can divide the speed of AHB by 1, 2, and 4. so this means if the VPB bus divider will be set to 4 and the CPI core speed will be 60MHz, then the MCU timer will run at speed 60/4=15MHz. C code snippet of VPB speed setting:

Continue reading

Debugging tools for ARM7

Usually, one solution of debugging is to run compiled code on a PC simulator. You can download a limited version of the instruction set simulator from Hitex for free. Of course, better simulators aren’t for free. More advanced simulators you can purchase at Keil. More advanced, I mean that there is the ability to simulate peripherals by additional scripting and so on. But again, simulators are virtual tools, and usually, it is hard to simulate real-world events. Once you face this problem, you are going to switch to real-world simulation using JTAG.

Continue reading

RS232 emulates I2C for 24cXX memory programming

Sometimes you need a quick and easy solution for programming serial EEPROM memory chips. I think the easiest and well-known method is to use a simple programmer adapter with very few components: This adapter is connected to the RS232 port, and there is no need for an additional power supply as it comes from the PORT pin. The adapter is compatible with JDM Programmer so that you can use its programming software like IC-PROG. Just make a couple of settings, and you are ready to go:

Continue reading

Desoldering Atmega128 using a lighter

I heard about this method and decided to try it with my board. I needed to replace the Atmega128 chip but didn’t have hot air solder for desoldering IC. I tried this weird desoldering technique, and I can say that I was satisfied. Tracks and other parts weren’t damaged. The Atmega128 board is working again as before.

Continue reading

Interesting research on ceramic capacitors

I found an interesting article about the capacitance of ceramic capacitors may depend on voltage applied. In some designs, you can face a problem when ceramic capacitor capacitance may strongly depend on voltage. Few tests were done with various capacitors using the following circuit: In the circuit CX – tested capacitor; C0 – known capacitor. Voltage vas regulated from 0 to 50V using potentiometer R1. 50V is taken as the nominal voltage of the ceramic capacitor. Because Two capacitors are connected in series the total capacitance is C=CX·C0/(CX+C0) then we find the capacitance of tested capacitor CX=C·C0/(C0-C); C0 is about 10 % of CX value. There were several capacitors tested and stunning results were found. – Some of the capacitors lost capacitance from 10 to 15 times due to the increase of voltage up to 50V. Even when 10% of voltage were applied the capacitance was only about 35 – 40% of nominal value. The only explanation may be that low-quality dielectric material is used in (no-name) ceramic capacitors. Of course, not all capacitors gave the following results. But be ready for this when using unknown producer ceramic capacitors.

Continue reading

AVRJTAG clone in action

Building AVR Jtag clone Finally, I found some time to finish the AVRJTAG clone. It was hanging for a while on a breadboard with a bunch of wires. I have made an Eagle CAD project with a PCB layout you will find at the article’s bottom. I didn’t change the circuit very much from the previous, just added ISP header(but didn’t have a chance to test it) and transferred to Eagle project as I didn’t find one ready to build:

Continue reading

Compressed Thumb instructions of ARM MCU

Thumb instructions Thumb instructions shrink ARM instructions from 32 bit to 16-bit length. This allows saving up to 40% of program memory comparing to the ARM instruction set. Maybe this is the main reason for Thumb instructions being used. Thumb instructions lose many properties of ARM instructions and become similar to traditional RISC instructions. Thumb instructions cant be conditional. Data processing has a two-address format where the destination register is one of the source registers. ARM instruction: ADD R0, R0, R1 Thumb instruction: ADD R0, R1 As the Thumb instruction set takes less program space, it allows to upload bigger applications, but with lower speed than using ARM, instructions performance is up to 40% faster. But in noncritical applications or functions speed isn’t a significant factor. Also, Thumb instructions don’t have full access to all registers. Thumb instructions can only access “low registers”(R0-R7). And only a few instructions can access “high registers”(R8-R12).

Continue reading

ARM7 core instruction set explained

ARM7 architecture has a normal 32bit ARM7 instruction set and a compressed 16-bit instruction set, the so-called “Thumb.” ARM7 instructions have complex behavior. As ARM processor programming is usually written in C, there is no need to be an ARM expert, but understanding the basics may help develop efficient programs. ARM7 datatypes ARM7 processor can support following datatypes: 8 bit signed and unsigned bytes; 16 bit signed and unsigned half-words; 32 bit signed and unsigned words But shorter than 32-bit data types are supported only by data transfer functions, but when internally processed, they are extended to 32-bit size. ARM7 core doesn’t support floating point datatypes – they can only be interpreted by software.

Continue reading