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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> микро бутлоадер для ATtiny. Существует ли такое?
777777
сообщение Jun 25 2009, 10:59
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(pt200 @ Jun 25 2009, 13:42) *
Так я ж написал что проблематично, а не низя.
Например бываю такие нагрузки которыми бездумно( при программировании) щелкать нельзя.

А если завести на них сброс?

...а резисторы бывают в SMD корпусах smile.gif

Сообщение отредактировал 777777 - Jun 25 2009, 11:00
Go to the top of the page
 
+Quote Post
ЛеонидК
сообщение Jun 25 2009, 11:52
Сообщение #17


Участник
*

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



Существует TinyLoader для загрузки по одному проводу.
Портированый для КПК (http://4pda.ru/forum/index.php?showtopic=70782&hl=AVR)
Go to the top of the page
 
+Quote Post
pt200
сообщение Jun 25 2009, 11:58
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #19


Участник
*

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



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


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Вот сказали название, так я и нашел тот проект http://tinyloader.kasperkp.dk/TinyLoaderBr10.zip


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 25 2009, 17:07
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(GDI @ Jun 25 2009, 09:50) *
На avrfreaks видел такой проект, только повторно найти мне его не удалось, может у вас получится.
Этот? Все то обсуждение не читал, просто название в глаза бросилось.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
GDI
сообщение Jun 26 2009, 06:31
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата(Сергей Борщ @ Jun 25 2009, 21:07) *
Этот? Все то обсуждение не читал, просто название в глаза бросилось.

Нет, тут просто форум, причем, ветка начинается с вопроса, "есть ли в природе маленький бутлоадер".
Тот был оформлен в виде проекта и в описании была ссылка которую я выше приводил, в архиве есть описание и исходники для АВР и WIN32.
Цитата из описания:
Цитата
Code size is 48 words.
Works from the on-chip oscillator.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st September 2025 - 12:08
Рейтинг@Mail.ru


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