atmel

Home/Tag:atmel
20 02, 2011

A Menu System – Thoughts about data storage (ATMEGA328)

By | 2016-11-05T11:17:47+00:00 February 20th, 2011|Lightive Project|0 Comments

As i was designing the menu system it quickly became clear that all of the strings required for display would need quite a bit of program memory which simply was not available. Storing these in program memory as variables also meant they were loaded to the ATMEGA328's 2k of ram which will already be managing an array (no pun intended :p) of other variables. This was also a good time to begin considering where settings would be [...]

19 02, 2011

Issue – Driver freezing

By | 2015-01-13T23:46:13+00:00 February 19th, 2011|Lightive Project|0 Comments

The Issue When initially turned on the driver would happily receive commands and act on them. If the device transmitting the commands was interrupted then restarted it would cause the driver to freeze. The issue was reliably replicated. The Cause Using an array of serial messages to debug the code it was apparent the issue was the driver getting stuck in a loop governed by a "millis" function. The millis functions are part of the radio library for the Alpha modules [...]

17 02, 2011

Rounding Error Issues of Floating Arithmetic – Arduino

By | 2016-11-05T11:17:47+00:00 February 17th, 2011|Lightive Project|0 Comments

There is an issue with the previously shown fade mathematics which only appear on the Arduino. What seemed strange at first soon became clear. Micro-controllers are inherently more  comfortable performing integer mathematics over floating point. After analysing the results of the equations which were output to the computer via serial, the issue became clear. Rounding error of floating point arithmetic. The reason behind this rounding error is a cumulative error build up by recalculating repeatedly with an already error vulnerable result. [...]

17 02, 2011

Calculating the Fade Mathematics

By | 2015-01-13T23:40:23+00:00 February 17th, 2011|Lightive Project|0 Comments

A C++ program was written to aid the design of code to be used to calculate and then implement fades on the driver unit. The program reads in all of the values which would be sent over a standard radio packet. This is | BAR | RED Val| GREEN Val | BLUE Val | Fade Time | . It then collects some information which the system will already know, this is the current values of the selected [...]

3 01, 2011

A LIBRARY DEDICATED TO THE SYSTEM

By | 2015-01-13T23:40:53+00:00 January 3rd, 2011|Lightive Project|0 Comments

Introduction By this point much experience and understanding had been gained in the use of libraries and their ability to simplify what is going on in the main program. It was decided that a library will be written to support the lighting system as a whole. This will cut down on code repetition and allow for quicker implementation of new features and tweaks. Code written to date has been modified and transferred to the library. The Library [...]

22 12, 2010

Adding the LCD (16X2 LCD DISPLAY) HD44780

By | 2016-11-05T11:17:47+00:00 December 22nd, 2010|Lightive Project|4 Comments

Introduction The LCD display in question is based on the very popular HD44780 controller. The Arduino platform has plenty of support for this controller and a library for its use is included with the Arduino IDE. The LCD will be driven in its 4-bit operation mode which requires the least pins. The 4-bit mode works by sending one nibble (4-bits) at a time to construct the entire byte. The display also has a character rom which simplifies [...]

14 12, 2010

Using the TLC5940 and Alpha TRX433s Together

By | 2016-11-05T11:17:47+00:00 December 14th, 2010|Lightive Project|3 Comments

Introduction SPI Bus SPI stand for Serial Peripheral Interface. The important details learned are as follows: Slave Select (SS) Serial clock (SCLK) master input / slave output (MISO) master output / slave input (MOSI) When it properly implemented there is 4 wires required. Although both of these components have been tested successfully, they have only been done so individually. The ATMEGA328 microprocessor used has one dedicated Serial Peripheral Interface (SPI) Bus. A design feature of SPI allows [...]

20 11, 2010

Problem – Issue with Arduino board power supply

By | 2016-11-05T11:17:47+00:00 November 20th, 2010|Lightive Project|0 Comments

Background After getting the wireless modules working at close proximity it was time to move them away to test range. At the moment prototyping is being completed using two of these: (Reference: http://www.emartee.com/product/41797/Arduino-Duemilanove-2009-ATmega328) The Arduino Duemilanove is a prototype board which provides the microcontroller everything it needs to be both run and programmed. This makes prototyping with these boards very easy. As can be seen in the photo above the board can [...]

14 11, 2010

Experiment – Connecting up and testing the RF12 / TRX433S modules

By | 2016-11-05T11:17:47+00:00 November 14th, 2010|Lightive Project|3 Comments

Experiment Aim The aim here is to Setup two wireless modules and use the RF12_Demo application provided with the JeeLabs library to drive the modules. Special attention will be paid to the robustness of the signal at range. A secondary aim is to gain an understanding into how the library is driving the modules and begin to think about how I will implement them. Predicted Outcome The specifications on the module say that they can reach a maximum [...]

11 11, 2010

The TLC5940 16-Channel PWM Controller

By | 2016-11-05T11:17:47+00:00 November 11th, 2010|Lightive Project|0 Comments

Introduction Texas Instruments describe the TLC5940 with the following paragraph: The TLC5940 is a 16-channel, constant-current sink LED driver. Each channel has an individually adjustable 4096-step grayscale PWM brightness control and a 64-step, constant-current sink (dot correction). The dot correction adjusts the brightness variations between LED channels and other LED drivers. The dot correction data is stored in an integrated EEPROM. Both grayscale control and dot correction are accessible via a serial interface. A single external resistor [...]