реклама на сайте
подробности

 
 
> микро бутлоадер для ATtiny. Существует ли такое?
pt200
сообщение Jun 25 2009, 06:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-05-09
Пользователь №: 49 263



Перемудрил атмел с интерфейсом программирования для тинек( слишком много ног требуется -> большой разьем для программирования).

Хочется чегото более удобного, например по 1му проводу.

А то сейчас приходится пользоваться тиньками в дип корпусе и перетыкивать программатор<->устройство.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pt200
сообщение Jun 25 2009, 11:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-05-09
Пользователь №: 49 263



Вот набросал на досуге( правда нада отладить еще) для IARа. ( тактовая 128К)
Код
#define TB_BIT_IO    BIT0
#define TB_PIN_IO    PINB
#define TB_DDR_IO    DDRB
#define TB_PORT_IO   PORTB
#define TB_PASS      0xB63A
#pragma location="BootLoader"
uint8 __tinyBootloader_RX_bit( void)
{
  uint8 ret = 0;
  while( TB_PORT_IO & TB_BIT_IO){}                                              //Wait '0'
  __delay_cycles( 30);
  if( TB_PORT_IO & TB_BIT_IO)                                                   // RX = 1
    ret = 0x01;
  while( !( TB_PORT_IO & TB_BIT_IO)){}                                          //Wait '1'
  return ret;
}
#pragma location="BootLoader"
void __tinyBootloader_TX_bit( uint8 q)
{
  while( TB_PORT_IO & TB_BIT_IO){}                                              //Wait '0'
  if( !q)                                                                       // TX = 0
  {
    TB_PORT_IO &= ~TB_BIT_IO;
    TB_DDR_IO  |=  TB_BIT_IO;
    __delay_cycles( 50);
    TB_DDR_IO  &= ~TB_BIT_IO;
    TB_PORT_IO |=  TB_BIT_IO;
  }
  __delay_cycles( 30);
  while( !( TB_PORT_IO & TB_BIT_IO)){}                                          //Wait '1'
}
#pragma location="BootLoader"
void tinyBootloader( void)
{
  uint8 q;
  uint16 addr, data;

  __watchdog_reset();
  
//  if( MCUSR ... XXXXXXXXX) // IF reset || PORF
//    return;

  // Init IO pin
  TB_DDR_IO  &= ~TB_BIT_IO;
  TB_PORT_IO |=  TB_BIT_IO;
  __delay_cycles( 16);
  
// -------------------- Cheking START BootLoader ------------------------------- ???????????
  // Wait '0'                                                                    ???????????
  q = 128;                                                                    // ???????????
  while( TB_PORT_IO & TB_BIT_IO)                                              // ???????????
  {                                                                           // ???????????
    if( --q == 0) // TimeOut                                                  // ???????????
      return;                                                                 // ???????????
  }                                                                           // ???????????
// -------------------- Connecting ---------------------------------------------
  // Wait PASS
  __watchdog_reset();
  WDTCR |= BIT4 | BIT3;//( 1 << WDCE) | ( 1 << WDE);
  WDTCR  = BIT3 | BIT2;//( 1 << WDE); // ~0.25 s
  data = 0;
  do
  {
    data <<= 1;
    data |= __tinyBootloader_RX_bit();
  }
  while( data != TB_PASS);
  // Confirm PASS
  __watchdog_reset();
  for( q = 16; q; q--)
  {
    __tinyBootloader_TX_bit( ( data & 0x8000));
    data <<= 1;
  }
// -------------------- Programming --------------------------------------------
  // Program FLASH
  __watchdog_reset();
  for( addr = 0; addr < 0x300; addr += 2)
  {
    for( q = 16; q; q--)
    {
      data <<= 1;
      data |= __tinyBootloader_RX_bit();
    }
    __AddrToZWordToR1R0ByteToSPMCR_SPM( ( void __flash*)addr, data, 1);         // Fill Flash buffer
    if( ( ( addr & 0xFF) & 0x0F) == 0x0E) //Page
    {
      __AddrToZByteToSPMCR_SPM( ( void __flash*)addr, 3);                       // Erase Page
      __AddrToZByteToSPMCR_SPM( ( void __flash*)addr, 5);                       // Write Page
    }
    __watchdog_reset();
  }
}



Принцип 1Ware с другими таймингами. Программатор( железо) будет простое: TXD(TTL) через диод к пину, RXD(TTL) к нему же напрямую. Скорость порта 9600 по прикидкам.
Впринципе до 256 байт еще недотягивает, так что можно приделать подтверждение постраничное......
Подготовку таблицы векторов доверю программе на РС.

Люди, кто писал бутлоадеры, посоветуйте чего нибудь полезного.

Сообщение отредактировал pt200 - Jun 25 2009, 12:23
Go to the top of the page
 
+Quote Post
ЛеонидК
сообщение Jun 25 2009, 12:48
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 27-01-09
Пользователь №: 44 027



TinyLoader для желающих.
.exe для КПК.
В .pdf есть все для Delphi.
Прикрепленные файлы
Прикрепленный файл  Loader.zip ( 253.47 килобайт ) Кол-во скачиваний: 82
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pt200   микро бутлоадер для ATtiny. Существует ли такое?   Jun 25 2009, 06:37
- - GDI   На avrfreaks видел такой проект, только повторно...   Jun 25 2009, 06:50
|- - Сергей Борщ   Цитата(GDI @ Jun 25 2009, 09:50) На avrfr...   Jun 25 2009, 17:07
|- - GDI   Цитата(Сергей Борщ @ Jun 25 2009, 21:07) ...   Jun 26 2009, 06:31
- - forever failure   Сериальный программатор считается использовать [CE...   Jun 25 2009, 06:56
|- - pt200   Цитата(forever failure @ Jun 25 2009, 10...   Jun 25 2009, 07:06
|- - dimka76   Цитата(pt200 @ Jun 25 2009, 11:06) ISP чт...   Jun 25 2009, 07:17
||- - pt200   Цитата(dimka76 @ Jun 25 2009, 11:17) у ти...   Jun 25 2009, 07:24
|||- - Visor   Про FUSE не забудьте, их загрузчиком не зашьёшь.   Jun 25 2009, 07:42
|||- - dimka76   Цитата(pt200 @ Jun 25 2009, 11:24) А шить...   Jun 25 2009, 08:08
|||- - defunct   Цитата(pt200 @ Jun 25 2009, 10:24) А шить...   Jun 25 2009, 10:27
||- - pt200   Цитата(dimka76 @ Jun 25 2009, 11:17) у ти...   Jun 25 2009, 08:48
|- - muravei   Цитата(pt200 @ Jun 25 2009, 11:06) ISP чт...   Jun 25 2009, 07:27
|- - 777777   Цитата(pt200 @ Jun 25 2009, 11:06) ISP чт...   Jun 25 2009, 09:02
|- - pt200   Цитата(777777 @ Jun 25 2009, 13:02) А отк...   Jun 25 2009, 09:42
|- - 777777   Цитата(pt200 @ Jun 25 2009, 13:42) Так я ...   Jun 25 2009, 10:59
|- - ЛеонидК   Существует TinyLoader для загрузки по одному прово...   Jun 25 2009, 11:52
- - ARV   вот мне давали ссылку http://caxapa.ru/thumbs/1359...   Jun 25 2009, 07:14
- - Deka   Вот бут какой-то валялся в моих закромах. Как рабо...   Jun 25 2009, 08:09
- - GDI   Вот сказали название, так я и нашел тот проект htt...   Jun 25 2009, 13:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016