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

 
 
 
Reply to this topicStart new topic
> Не могу запрограммировать ATTINY2313
Romanello
сообщение Jun 1 2006, 06:53
Сообщение #1


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

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



Собрал свой программатор, чтение памяти программ работает, а запись нет, никак не могу понять какую команду надо подавать для программирования (в документации есть команды load programm memory page и write programm memory page) подскажите пожалуйста алгоритм.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 1 2006, 07:38
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Romanello @ Jun 1 2006, 15:53) *
Собрал свой программатор, чтение памяти программ работает, а запись нет, никак не могу понять какую команду надо подавать для программирования (в документации есть команды load programm memory page и write programm memory page) подскажите пожалуйста алгоритм.

Дайте, пожалуйста, больше информации: схема, программа...
Алгоритм программирования подробно написан в даташите на конкретный МК.
А вообще, воспользуйтесь каким-нибудь распространенным и популярным программатором, типа AVReal (информаци по поиску в этом подфоруме).


Цитата(redjin @ Jun 1 2006, 16:34) *
может компилятор взять с встроенным программатором.

Эээтттто как?)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 1 2006, 08:13
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(redjin @ Jun 1 2006, 17:04) *
Цитата(haker_fox @ Jun 1 2006, 11:38) *

Цитата(redjin @ Jun 1 2006, 16:34) *

может компилятор взять с встроенным программатором.

Эээтттто как?)))


ну там codevisionavr например.


ИМХО не стоит зависеть от какого-то CodeVision. Нужно взять нормальный программатор и программу для него, желательно с командной строкой. Тогда можно будет воспользоваться компилятором + оболочкой (редактором) и программатором по вкусу, грамотно все это связав между собой.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Romanello
сообщение Jun 1 2006, 08:19
Сообщение #4


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

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



мне не надо другой прогрмматор, у меня есть свой и встроенным прогрмматором не надо пользоваться, вопрос был какими командами нужно воспольлзоваться, что бы запрограммировать память программ процессора ATTINY2313, и не важно какой у меня софт и аппаратное обеспечение - я же не исходники прошу, а алгоритм, а в документации как то коряво написано
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 1 2006, 08:52
Сообщение #5


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



И все-таки что за программатор?
Схема? Софт? Ссылки?

2 redjin
Итак, Code Vision рулит. Чем?
Пожалуйста на пальцах по сравнению с другими.
Чем лучше:
1.IDE ?
2.Компилятор?
3.Программатор?
4.Прочие фичи?
Мастера и прочие костыли, типа Proteus/VMLab не предлагать - это средство либо для зеленых новичков, либо для закоренелых лентяев.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jun 1 2006, 09:27
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(haker_fox @ Jun 1 2006, 12:13) *
Цитата(redjin @ Jun 1 2006, 17:04) *

Цитата(haker_fox @ Jun 1 2006, 11:38) *

Цитата(redjin @ Jun 1 2006, 16:34) *

может компилятор взять с встроенным программатором.

Эээтттто как?)))


ну там codevisionavr например.


ИМХО не стоит зависеть от какого-то CodeVision. Нужно взять нормальный программатор и программу для него, желательно с командной строкой. Тогда можно будет воспользоваться компилятором + оболочкой (редактором) и программатором по вкусу, грамотно все это связав между собой.

народ,а чем вам командная строка так люба?Че поменять-лезь в хелп,какой там ключ за что отвечает+
возможные ошибки ввода...Одно из преимуществ Кодвижина-командной строки нет,только чекбоксы.
Что в компиляторе,что в программаторе.
Студия опять-же из IDE вызывается.
Да и чем плохи мастера-вместо ползания по шиту покликал мышкой-инициализация есть. Это не заменяет знание документации-код все равно самому писать,так почему бы от рутины не избавиться.
Наверное,я закоренелый лентяй-не люблю лишних движений без необходимости. cranky.gif
Да и собственно компилятор-степень оптимизации в последних версиях значительно улучшилась.
Да и VMLAB c Протеусом иногда совсем не лишние.
З.Ы. Я не AVR123 smile.gif


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Romanello
сообщение Jun 1 2006, 09:55
Сообщение #7


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

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



Народ посмотрите на первый топик вопрос был про АЛГОРИТМ ПРОГРПАММИРОВАНИЯ ПАМЯТИ МИКРОКОНТРОЛЛЕРА, а вы развели какую то бодягу про Code Vision, вообще не относящуюся к вопросу, а АЛГОРИТМ подразумевает под собой последовательность ввода команд и не выжно какая схема и какое программное обеспечение у меня.
Go to the top of the page
 
+Quote Post
Proton
сообщение Jun 1 2006, 10:05
Сообщение #8


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

Группа: Свой
Сообщений: 185
Регистрация: 3-08-05
Из: Новосибирск
Пользователь №: 7 334



У меня тут завалялся USB программатор с исходниками на Си. Возможно что если изучить их, то можно будет найти ошибку Прикрепленный файл  USB_PROG.zip ( 80 килобайт ) Кол-во скачиваний: 152


--------------------
Всяк хорошая мысля к нам приходит опосля.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 1 2006, 10:32
Сообщение #9


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Народ посмотрите на первый топик вопрос был про АЛГОРИТМ ПРОГРПАММИРОВАНИЯ ПАМЯТИ МИКРОКОНТРОЛЛЕРА,

ТщАтельнее надо выражаться smile.gif
AN910 лениво посмотреть? Главу FLASH PROGRAM MEMORY ACCESS?

http://atmel.com/dyn/resources/prod_documents/DOC0943.PDF


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Romanello
сообщение Jun 1 2006, 11:14
Сообщение #10


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

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



AN910 посмотрел, а также посмотрел doc2543 - там разные команды для программирования ( пробовал как в AN910 - не программирует), а как в описании на ATTINY2313 не понял, во т спрашиваю: КАКИЕ КОМАНДЫ НАДО ПОДАВАТЬ ДЛЯ ПРОГРАММИРОВАНИЯ ПАМЯТИ ПРОГРАММЫ МИКРОКОНТРОЛЛЕРА ATTINY2313
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jun 1 2006, 11:37
Сообщение #11


Знающий
****

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



Алгоритм точно такой же как в мегах.
Загружаете страницу записи,а потом команда запись страницы.
Я недавно сам делал,действительно алгоритм отличается у TINY2313 от мелких тинек типа 12,15 и т.д.
Если сильно припечет,могу поделится исходниками,у меня через СОМ с эмуляцией SPI.
Написано на VB6,если ферштейн,то нет проблем разобраться.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 1 2006, 12:23
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Рабочая процедура записи Tiny2313. Разберетесь при желании ;>
fHexManager - содержит массив данных для записи (загруженный Hex) :

Код
procedure TDuplexDataChannel.UploadHexToATTiny2313;
var
   i    : integer;
   D1, D2, D3, D4 : Byte;
   ACurrentPage : Integer;
   APageEnabled : Boolean;
   APageDone    : Boolean;

   function GetWordAddress( Address: integer): byte;
   begin
      Result := (Address shr 1) and $0F;
   end;

   function GetPageASelector( Address: integer):byte;
   begin
      Result := Address shr 9;
   end;

   function GetPageBSelector( Address: integer):byte;
   begin
     Result := (Address shr 1) and $ff;
   end;

   function GetPageNumber( Address: Integer):Integer;
   begin
      Result := Address div 32;
   end;

   function IsPageEnabled( NumberOfPage : Integer):boolean;
   var
      i : Integer;
   begin
      Result := false;
      for i := NumberOfPage * 32 to (NumberOfPage * 32) + 31 do
          if fHexManager.Cell_Enabled( i ) then
             Result := True
   end;

begin
   fBytesWrote := 0;
   if fNeedErase then
      begin // Стираем чип
         WriteByte( $AC );
         WriteByte( $80 );
         WriteByte( 0 );
         WriteByte( 0 );
         sleep( 1000 );
      end;

   ACurrentPage := -1;
   APageDone := True;

   for i := 0 to $7FF do
   begin

      if fHexManager.Cell_Enabled(i) then
         D4 := fHexManager.RHex( i )
      else
         D4 := $FF;

      if ACurrentPage <> GetPageNumber( i ) then
            // Необходимо выбрать страницу
         begin
            if not APageDone then // finalizing write
               begin
                  Sleep(10);

                  WriteByte($4C); // Writing Memory Page
                  WriteByte( GetPageASelector( i-32 ) );
                  WriteByte( GetPageBSelector( i-32 ) );
                  WriteByte( 0 );
                  fCurrentData := '4C ' +
                         IntToHex( GetPageASelector( i-32 ), 2) + ' ' +
                         IntToHex( GetPageBSelector( i-32 ), 2) + ' ' +
                         IntToHex( 0, 2);
                  SendMessage( fOwnerHandle, WM_DAILYDATA, 0,0);
                  Sleep(100);
                  APageDone := True
               end;

            ACurrentPage := GetPageNumber( i );
            APageEnabled := IsPageEnabled( GetPageNumber(i) );
            if APageEnabled or (not APageDone) then
               APageDone := False

         end;

      if APageEnabled then
      begin // Пишем ячейку
      //   fCurrentAddress := IntToHex( i, 4 );
         //D4 := fHexManager.RHex( i );
         D1 := $40 or ($8 * (i and 1));
         D2 := 0;
         D3 := GetWordAddress( i );
         fCurrentAddress := IntToHex( i, 4 );
         fCurrentData := IntToHex( D1, 2) + ' ' +
                         IntToHex( D2, 2) + ' ' +
                         IntToHex( D3, 2) + ' ' +
                         IntToHex( D4, 2);
         WriteByte( D1 );
         WriteByte( D2 );
         WriteByte( D3 );
         WriteByte( D4 );
         inc( fBytesWrote );
         Sleep(5);
         SendMessage( fOwnerHandle, WM_DAILYDATA, 0,0);
      end
   end;

   WriteFuses(tn2313);
   WriteLocks(tn2313);
end;
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jun 1 2006, 12:29
Сообщение #13


Знающий
****

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



Ну вот еще и я почекрыжил свои исходники smile.gif
Тут уже яснее некуда .

BYTE_OUT = "10101100" ;Разрешение программирования
BYTE_OUT = "01010011"
BYTE_OUT = "00000000"
BYTE_OUT = "00000000"


BYTE_OUT = "00110000" ;Запрос инициализации
BYTE_OUT = "00000000"
BYTE_OUT = "00000010"
BYTE_OUT = "00000000"

BYTE_OUT = "10101100" ;Комманда стирание кристалла
BYTE_OUT = "10000000"
BYTE_OUT = "00000000"
BYTE_OUT = "00000000"

BYTE_OUT = "01000000" ;Загружаем младший байт в страницу
BYTE_OUT = "000000zz" ;zz=00 первых 512байт zz=01 вторых 512 байт и т.д.
BYTE_OUT = "ХХХХХХХХ" ;адресс слова в странице
BYTE_OUT = "YYYYYYYY" ;собственно сам младший байт

BYTE_OUT = "01001000" ;Загружаем старший байт в страницу
BYTE_OUT = "000000zz"
BYTE_OUT = "ХХХХХХХХ" ;адресс слова в странице
BYTE_OUT = "YYYYYYYY" ;собственно сам старший байт

Грузим страницу 16 словами ,потом

BYTE_OUT = "01001100" ;запись страницы
BYTE_OUT = "000000zz"
BYTE_OUT = "ХХХХХХХХ" ;zz+ХХХХХХХХ адресс записи страницы
BYTE_OUT = "YYYYYYYY" ;по барабану smile.gifsmile.gifsmile.gif

Усе.
Go to the top of the page
 
+Quote Post

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

 


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


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