Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу запрограммировать ATTINY2313
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Romanello
Собрал свой программатор, чтение памяти программ работает, а запись нет, никак не могу понять какую команду надо подавать для программирования (в документации есть команды load programm memory page и write programm memory page) подскажите пожалуйста алгоритм.
haker_fox
Цитата(Romanello @ Jun 1 2006, 15:53) *
Собрал свой программатор, чтение памяти программ работает, а запись нет, никак не могу понять какую команду надо подавать для программирования (в документации есть команды load programm memory page и write programm memory page) подскажите пожалуйста алгоритм.

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


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

Эээтттто как?)))
haker_fox
Цитата(redjin @ Jun 1 2006, 17:04) *
Цитата(haker_fox @ Jun 1 2006, 11:38) *

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

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

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


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


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

2 redjin
Итак, Code Vision рулит. Чем?
Пожалуйста на пальцах по сравнению с другими.
Чем лучше:
1.IDE ?
2.Компилятор?
3.Программатор?
4.Прочие фичи?
Мастера и прочие костыли, типа Proteus/VMLab не предлагать - это средство либо для зеленых новичков, либо для закоренелых лентяев.
WHALE
Цитата(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
Romanello
Народ посмотрите на первый топик вопрос был про АЛГОРИТМ ПРОГРПАММИРОВАНИЯ ПАМЯТИ МИКРОКОНТРОЛЛЕРА, а вы развели какую то бодягу про Code Vision, вообще не относящуюся к вопросу, а АЛГОРИТМ подразумевает под собой последовательность ввода команд и не выжно какая схема и какое программное обеспечение у меня.
Proton
У меня тут завалялся USB программатор с исходниками на Си. Возможно что если изучить их, то можно будет найти ошибку Нажмите для просмотра прикрепленного файла
beer_warrior
Цитата
Народ посмотрите на первый топик вопрос был про АЛГОРИТМ ПРОГРПАММИРОВАНИЯ ПАМЯТИ МИКРОКОНТРОЛЛЕРА,

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

http://atmel.com/dyn/resources/prod_documents/DOC0943.PDF
Romanello
AN910 посмотрел, а также посмотрел doc2543 - там разные команды для программирования ( пробовал как в AN910 - не программирует), а как в описании на ATTINY2313 не понял, во т спрашиваю: КАКИЕ КОМАНДЫ НАДО ПОДАВАТЬ ДЛЯ ПРОГРАММИРОВАНИЯ ПАМЯТИ ПРОГРАММЫ МИКРОКОНТРОЛЛЕРА ATTINY2313
bodja74
Алгоритм точно такой же как в мегах.
Загружаете страницу записи,а потом команда запись страницы.
Я недавно сам делал,действительно алгоритм отличается у TINY2313 от мелких тинек типа 12,15 и т.д.
Если сильно припечет,могу поделится исходниками,у меня через СОМ с эмуляцией SPI.
Написано на VB6,если ферштейн,то нет проблем разобраться.
defunct
Рабочая процедура записи 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;
bodja74
Ну вот еще и я почекрыжил свои исходники 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

Усе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.