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.
On this blog I try to do projects and post the most visited projects can be found on the Internet ( Only my creation )
Showing posts with label ATmega. Show all posts
Showing posts with label ATmega. Show all posts
Thursday, May 20, 2010
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:
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:
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
The boot loader from microcontroller can report 5 different errors:
- LineDefError = One line is not have the defined destination.
- SecondHexCharNotFound = If first hex char is found but second hex char is not found or is not one hex char.
- CheckSum = If in one line is detected one check sum error.
- LineMismach = After conversion from hex to bin If total length line - 5 is not equal to data bytes contained by that line.
- NoMemorySelected = If user is trying to write in memory but the user is not sends the command to select Flash or EEProm memory.
- 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:
- LineDefError = One line is not have the defined destination.
- SecondHexCharNotFound = If first hex char is found but second hex char is not found or is not one hex char.
- CheckSum = If in one line is detected one check sum error.
- LineMismach = After conversion from hex to bin If total length line - 5 is not equal to data bytes contained by that line.
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.
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

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.
Etichete:
ATmega,
ATmega64,
DIY,
Fat32,
MicroSD,
MP3,
MP3 Player,
Player,
Samsung E700 color Display,
Sd/Mmc,
TFT Display,
VS1011
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
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
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.
Fig1In 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
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:

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
( 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
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
Etichete:
1GB,
ATmega,
Driver,
K9K8G08U0A,
Nand Flash,
Software Driver
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
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
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
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
Etichete:
7x5 Matrix Led,
ATmega,
ATmega64,
Led Cross,
ULN2003
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
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
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
Etichete:
ATmega,
Display,
Driver,
Minidriver,
Nokia3310
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
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)
Etichete:
320x240 Display,
ATmega,
ATmega64,
Display Driver
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
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
Etichete:
ATmega,
ATmega8,
Gass Monitor,
RPM,
Temperature
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
The interface is Serial 19200b/s
Dovnload entire project
Etichete:
ATmega,
ATmega8,
Computer controll,
Controller,
Moror Steper,
Motors,
RPM
Subscribe to:
Posts (Atom)

