AVR ISP adapter (avr109/910 compatible, using ATmega16)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

71 lines
2.5 KiB

#ifndef SPI_ISP_H_
#define SPI_ISP_H_
#include <stdint.h>
#include "avrdevice.h"
/* *********************************************************************** */
#define SPI_SET_CLK_MAX 0
#define SPI_SET_CLK_DEC 1
#define CMD_PROG_ENABLE_1 0xAC
#define CMD_PROG_ENABLE_2 0x53
#define CMD_CHIP_ERASE_1 0xAC
#define CMD_CHIP_ERASE_2 0x80
#define CMD_POLL_BUSY_1 0xF0 /* not used */
#define CMD_POLL_BUSY_2 0x00 /* not used */
#define CMD_LOAD_EADDR_1 0x4D /* not used */
#define CMD_LOAD_EADDR_2 0x00 /* not used */
#define CMD_LOAD_FLASH_HI 0x48
#define CMD_LOAD_FLASH_LO 0x40
#define CMD_LOAD_EEPROM_PAGE 0xC1 /* not used */
#define CMD_READ_FLASH_LO 0x20
#define CMD_READ_FLASH_HI 0x28
#define CMD_READ_EEPROM 0xA0
#define CMD_READ_LOCK_1 0x58
#define CMD_READ_LOCK_2 0x00
#define CMD_READ_SIG_1 0x30
#define CMD_READ_SIG_2 0x00
#define CMD_READ_FUSE_1 0x50
#define CMD_READ_FUSE_2 0x00
#define CMD_READ_FUSE_H_1 0x58
#define CMD_READ_FUSE_H_2 0x08
#define CMD_READ_FUSE_E_1 0x50
#define CMD_READ_FUSE_E_2 0x08
#define CMD_READ_CAL 0x38 /* not used */
#define CMD_WRITE_FLASH_PAGE 0x4C
#define CMD_WRITE_EEPROM 0xC0
#define CMD_WRITE_EEPROM_PAGE 0xC2 /* not used */
#define CMD_WRITE_LOCK_1 0xAC
#define CMD_WRITE_LOCK_2 0xE0
#define CMD_WRITE_FUSE_1 0xAC
#define CMD_WRITE_FUSE_2 0xA0
#define CMD_WRITE_FUSE_H_1 0xAC /* not used */
#define CMD_WRITE_FUSE_H_2 0xA8 /* not used */
#define CMD_WRITE_FUSE_E_1 0xAC /* not used */
#define CMD_WRITE_FUSE_E_2 0xA4 /* not used */
/* *********************************************************************** */
void spi_set_clk (uint8_t mode);
void spi_init (uint8_t enable);
uint8_t isp_enter_progmode (void);
void isp_mem_write (uint8_t cmd, uint16_t addr, uint8_t val);
uint8_t isp_mem_read (uint8_t cmd, uint16_t addr);
void isp_mem_poll (const avr_device_t * p_device);
void isp_mem_pagewrite (void);
void isp_read_signature (uint8_t * p_signature);
uint8_t isp_cmd3 (uint8_t cmd1, uint8_t cmd2,
uint8_t cmd3);
uint8_t isp_cmd4 (uint8_t cmd1, uint8_t cmd2,
uint8_t cmd3, uint8_t cmd4);
/* *********************************************************************** */
#endif /* SPI_ISP_H_ */