Showing posts with label ATmega. Show all posts
Showing posts with label ATmega. Show all posts

Thursday, May 20, 2010

Mp3 player with ATmega64, Vs1011 & Samsung E700 display

This MP3 player is an upgrade to this player . New in this player is a new nice interface with bitmaps from media player windows 7 and windows 7 battery icons.





I preferred to use bitmaps for interface because in future i want to be possible to change the skin interface from SD card, in this case is more simple to create skins for this player.

V1.0.1A

A little correction for used times for back light, keyboard and battery showing.

Download MP3 PlayerV1.0.1A

V1.0.1

This version player is made to use ASM_SDK V1.0.4 and prepared to work with multiple opened files.

Download MP3_PlayerV1.0.1

From here you can download ASM_SDK.
With ASM_SDK 1.0.5 or newest version you can play from SDHC high capacity > 4GB, at the frequency of only 6 MHz you can play 320Kb/s bit rate melody's.

V1.0.0From here you can download the first source code for this player.To compile this player is necessarily to download and include ASM SDK from here, this version is made to use ASM_SDK V1.0.3.

Thursday, May 6, 2010

Micro Hex Bootloader for ATmega microcontrollers

New in 1.1 version:

The boot loader from microcontroller can report 5 different errors:
  1. LineDefError = One line is not have the defined destination.
  2. SecondHexCharNotFound = If first hex char is found but second hex char is not found or is not one hex char.
  3. CheckSum = If in one line is detected one check sum error.
  4. LineMismach = After conversion from hex to bin If total length line - 5 is not equal to data bytes contained by that line.
  5. NoMemorySelected = If user is trying to write in memory but the user is not sends the command to select Flash or EEProm memory.
Resources:
  • Flash = 852 Bytes For Atmega8( The fusible for jumping in boot loader is necessarily to set to 512 Words ).
  • Flash = 860 Bytes For Uart0 Atmega64-128( The fusible for jumping in boot loader is necessarily to set to 512 Words ).
  • Flash = 878 Bytes For Uart1 Atmega64-128( The fusible for jumping in boot loader is necessarily to set to 512 Words ).

From this moment the source code is ready to download for free.
To compile this boot loader is necessarily to use last ASM SDK.
This Bootloader has maximum 512Words(1KB) of flash and can work on controllers listened down:

ATmega48 Not Tested
ATmega48P Not Tested
Atmega8 Not Tested
Atmega8A Not Tested
ATmega88 Not Tested
ATmega88A Not Tested
ATmega88PA Not Tested
ATmega16 Not Tested
ATmega16A Not Tested
ATmega162 Not Tested
ATmega168 Not Tested
ATmega168A Not Tested
ATmega168PA Not Tested
ATmega32 Not Tested
ATmega32A Not Tested
ATmega64 OK
ATmega64A Not Tested
ATmega640 Not Tested
ATmega128 OK
ATmega128A Not Tested
ATmega1281 Not Tested
ATmega1280 Not Tested
ATmega2561 Not Tested
ATmega2560 Not Tested

Download Bootloader V1.1 ASM Source code and PC uploader C# source code.


First version V1.0

This is an utility that eliminate the ISP programmer for ATmega Microcontrollers and he work even on Windows Vista and Windows 7.

This boot loader is created to upload data in hex format no bin like others boot loaders, to convert from hex to bin is used an function integrated in boot loader not in up loader.

Version ( V1.0 ) is capable to write flash and eeprom (.hex and .eep) generated by AVR Studio and AVR GCC.

The .eep file is detected automatically by the program from the name of .hex file, for this reason is necessarily to select only .hex file.

When this boot loader is present on an ATmega microcontroller ,at reset is booting in boot loader and is programed to stay and wait for "BootInit" + Cr for entering in programed mode for 2 seconds, if "BootInit" + Cr is not received the boot loader jumps to address 0 in flash.

If communication is interrupted more than 2 seconds this boot loader jump to address 0 of flash.

The boot loader from microcontroller can report 4 different errors that can be appear:
  1. LineDefError = One line is not have the defined destination.
  2. SecondHexCharNotFound = If first hex char is found but second hex char is not found or is not one hex char.
  3. CheckSum = If in one line is detected one check sum error.
  4. LineMismach = After conversion from hex to bin If total length line - 5 is not equal to data bytes contained by that line.
Resources:
Flash = 952 Bytes For Uart1 ( The fusible for jumping in boot loader is necessarily to set to 512 Words ).

Down is ready to download 2 Hex demo files that contain the boot loader for ATmega64 at 16Mhz and 8Mhz at Baud rate 19200b/s for Uart1

Download PC uploader V1.0
Download BootLoader for ATmega64 8Mhz Uart1 19200b/s V1.0
Download BootLoader for ATmega64 16Mhz Uart1 19200b/s V1.0

Wednesday, April 29, 2009

DiY: MP3 player with ATmega64 VS1011a and Samsung E700 color Display

This is my new mp3 player.

For this MP3 player is new: the display and a new graphical interface explorer.

Knowing that the display of the Nokia 6100 is an old and extremely poor quality, I thought to exchange it with one TFT display ( higher quality ) , by doing this I thought I make an new interface, and this is the result:

-File type played (VS1011): Decodes MPEG 1.0 & 2.0 audio layer III
(CBR, VBR, ABR); layers I & II optional;
WAV (PCM + IMA ADPCM)

-File type played (VS1033): Decodes MPEG 1 & 2 audio layer III (CBR
+VBR +ABR); layers I & II optional;
MPEG4 / 2 AAC-LC-2.0.0.0 (+PNS);
WMA4.0/4.1/7/8/9 all profiles (5-384 kbps);
WAV (PCM + IMA ADPCM);
General MIDI / SP-MIDI format 0 files
-File type played (VS1053): Decodes Ogg Vorbis;
MPEG 1 & 2 audio layer III (CBR +VBR
+ABR); layers I & II optional;
MPEG4 / 2 AAC-LC(+PNS),
HE-AAC v2 (Level 3) (SBR + PS);
WMA4.0/4.1/7/8/9 all profiles (5-384 kbps);
WAV (PCM + IMA ADPCM);
General MIDI 1 / SP-MIDI format 0 files

For bitrate higher than 320Kb/s is necessary to increase the CPU frequency from fuses for 4Mhz to fuses for 8Mhz internal RC

This project is under develop.
Last update 14-06-2009
Download source code
Download the board .max and gerber files
Download orcad schematick
Download PDF schematick




Mp3 Player with Winamp skin

Mp3 Player with Synthetic skin

Mp3 Player with Media Player skin Download demo hex fileThe fuse bit be set for 4Mhz Internal RC Oscillator

Mp3 Player with Half Life skin

This player run 2 threads , one for navigating and one for serving data to VS1011.

The last rectify of compatibility of Fat32 filesystem library and Player data service library has increase the transfer rate , in this moment the player is capable to read 256Kbit/s melody at 4Mhz internal RC clock with osccal=199(default), and 320Kbit/s at 4Mhz and osccal=255 (approximately 5Mhz) internal RC clock.

Now i work to one explorer configured from skin file like XML file.

This navigator display the short filename if the long file name is not writed on the name of file.

For support post a comment






This project was abandoned for another more powerful.

Thursday, April 23, 2009

DiY: most tiny MP3 player with ATmega8 VS1011a and Nokia6100 Display

This is a complete mobile MP3 player and first mp3-player with ATmega8 and Nokia 6100 color display.

An demo firmware and gerber file for board will be available soon.

This player has capability to play wav and mp3 files and view BMP files on 8 or 24 bits/pixel from a MicroSD card with maximum capacity 2GB, the format of the SD is FAT32 with clusters from 512 Bytes to 32768Bytes, the filesystem has no limits in number of directories and files.
For future i want to adapting the SD driver for SDHC because the filesystem is designed to use all capacity of fat32 ( 2TB in 512Bytes/sector)

List of features:
Play Wav and MP3 Files because the VS1011a only this files is capable to decode( but for future in this project i want to include the VS1053 chip to play more file formats.
View Bitmap files on 8Bit and 24 bit/pixel

This project is in asm language and my 100% own libraries









For the moment the project has 5172Bytes of Flash , 663Bytes of Ram and 0Bytes of EEprom

I work to another MP3 player:
New MP3 Player Link

Saturday, February 28, 2009

Fat32 complete library in asm language

Observing that the file system created by me is almost identical to FAT32, i decided to convert to FAT32, this library work with clusters from 256 bytes to 32768 bytes autodetect from storage device.

This library is in asm language.

This file system is designed for double buffered (a buffer to the Allocation Table and a data buffer) this method of using separate buffers increase the rate of transfer to the storage device.

The buffer’s separation between allocation table and the data, makes that at each change of the data cluster not to charge the next cluster index from storage device. In this case, the index is token from allocation table’s buffer, if this is inside the sector memorized inside buffer. If this is not inside the sector of the buffer, then will be saved the buffer in allocation table (in case that inside the buffer has been made a modification), and then will be loaded in the sector where the index is.

In this way can be made with the data buffer. The pointer can be putted at an particular offset from open file, and then, from the address of the pointer can be read byte with byte, the pointer been incremented automatically. The same will be the sectors inside the buffer, those will be changed automatically. It doesn’t matter for user which cluster or bit must be read, because everything is done automatically. User must set the address of the file needed and the pointer of the address of the byte inside the file.

Done functions:
-Go to file/folder ( address in clusters )
-Go to next file/folder in current directory ( this function return Flag T in Sreg = 0 if the pointer is on bottom of the list else return 1)
-Go to forward file folder in current directory ( this function return Flag T in Sreg = 0 if the pointer is on top of the list else return 1)
-Read address on pointed file/folder ( in clusters )
-Read short name of pointed file/folder ( string 11 char )
-Read full name of pointed file/folder ( string max 128 char )
-Read byte by byte the file opened ( offset of byte in file ) with autoincrement pointer
-Write byte by byte in the file opened ( offset of byte in file ) with autoincrement pointer ( this function work with append in file and have property to enlarge the size of file )
-Read pointed file size (in bytes)
-Write pointed file size = current pointer
-Read pointed file attribute
-Write pointed file attribute
-Read pointer in opened file
-Write pointer in opened file
-Create file with short name converted from long name( Creating with long name not completed )
-CloseFile ( when the file is closed if the pointer in file is bigger to actual size of file , the actual size of file = pointer position in file ( in read mode is not possible to point to an byte address bigger to file size but in write mode this is possible because the file is auto enlarged )

The terminal have next functions:
+ :
Go Down one file folder and read short and long file name.
- :
Go Up one file folder and read short and long file name.
Enter :
1) Go to selected folder,
2) Open selected file,
3) Close opened file.
Esc :
Close opened file
p :
Enter in write long file name, and Enter will convert from long filename to short filename
c :
Create file with converted short filename


Performance obtained with ATmega640 at 16 Mhz and SPI hardware at 8Mhz:

Write SD Card with 512 Bytes/cluster = 48659 Bytes/s
Write SD Card with 4096 Bytes/cluster = 40163 Bytes/s
Read SD Card with 512 Bytes/cluster = 70286 Bytes/s
Read SD Card with 4096 Bytes/cluster = 56229 Bytes/s

Transfer rate depends on the device storage and on fragmentation.
The flash used not include the terminal

Resources for maxim 512 bytes/cluster:
Flash= 3220 Bytes ( Only read section )
Flash= 5042 Bytes ( Read and write sections )
Ram for allocation table management= 542
Ram for data management= 629 (512Bytes (Data Buffer)+ 64 (Bytes String Long Name) + 11Bytes (String Short Name) + Variables )
Total Ram= 1171Bytes

Resources for maxim 4096 bytes/cluster:
Flash= 3220 Bytes ( Only read section )
Flash= 5042 Bytes ( Read and write sections )
Ram for allocation table management= 542
Ram for data management= 4213 (4096Bytes (Data Buffer)+ 64 Bytes (String Long Name) + 11Bytes (String Short Name) + Variables )
Total Ram= 4755 Bytes

The ram size is set by user because the maximum size of cluster is set by ram buffer data cluster

The data management library is a dynamic library ( That means this library can be open multiple times, and when you call the library in Z must be the beginning address of RAM to work with ) for this i wrote the ram size table occupied by allocation library and data management library separately

In conclusion we can work with multiple open files using a single library written in flash that can work with multiple sections of ram

Operating principle:
This block function is one example only for 512 Bytes/Cluster Fat32 formats for other cluster dimension the ram allocation is different.


Fig1


In this moment i work to create and allocation table library from static library to dynamic library

These two libraries ( allocation table and data section ) will be in 2 variants:
1) A library will have only buffer for data which can be put on the controllers with ram more than 655Bytes
2) A library that does not include buffers (will lose the stats of dynamic library) but which can be put on the controllers that have the minimum 128Bytes of ram
____________________________________________________________________

This library is concept to work with only one buffer and work fine to my MP3 players at 5Mhz with 320Kb/s melody with one artifice, and from this moment this library is open source
This library use 3016Bytes of flash and 655Bytes of ram memory
The up bloc description in Fig1 can by applied and for this library

1)Fat32_DataInit
2)Fat32_ReadByte
3)Fat32_GoToRoot
4)Fat32_GoToFile
5)Fat32_ResetDirPointer
6)Fat32_IncrementDirPointer
7)Fat32_DecrementDirPointer
8)Fat32_GetShortFileName
9)Fat32_GetLongFileName
10)Fat32_GetFileAdress
11)Fat32_ReadFileSize
12)Fat32_ReadFileAttr
13)Fat32_WritePointerInFile
14)Fat32_ReadPointerInFile
15)Fat32_OpenPointedFileFolder
16)Fat32_CloseFile

Last update 17-06-2009
Download fat32 read only library for atmega64
Download fat32 read only library for atmega8

Now this driver is updated and included in my ASM_SDK here

For support post a comment

Thursday, January 29, 2009

4x25W amplifier with internal usb control

This is a 4x22W amplifier 4Ohm which is young for a PCI Desktop slot and can be diagnosed and controlled by an internal USB connector.
This project is still in development stage
This card is made with a specialized circuit in Class D with I2C control interface produced by TexasInstruments TAS5414 QFP64 and a ATmega8 controller

Wednesday, October 22, 2008

Real schematik to interface a SD/MMC card to atmega microcontrollers

Because many sites operate a scheme to connect an SD/MMC card to a ATmega microcontroller that is non functional, I mean scheme with dividing resistive to the ground, I decided to post an overall scheme real functional and will post and parameters operation of a card at different voltages, everything after more probe:

We know that most cards SD/MMC operates in a voltage between 2.7 and 3.6 V, I will recommend one to use the minimum operating voltage.
However such a card works at 5V supply voltage without any risk of failure, but a voltage across the card manufacturer's specifications will work only read data and read CID etc. Write delete functions will not work

SD/MMC card and ATmega at diferent voltages:





SD/MMC card and ATmega at same voltages:


Sunday, October 12, 2008

Spi Software for all atmega microcontrollers

This is a simple library for software SPI compatible with all ATmega microcontrollers according to specifications 45DB SPI interface

( is not tested yet )

Download ASM Library

Friday, October 10, 2008

Driver for Nand Flash memory chip for normal port operation

This is one driver for interfacing programs to Nand Flash Chip Memory as those used in Stik USB or SD / MMC cards

It is known that a page of a nand Flash memory is 2048 +16 Bytes

Nand flash memories allow delete only a block of data or the entire chip, writing a whole page, reading a whole page, or rewriting a page keeps unchanged, but you can not edit a byte already written a page.

This example is for 1GByte nand flash chip memory K9K8G08U0A

Download ASM code driver




























































Download .Max Orcad Project

I2C library for 24C.... external EEprom memory for ATmega microcontrollers

This is a driver for control one 24c... EEProm memory on Byte level for read / write and page level for complete format

This driver is compatible with EEProm i2c memory between 512 and 65536 Bytes capacity.

This library is made for ATmega8 but with some modifications is working on all ATmega microcontrollers

Download this library

Monday, October 6, 2008

My third development board for ATmega640-1280-2560

There are modules and connectors to come on this development board.
Point out that I did not even cable.

Here is described the top face:





















Here is described Bottom face:






















Download .MAX project for orcad

Sunday, October 5, 2008

Manage page from SD/MMC/HDD memory with page bufer

This is one driver for accessing SD/MMC/HDD drive on byte level with auto replacement page selection

This driver support drives until up to the amount 2^41 in 512Bytes on page and 2^48 bytes in 65536Bytes per page

This library is ready to serves pages from 256 to 65536Bytes

Download ASM driver file


And this driver is interface to up driver and SD card memory


Download ASM driver file

With this drivers on ATmega640 at 19,5Mhz the transfer rate betwen Controller and SD card is :
-63167Bytes/s Linear write
-111550Bytes/s Linear read

Saturday, October 4, 2008

Mini Led Cross

One sample led cross





Download entire project

Extended driver in comand line for Nokia6100 Display Philips chip

This driver is designed to work with a display of Nokia6100 with the Philips chip and is provided with additional features from the base:

This driver is double buffered to refrash's on display only characters that are modified in this way speed refrash being much improved given that SPI interface 9Biti display is done with software

Positions included declared constants in the driver are:

1) DisplayIdle = Idle
2) DisplaySetup = Interface Setup
3) DisplayWriteChar = WriteOneChar (auto increment, R16 = character writing)
4) DisplayUpCursor Moving the cursor from the menu at a superior position
5) DisplayDnCursor = The move cursor on the menu at a lower position
6) DisplayGetCursor = Read position the cursor on the menu (R16 = Position)
7) DisplayClear = Clear display
8) DisplayWriteTxt = enter a default text from flash memory
9) DisplayCreateProgress = Create a Progress bar
10)DisplayProgressRfsh = Update the progress bar (yl = value between 0 and 111)
11) DisplayCreateMenu = Create a Menu (x is adress of menu in Flash)
12) DisplayInkColor = Set the color character (R16-R17 = color)
13) DisplayBekgroundColor = Set the becground color (R16-R17 = color)
14) InteruptDriverLCD = Interupt priority

To access this subrutinelor driver just called routine selection functions.

EX:
Ldi R25,(Commanda)
Mov R15,R25
Rcall PrimireComenziDriverLcd6100

Resurse consumate:
- Flash ...
- EEprom ...
- Ram = (2x256)+20Bytes

Rfsh display is made to order InteruptPriorrity therefore it should be called the most possible and loops of delay and Idle because every call of this is rfsh a character on display, so to make everything rfsh display is need to call this with 256 times.
I chose this method because rfsh entire rfsh display controller take quite a long time about 0.2 seconds and if it stays in a loop of 5-second delay for example in those 5 seconds is no longer able to refrash, so may resort to a contrivance: to make delay-ROMs and much shorter and every delay to send the command to rfsh such display is being updated and if the display is ADD characters and commands of interruptions


Download this driver

Minidriver for Nokia3310 Display

This is a general driver

EX:
Ldi R25,(Command)
Mov R15,R25
Rcall PrimireComenziDriverLcd3310

1) Idle
2) Setup Interface
3) No Comand
4) WriteOneChar(auto increment, R16 = The aracter)
5) WriteOneCharWithAdress(R16 = The caracterul,R17 = Vertical adress (0 to 13),R18 = Horizontal adress (0 to 4)
6) Clear display(Black Color)
7) Clear display(White Color)
8) Print Logo (x = The adress of logo in flash memory,R17 = Orizontal adress in char (0 to 13),R18 = Vertical adress in char (0 to 4))
The logo is in this format:
; ------------------------------------------------------------------------------------------------------------------------------
|Low(LogoDimension)|High(LogoDimension)|0=NonInvertingColor,1=InvertingColor|......Logo.................|
------------------------------------------------------------------------------------------------------------------------------

Download driver

Minidriver for Sharp displays 320x240

This is a driver for 320x240 3,5 inch Sharp display in command line mode 2,5 FPS atmega64 16 mhz

To display the characters on the screen uses a buffer for ASCII characters to be displayed with the size of 1200Bytes (Xresolution / XCaracterDimension) * (Yresolution / YCaracterDimension)

Download entire project

RPM & Temperature & Gass Monitor

One simply project for ATmega Microcontrollers

Function = RPM & Temperature & Gass Monitor in Graphic mode

Contain:
One module for measurament of pulse and convert in RPM
One module for measurament of Temperature in analogic mode
One module for measurament of Fuel Gass in analogic mode
One driver for LCD display Nokia 3310 including char inserting and logo paint
This program is compiled in ASM AVRStudio 4

Target core = Posted for Atmega8
Modified = All ATmega Core

Resources :
Data Flash = 2114 Bytes
Code Flash = 1256 Bytes
Total Flash = 3370 Bytes
Data Ram = 7 Bytes

Download entire project

3 in 1 bipolar motor steper controller with only one controller

This project is designed for control 3 motors stepper independently with only one ATmega8 mocrocontroller
The interface is Serial 19200b/s





Dovnload entire project