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

 
 
> Не могу запрограммировать 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
 
Start new topic
Ответов
defunct
сообщение Jun 1 2006, 12:23
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 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



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

 


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


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