Modifying the Scanner for Watermark Scanning

The guy so called bunnie made interesting project by modifying the flat scanner. He managed to enhance watermarks by using blue LED’s instead white ones. He built a bar of of surface mount LED’s and placed it instead of white led bar. Using such scanner watermarks become visible to the naked eye. Read more at www.bunniestudios.com

Continue reading

Radio Frequency Identification RFID

There are two types of RFID devices: Active and Passive. Active devices have power source built in which supplies the transmitter. The transmitter is triggered by sending the signal to RFID device. These devices have their own code and can transmit signal in desired time intervals. Active RFID devices are good in defining locations of objects or sending some information about particular place (RFID-based location determination). Active RFID devices use high frequencies (455MHz, 2,45GHz or 5,8GHz) – working range about 20 – 100 meters. The most common are passive RFID. They don’t need power source. Passive RFID devices are low frequency(124 – 135kHz – low) and high(13,56MHz – 960KHz – high; 2,45GHz – UHF). The working principal of low and high frequency devices differ. While low frequency readers generates magnetic field which induces current in RFID device antenna. The chip inside RFID device modifies this magnetic field which is read again by reader. The working distance of such device is about 35cm.

Continue reading

What is surface mounting

Simply talking surface mounting is a soldering technology where component is soldered directly to a series of solder pads called a footprint. It is different soldering technology from through hole, where component leads are inserted into holes of the board. Footprint is a series of pads that conform to the lead layout of packages of surface mount devices (SMD). Surface mounting has several advantages over through hole technology. First of all the board become much smaller. So smaller boards and more dense placement of elements reduce costs. Because of higher placement density traces between components becomes shorter. It lowers parasitic inductance and capacitance. Table shows the changes while redesigning the through hole board to SMT. We can see the board size were reduced by 59%, the number of layers was reduced from 6 to 4 and the costs were cut in half. Now everyday new components are introduced. Probably there is harder to find some components in DIP packages rather than SMD. Now you can find all passive elements in SMD packaging like resistors, inductors, capacitors, ICs, switches, crystals, relays, transformers. So if you decided to use SMD components in your design remember, that most of SMDs are designed for…

Continue reading

Control memory sections using AVR GCC

If you programming AVR microcontrollers in C usually you don’t think how compiled program is stored in microcontrollers flash memory. Compiler organises data in the way it looks optimal. But sometimes you are working with programs where you need you code chunks located in specific program memory locations. For instance faced this problem while developing an AVR controlled signal generator. I wanted to make efficient and compiler independent main loop where the signal has to be read from flash memory and transferred to port. I managed to use in line ASM function which does the job: //…………………………………………………….. void static inline signalOUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0) { asm volatile( “eor r18, r18 ;r18

Continue reading

How to measure signal period using microcontrollers

Measuring signal period is common problem in embedded systems. This can be measuring time between two events or measuring signal frequency f=1/T and so on. Measuring of time interval or period is based on comparing of event time t with discrete time usually produced by timer. This usually is done by filling the event time t with discrete time intervals Δt. According to this, discrete time signal period has to be much shorter than event time: Δt

Continue reading

Why to move from ASM to C

ASM language is a low level programming language. It takes tons of time to develop embedded programs. Now even 8 bit microcontrollers arent as smal as they were earlier. The program memories are climbing to megabyte(s). Program structure becoming more complicated because of bigger functionality demand. This is why it is better to use higher level programming languages like C. By using C language you are not overwhelmed by details. You don’t have always to think about hardware logic to be able to program its restricted tasks. It is better to give this work to C compiler which helps you to avoid bugs in silicon level. Another C language benefit against ASM language is portability. Lets say you work on one embedded system architecture and decide to move to other maybe more advanced. If your previous program were written in ASM language, then you will need to rewrite (modify) this code from scratch. Using C language you are able tu run program on different microcontroller without significant modifications. This also reduces the costs of your project upgrade. Continuing the thought it is good to mention, that using C it is easy to save specific hardware routines to libraries which are…

Continue reading

Shelling The Intel 8-bit Hex File Format

Intel 8-bit Hex File Format is the most common hex file format used in the world as far as I know. There is also Motorola Hex file format and maybe other. Creating applications with AVR-GCC we usually select ihex output file format what means Intel hex file format. Lets go through it and see whats inside. It is simple as 6 and 6 (six and six), because each Hex file line consists of six parts. And there can be 6 record types in hex file. Lets go through all six parts of each line: Start code is always character ‘:’; Byte count takes one byte (hex pair) indicating a number of bytes in a data field of the lin. Usually there are 16 or 32 bytes of data in each line; Address takes two bytes (16 bits – four hex digits). Address shows the beginning of memory position for the data. 16 bits gives a limit of 64kilobytes. This is worked around by specifying higher bits via other record types; Record type takes one byte (two hex digits). It defines the type of data field; Data is a sequence of n bytes (2*n hex digits); Checksum is one byte (two…

Continue reading