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

 
 
> Программирование одного мк другим, Вопрос по программированию
ILYCHOFF
сообщение Oct 13 2006, 07:40
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Посмотрел по форуму вроде ничего не попалось. Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.

МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 25)
chief_olimp
сообщение Oct 13 2006, 07:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344



Цитата(ILYCHOFF @ Oct 13 2006, 10:40) *
Посмотрел по форуму вроде ничего не попалось. Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.

МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.

так ничего не выйдет. нужна программа для прошивки (в первом процессоре) и внешняя память для программы (прошиваемой). а что бы просто клонировались... есть устройства которые умеют это делать, но так просто не выйдет
Go to the top of the page
 
+Quote Post
add
сообщение Oct 13 2006, 07:51
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
так ничего не выйдет. нужна программа для прошивки (в первом процессоре) и внешняя память для программы

Вот как раз щас занимаюсь портативным копиром микросхем.
Думаю что прошить программу в другой MK можно , раз мк может себя стирать... то уж передать собственный код в другой мк наверное несложно..


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Oct 13 2006, 08:06
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Цитата(chief_olimp @ Oct 13 2006, 11:45) *
Цитата(ILYCHOFF @ Oct 13 2006, 10:40) *

Посмотрел по форуму вроде ничего не попалось. Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.

МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.

так ничего не выйдет. нужна программа для прошивки (в первом процессоре) и внешняя память для программы (прошиваемой). а что бы просто клонировались... есть устройства которые умеют это делать, но так просто не выйдет


Почему не выйдет? Считаю с одного мк страницу флеши, а потом запишу по SPI в другой, мне бы алгоритм посмотреть программирования или исходник, в даташите табл. 26-15
Мне непонятно, что за адрес страницы, какой это адрес???
Go to the top of the page
 
+Quote Post
Семён
сообщение Oct 13 2006, 08:13
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Я делал вот так. Сразу извиняюсь за качество кода, писался он в экстремальном режиме из серии это должно было быть сделано еще вчера (кто-то на фирме отправил большую партию контролеров, довольно далеко, с непрошитами микросхемами) поэтому поял, писал, собирал в корпус в один день. Устройство следующие Mega 8 перешивает AtTiny2313. Код для tiny находиться в программной памяти mege
[code]
countErr=0;
ST:
RESET_OFF

mode.errProg=0;
// включаем режим програмирования

StartSPI(C_ENABALD_PROG_1);
StartSPI(C_ENABALD_PROG_2);
temp=StartSPI(C_ENABALD_PROG_3);
if(temp != 0X53)
{
mode.errProg=1;
}
StartSPI(C_ENABALD_PROG_4);
if(mode.errProg==1)
{
countErr++;
if(countErr==ERROR_COUNT_PROG)
{
goto START;
}
else
{
goto ST;

}
}
// стираем кристал
GRIN_OFF
StartTaimer1();

if(mode.clear==0)
{
StartSPI(C_CLEAR_PROG_1);
StartSPI(C_CLEAR_PROG_2);
StartSPI(C_CLEAR_PROG_3);
StartSPI(C_CLEAR_PROG_4);
mode.clear=1;
RESET_ON
Timer0Start(0,5);
goto ST;
}

adres.adres_int=0;
countData=0;
mode.clear=1;
page=64;
// команда режим програмирования
do
{

count16=32;
tempAdres=0;
do
{
if(mode.byteLorH==0)
{
temp=DATA[countData];
mode.byteLorH=1;
StartSPI(C_SAVE_L_PROG_1);
StartSPI(C_CLEAR_PROG_3);
StartSPI(tempAdres);
StartSPI(temp);
}
else
{
temp=DATA[countData+1];
mode.byteLorH=0;
StartSPI(C_SAVE_H_PROG_1);
StartSPI(C_CLEAR_PROG_3);
StartSPI(tempAdres);
StartSPI(temp);
countData=countData+2;
tempAdres=tempAdres+1;
}
Timer0Start(0,3);
count16--;
}while(count16);

StartSPI(C_PAGE_PROG);
StartSPI(adres.adres_Arx[1]);
StartSPI(adres.adres_Arx[0]);
StartSPI(C_CLEAR_PROG_4);
page--;
adres.adres_int=adres.adres_int+16;
Timer0Start(0,3);
}while(page);

// запись конфигурации
StartSPI(C_CONFIG_L_1);
StartSPI(C_CONFIG_L_2);
StartSPI(C_CONFIG_L_1);
StartSPI(C_CONFIG_L_4);
Timer0Start(0,3);
// запись защиты
StartSPI(C_LOOK_1_1);
StartSPI(C_LOOK_1_2);
StartSPI(C_ENABALD_PROG_3);
StartSPI(C_LOOK_1_4);
Timer0Start(0,3);

unsigned char StartSPI(unsigned char data)
{
mode.spi=1;
SPDR=data;
do
{
}while(mode.spi);
data=0;
data=SPDR;
return data;
}

[code]


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Семён
сообщение Oct 13 2006, 08:34
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



[/quote]
Почему не выйдет? Считаю с одного мк страницу флеши, а потом запишу по SPI в другой, мне бы алгоритм посмотреть программирования или исходник, в даташите табл. 26-15
Мне непонятно, что за адрес страницы, какой это адрес???
[/quote]
Маленький коментарий:
if(temp != 0X53) // 0X53 кристал должен ответить если перешел в режим программирование

далее идет код стирания кристала и повторения входа в режим програмирования

далее заполняем буфер страницы для разных конролеров размер может отличаться
count16=32;
tempAdres=0;
do
{
if(mode.byteLorH==0)
{
temp=DATA[countData];
mode.byteLorH=1; // записываем младший байт
.
.
.
else
{
temp=DATA[countData+1];
mode.byteLorH=0;
StartSPI(C_SAVE_H_PROG_1); // записываем старший байт
.
.
.
// переносим из буфера в нужную страницу
StartSPI(C_PAGE_PROG);
StartSPI(adres.adres_Arx[1]);
StartSPI(adres.adres_Arx[0]);
StartSPI(C_CLEAR_PROG_4);
page--;

Далее запись конфигурации и защиты


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Oct 13 2006, 08:50
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



А как адресуются страницы во флеш памяти??? Просто по порядку 0x0000, 0x0001, и т. д. ?
У меги 128 получается 500 страниц как раз для адреса страницы отводится 9 бит.
Правильно я думаю?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 13 2006, 08:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(ILYCHOFF @ Oct 13 2006, 11:06) *
Цитата(chief_olimp @ Oct 13 2006, 11:45) *

Цитата(ILYCHOFF @ Oct 13 2006, 10:40) *

Посмотрел по форуму вроде ничего не попалось. Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.

МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.

так ничего не выйдет. нужна программа для прошивки (в первом процессоре) и внешняя память для программы (прошиваемой). а что бы просто клонировались... есть устройства которые умеют это делать, но так просто не выйдет


Почему не выйдет? Считаю с одного мк страницу флеши, а потом запишу по SPI в другой, мне бы алгоритм посмотреть программирования или исходник, в даташите табл. 26-15
Мне непонятно, что за адрес страницы, какой это адрес???


Можно конечно и таким образом. То есть в программе "мастера" кроме всего прочего реализуется программатор. Но тогда я не совсем представляю как они у вас работать будут. То есть сложно всё получается.
Всётаки более правильный, на мой взгляд, подход с бутлоадером.

Алгоритм программирования (если вы пойдёте по первому пути) находится в даташите на саму микросхему. Там всё очень просто.
Go to the top of the page
 
+Quote Post
Семён
сообщение Oct 13 2006, 09:01
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(ILYCHOFF @ Oct 13 2006, 12:50) *
А как адресуются страницы во флеш памяти??? Просто по порядку 0x0000, 0x0001, и т. д. ?
У меги 128 получается 500 страниц как раз для адреса страницы отводится 9 бит.
Правильно я думаю?

Mege128 имеет 512 страниц, размер страницы 64 (16 разрядных слов)


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Oct 13 2006, 10:19
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Цитата(SasaVitebsk @ Oct 13 2006, 12:54) *
Цитата(ILYCHOFF @ Oct 13 2006, 11:06) *

Цитата(chief_olimp @ Oct 13 2006, 11:45) *

Цитата(ILYCHOFF @ Oct 13 2006, 10:40) *

Посмотрел по форуму вроде ничего не попалось. Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.

МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.

так ничего не выйдет. нужна программа для прошивки (в первом процессоре) и внешняя память для программы (прошиваемой). а что бы просто клонировались... есть устройства которые умеют это делать, но так просто не выйдет


Почему не выйдет? Считаю с одного мк страницу флеши, а потом запишу по SPI в другой, мне бы алгоритм посмотреть программирования или исходник, в даташите табл. 26-15
Мне непонятно, что за адрес страницы, какой это адрес???


Можно конечно и таким образом. То есть в программе "мастера" кроме всего прочего реализуется программатор. Но тогда я не совсем представляю как они у вас работать будут. То есть сложно всё получается.
Всётаки более правильный, на мой взгляд, подход с бутлоадером.

Алгоритм программирования (если вы пойдёте по первому пути) находится в даташите на саму микросхему. Там всё очень просто.


Нужно именно два контроллера которые могли бы друг другу зашивать свою прошивку...
Go to the top of the page
 
+Quote Post
Семён
сообщение Oct 13 2006, 10:34
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Свой код, который я привел выше писал, как говориться на одном дыхании без проработки и планирования общей структуры программы и устройства, пользуясь только Даташатам и спаеной макеткой, контролировал, что написал программатором. В даташате достаточно хорошо описан алгоритм, но если есть проблемы попробуйте использовать мой код. Если что-то не понятно я Вам по нему обязательно отвечу


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
demaven
сообщение Oct 13 2006, 11:43
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



возьми за исходное программатор AVR910, в инете были исходники, замени работу с компортом на работу с внешней памятью, сей программатор работает и шьет почти все АВРки, исходники неплохо прокомментированны
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 13 2006, 22:54
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(ILYCHOFF @ Oct 13 2006, 15:40) *
...Задача такая. Есть два мк ATMega128 связаны между собой по SPI нужно, чтобы один мк залил в другой свою прошивку. Со считыванием из флеш все нормально. Интересует как залить в другой мк, смотрел ДШ по программированию по SPI, не все понятно. Хочется посмотреть как делают грамотные люди. Может у кого есть исходники по этой теме.
МК связаны так, выводы SPI одного мк связаны с выводами PDI и PDO другого RESETом управляет отдельный вывод мк.


Вам правильно сказал demaven, возьмите исходник на ASM от AVR910... разобраться в нем досконально - пару дней от силы. Кроме этого даташит на М128, что бы знать количество страниц и их размер и вперед))) Вот Вам код для входа в режим программирования от моего программатора
Код


...

#define AVR_PROG_EN()    Write123(0xAC, 0x53, 0x00)

...



/*****************************************************************************
Записывает последовательно 3 байта в SPI и возвращает результат от записи 3-го
******************************************************************************/
UCHAR Write123(UCHAR byte1, UCHAR byte2, UCHAR byte3)
{
   ExSPI(byte1);
    ExSPI(byte2);
    return ExSPI(byte3);
}



...


/*****************************************************************************
Вход в режим программирования
******************************************************************************/
void SetProgMode(void)
{
   UCHAR err = ACK;
    SET_LED_RD();
    SET_LED_WR();
            
    // проверяем код устройства
    if(S89 == g_DeviceType) //89S
    {
       ReleasePorts(); // отключаем порты
  CatchPorts(); // подключаем порты к ISP
     S89_DELAY_RESET(); // задержка
          
        // посылаем команду входа в режим программирования
        S89_PROG_EN();
    }
    else
    {
       // синхронизируемся с подключенным чипом
        ReleasePorts();  // отключаем порты
  CatchPorts();  // подключаем порты к ISP
     AVR_DELAY_RESET(); // задержка
          
        // 32 цикла попыток засинхронизироваться с программируемым МК
        for(UCHAR c = 0; c < 32; c++)
        {
            // пытаемся вывести чип в режим программирования
   // при посылке 3-го байта в SPI чип должен вернуть код предыдущей посылки
           UCHAR ctrl_byte = AVR_PROG_EN();
            ExSPI(0x00);
          
            // получили верный контрольный байт - синхронизация выполнена
            if(0x53 == ctrl_byte)
             goto m1;
            
            // если нет валидного возврата, то сдвигаем при каждой попытке строб
           SET_SCK();
      __delay_cycles(600); // задержка 50 мкс
   CLR_SCK();
      __delay_cycles(600);
        }
        
        // если мы не засинхронизировались,
        // считаем, что устройство не найдено
        ReleasePorts(); // отключаем порты
        err = NACK; // посылаем код ошибки
    }

m1:
    PutChar(err);
    CLR_LED_WR();
    CLR_LED_RD();
}


--------------------
Go to the top of the page
 
+Quote Post
ILYCHOFF
сообщение Oct 16 2006, 04:50
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Спасибо большое всем за ответы, буду разбираться....
Go to the top of the page
 
+Quote Post
yarunt
сообщение Dec 15 2006, 16:16
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Цитата(ILYCHOFF @ Oct 16 2006, 05:50) *
Спасибо большое всем за ответы, буду разбираться....

есть исходник на абилдере и только на 128 только лонирование флеш. isq 446-319-072


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 15 2006, 17:30
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Была такая идея, но говорю сразу - это только мысль и реализована она пока не была.
Представьте себе некую маленькую коробочку, в которой кроме источника питания, разъёма ISP,пары светодиодов, кварца и, собственно кристалла больше ничего нет. В кристалл, в секцию бутлоадера зашит собственно программатор и закрыт всеми возможными для него, бутлоадера, битами защиты. Его задача - последовательно читать флэш с нулевого адреса и формировать сигналы программирования для внешнего кристалла. Т.е. кристалл в коробочке - это и есть автономный программатор. Так прелесть, помоему, в том, что берем эту коробочку, шьём ее как целевое устройство (секция бутлоадера защищена, значит он и не затрется при шитье) и забывам об этом. Далее, приезжаем на объект, вставляем коробочку в целевой девайс. Коробочка стартует с бутлоадера и начинает шить то, что в нее зашили "как в целевое устройство".


Извиняюсь за некую сумбурность, смерть как устал за неделю. :-)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 15 2006, 17:55
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Igor26 @ Dec 15 2006, 21:30) *
Была такая идея, но говорю сразу - это только мысль и реализована она пока не была.
Представьте себе некую маленькую коробочку, в которой кроме источника питания, разъёма ISP,пары светодиодов, кварца и, собственно кристалла больше ничего нет. В кристалл, в секцию бутлоадера зашит собственно программатор и закрыт всеми возможными для него, бутлоадера, битами защиты. Его задача - последовательно читать флэш с нулевого адреса и формировать сигналы программирования для внешнего кристалла. Т.е. кристалл в коробочке - это и есть автономный программатор. Так прелесть, помоему, в том, что берем эту коробочку, шьём ее как целевое устройство (секция бутлоадера защищена, значит он и не затрется при шитье) и забывам об этом. Далее, приезжаем на объект, вставляем коробочку в целевой девайс. Коробочка стартует с бутлоадера и начинает шить то, что в нее зашили "как в целевое устройство".
Извиняюсь за некую сумбурность, смерть как устал за неделю. :-)
Идея хорошая, но зачем код для целевого девайса вгонять в МК программатора, для этого есть DataFlash или EEPROM. Дешевле получится и место столько же, если не меньше...


--------------------
Go to the top of the page
 
+Quote Post
demaven
сообщение Dec 16 2006, 09:22
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



просто товарищ желает сохранить свой код в тайне от всех, а из внешней флешки, как он считает, код этот могут считать. Но ему никто не запрещает в контроллер вставить дешифратор а во флешку писать зашифрованный код и задача упростится, можно будет писать любые программы, меняя только флешку
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 16 2006, 18:30
Сообщение #19


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Igor26 @ Dec 15 2006, 16:30) *
Так прелесть, помоему, в том, что берем эту коробочку, шьём ее как целевое устройство (секция бутлоадера защищена, значит он и не затрется при шитье) и забывам об этом. Далее, приезжаем на объект, вставляем коробочку в целевой девайс. Коробочка стартует с бутлоадера и начинает шить то, что в нее зашили "как в целевое устройство".

Если ты едешь туда лично, то никаких таких фокусов не надо, а если не лично - то рано или поздно притулят впараллель SPI-slave только на приём, который сольёт куда сочтёт нужным всю последовательность и потом можно и вырезать нужное для дизассемблирования, и шо хош.
Так что - правильно было сказано - шифрование. Только "дешифратор" - в ЦЕЛЕВОМ устройстве, а в "коробочке" - всего лишь AT45DBсколько_надо с зашифрованной программой. И пусть бутлоадер в целевом читает, декодирует, самопрошивается.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 17 2006, 00:30
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
Если ты едешь туда лично

Если я поеду туда лично, то возьму свой лаптоп и залью. А если едет человек, которому пол дня нужно объяснять, что такое FUSE-биты? Плавали, знаем.
Далее. О закрытии кода речи нет. Не нужно этого. Пусть разбираются в 20к кода, если хотят.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 17 2006, 00:40
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Igor26 @ Dec 17 2006, 04:30) *
Цитата
Если ты едешь туда лично

Если я поеду туда лично, то возьму свой лаптоп и залью. А если едет человек, которому пол дня нужно объяснять, что такое FUSE-биты? Плавали, знаем.
Далее. О закрытии кода речи нет. Не нужно этого. Пусть разбираются в 20к кода, если хотят.


А зачем разбираться? Клонировать достаточно инохда...)


--------------------
Go to the top of the page
 
+Quote Post
Panych
сообщение Jan 21 2008, 09:47
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 335
Регистрация: 17-06-04
Из: Москва
Пользователь №: 35



Я пытаюсь запрограммировать из Mega128 Tiny26.
Вход в синхронизацию проходит, но при этом Flash заполняется какими-то значениями - память оказывается заполненной какими-то значениями даже после команды "Стирание памяти".
В чем может быть загвоздка?

Код
  char mark = 0;
  char temp = 0;

  INITIALIZATION(); // инициализация портов

  while ( mark == 0 ) // будем добиваться входа в синхронизацию
  {
    // вход в режим программирования
    CLEARBIT( DDRE, 6 ); // Reset = High
    DELAYMS( 1 );
    // Reset = Low
    CLEARBIT( PORTE,6 );
    SETBIT( DDRE, 6 );
    CLEARBIT( PORTE,6 );
    
    DELAYMS( 20 );
    // вход в синхронизацию
    SEND_SPI( 0xAC );
    SEND_SPI( 0x53 );
    temp = SEND_SPI( 0xAA );
    if( temp == 0x53 )
    {
      SEND_SPI( 0xAA );
      mark = 1;
    }
  }
  // стирание памяти
SEND_SPI( 0xAC );
SEND_SPI( 0x80 );
SEND_SPI( 0x00 );
SEND_SPI( 0x00 );


ВОПРОС СНЯТ!
этого не происходит, ошибка в мозгах была...


--------------------
Всегда не хватает времени, чтобы выполнить работу как надо, но на то, чтобы ее переделать, время находится. (Закон Мескимена.)
Go to the top of the page
 
+Quote Post
Guest_=VRA=_*
сообщение Jan 21 2008, 09:59
Сообщение #23





Guests






Цитата(ILYCHOFF @ Oct 13 2006, 10:40) *
Хочется посмотреть как делают грамотные люди
Вот они - ключевые слова, на которые никто до сих пор не обратил внимания!



А грамотные люди делают так, чтобы необходимость в таком извращении просто не возникала - тогда и не придется гланды через ж... вырезать a14.gif
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jan 21 2008, 14:58
Сообщение #24


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
редставьте себе некую маленькую коробочку, в которой кроме источника питания, разъёма ISP,пары светодиодов, кварца и, собственно кристалла больше ничего нет. В кристалл, в секцию бутлоадера зашит собственно программатор и закрыт всеми возможными для него, бутлоадера, битами защиты.

У нас так сделано уже лет 8. Только в коробочке в последних вариантах я ставлю панельку с нулевым усилием - для смены целевого устройства меняется только пишущий кристалл.
Ну и еще небольшой совет. Кроме выше названного поставить пищалку для контроля завершения записи - хорошо помогает smile.gif .
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 21 2008, 21:39
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



А я бы сделал стандартно (на мой взгляд). В обоих однокристалках реализовал бы бутлоадер. А по SPI только передача данных. То есть канал. В этом случае по SPI возможна заливка проги любым из источников. Возможно кодирование/декодирование (если на уровне однокристалки то примитивное).
Go to the top of the page
 
+Quote Post
Dmitry_Od
сообщение Jan 27 2008, 12:15
Сообщение #26


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 17-01-07
Из: Одесса
Пользователь №: 24 523



Цитата(ILYCHOFF @ Oct 13 2006, 09:40) *
... Есть два мк ATMega128 связаны между собой ... чтобы один мк залил в другой свою прошивку...


А если взять третий камень и управление заливкой/считыванием возложить на него?


--------------------
http://odessa-intern.myminicity.com/ - эдакий муравейник
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:34
Рейтинг@Mail.ru


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