CONTENTS

Home
Updates
Software
Electronics
Music
Resume
Contact


YouTube
Twitter
GitHub
LinkedIn


Atmel ATmega168 Memory Probe

Introduction

This is a project for reading/writing from sram, eeprom, i/o ports, and flash from a high level interpreted interface. I did this project more for an exercise and possibly a learning tool for me and possibly others. This would be a great program, for example, to hook some sensor to the device and use the "readi" command to see what kind of values the sensor is sending to the device without having to write any code.

For a list of parts, schematic, and description of the hardware, take a look at my Atmel rs232 page.

I'm thinking of selling preprogrammed chips with this software for about $10 a piece + shipping. Send me an email if you're interested.

Explanation

The circuit as described here is hooked up to a PC's com port. Using any rs232 communications program such as Procom or Minicom the user is presented with a command prompt. At the prompt the user can type any of the following commands:

  • read <address> - to read from sram
  • write <address> <value> - to write to sram
  • readi <port address> - to read from an i/o port
  • writei <port address> <value> - to write to an i/o port
  • reade <address> - to read from eeprom memory
  • writee <address> <value> - to write a value to eeprom memory
  • readf <address> - to read from flash program memory
  • writef <address> <value> - to write to flash program memory

All addresses and values are input'd/output'd in hex.

Example

Using the circuit on my Atmel rs232 page, if I wanted to turn the LED on I could type:

command< writei 5 0

Or to turn it off (and any other LED on PORTB)

command< writei 5 ff

Screen Shot

Screenshot

To Do

  • Test readf/writef and make sure they are working properly
  • Code reduction/simplification in the parser

Download

atmel_probe.asm

NOTE: This code is written for the ATmega168. This processor memory maps the UART registers into SRAM. Other Atmel chips might need in/out instructions instead. Using this as a guide it should be pretty simple.

Copyright 1997-2024 - Michael Kohn