Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Загрузчик для AT89S8253


Загрузчик для AT89S8253

Сообщений 1 страница 30 из 30

1

Досталась мне плата от весов на AT89S8253, рабочая. Разводка выполнена качественно. Очень хочется ее применить.
Контроллер связывается с компом через MAX232. Сначала обрадовался, надеялся, что после МАХ232 разводка будет идти на ножки MOSI MISО SCK RESET. Но разводка уходит на TXD RXD. Одним словом, программировать только через загрузчик. Коверкать плату не хочется. Прошивать буду через понипрог, но как работать с загрузчиком не знаю. Никогда не приходилось. Если можете, подскажите.

0

2

и что это даст, Александр?
всё равно писать под ядро 51, а точнее, 53. Вполне вкусное. Но по сравнению с АВР, уже проигрывает.

0

3

Александр Д. написал(а):

и что это даст, Александр?
всё равно писать под ядро 51, а точнее, 53. Вполне вкусное. Но по сравнению с АВР, уже проигрывает.

Плата шаровая.
Готов писать под Baccom 8051.
На днях подкатят мне еще одну такую-же плату.
Так-что интерес не праздный.

0

4

из-за двух плат?...
если только для саморазвития, на ассме, под новое для себя ядро...

0

5

Нарыл в интернете программу для работы с загрузчиком "Tiny Multi Bootloader+ (v0.11.0)"  ссылка - https://sourceforge.net/projects/tinypicbootload/
Кто-то пользовался? Можно ли с ее помощью шить AT89S8253?

0

6

AleksanderG написал(а):

AT89S8252, AT89S8253


Тоже ищу чем прошивать этих динозавров без LPT.

0

7

sasha_1973 написал(а):

Тоже ищу чем прошивать

http://www.triton-prog.ru/index.php?productID=118

+1

8

Пробовал шить через контроллер все норм, осталось прикрутить usb или флешку
можно допилить...

Код:
$regfile = "m32def.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

'***************************** Kонфигурируем LCD *******************************
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portd.4 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portd.3 , Rs = Portd.2       'иниализация lcd для макетки
Cursor Off
'***************************** Kонфигурируем ADC *******************************
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'конфигурация АЦП

'***************************** Kонфигурируем порты *****************************
Config Porta = Input : Config Portb = Input : Config Portc = Input

'************************** Переменные прошивальщика ***************************
Const Chip_erase = &B_10101100_10000000_00000000_00000000   'Очистка MK, Flash и EEPROM (все ячейки будут FF)
Const Prog_enable = &B_10101100_01010011_00000000_00000000  'Перевод МК в режим программирования, 4 байт ответ команды 0110 1001
Const Read_id_mk = &B_00101000_00000000_00000000_00000000   'Проверка идентификатора МК 89s51,89s52
'                  &B_00110000 000xxxBB xxxxxxxx dddddddd   'Вместо BB(второй байт команды)адрес, 4 байт ответ команды
'                                     |
'                                     |------------ 00 для 1 байта идентификатора,
'                                     |------------ 01 для 2 байта идентификатора,
'                                     |------------ 10 для 3 байта идентификатора,
'                                                            Байт идентификатора будет передан МК
'                                                            при отправке 4-го байта команды.
'
Const Write_program_memory_byte = &B_01000000_00000000_00000000_00000000       'Запись страницы в память МК (Byte Mode)
'                                 &B_01000000 000aaaaa bbbbbbbb dddddddd   Младший бит 2-го байта и старшие 4 бита 3-го байта
'                                                 |       |
'                                                 |-------|------------ a:bbbb — пятибитный номер страницы для записи.
'
Const Read_program_memory_byte = &B_00100000_00000000_00000000_00000000       'Чтение flash МК (Byte Mode)
'                                &B_00101000 aaaaaaaa bbbbbbbb xxxxxxxx — для чтения старшего байта слова.
'                                              |       |
'                                              |-------|-------------- a:bbbbbbbb — адрес слова в памяти.
'                                                                      Прочитанный байт возвращается во время передачи 4-го байта команды.

'Dim Count_memory_list As Byte                               ' счетчик адреса слов
Dim Count_memory_byte As Word                               ' через N слов запись буфера а адреса страницы
Dim Low_byte_count_memory As Byte At Count_memory_byte Overlay
Dim High_byte_count_memory As Byte At Count_memory_byte + 1 Overlay
Dim End_byte_hex As Word

Dim Byte_data As Byte

Dim Spi_in_data As Dword
Dim Spi_in_byte_4 As Byte At Spi_in_data Overlay
Dim Spi_in_byte_3 As Byte At Spi_in_data + 1 Overlay
Dim Spi_in_byte_2 As Byte At Spi_in_data + 2 Overlay
Dim Spi_in_byte_1 As Byte At Spi_in_data + 3 Overlay

Dim Spi_out_data As Dword
Dim Spi_out_byte_4 As Byte At Spi_out_data Overlay
Dim Spi_out_byte_3 As Byte At Spi_out_data + 1 Overlay
Dim Spi_out_byte_2 As Byte At Spi_out_data + 2 Overlay
Dim Spi_out_byte_1 As Byte At Spi_out_data + 3 Overlay
'***************************** Переменные **************************************
Dim Knopka As Byte
Dim Count As Byte
Dim Temp As Byte
Dim Tempw As Word
Dim Tempb As Byte
Dim Tempb1 As Byte
Dim Time_up As Byte                                        
Dim Var_time_up As Byte : Var_time_up = 20                  
'*******************************************************************************


 Config Portb.1 = Input                                     'pin Приходящий_данные
 Config Portb.0 = Output                                    'pin отправленные_данные
 Config Portb.2 = Output                                    'clok
 Config Portb.3 = Output : Res Alias Portb.3 : Res = 0      'reset mk
 Config Spi = Soft , Din = Pinb.1 , Dout = Portb.0 , Ss = None , Clock = Portb.2 , Mode = 0
 Spiinit                                                    'инициализируем SPI


 Wait 1

 Init_:

 Cls
 Locate 1 , 3
 Lcd " Init MK  "
 Res = 1
 Waitms 100
 Res = 0
 Waitms 100
 Res = 1
 Gosub Init_mk_
 Locate 2 , 1
 Lcd "->" ; Hex(spi_out_data)
 Locate 3 , 1
 Lcd "->" ; Hex(spi_in_data)
 Locate 4 , 1
 If Spi_in_data = 105 Then Lcd "MK Enable= Ok " Else Lcd "MK Enable= Err "
 Wait 2

 Cls
 Locate 1 , 3
 Lcd "Read id MK"
 Gosub Read_id_mk_
 Locate 2 , 1
 Lcd "->" ; Hex(spi_in_data)
 Locate 3 , 1
 If Spi_in_data = &H_1E5106 Then                            'сигнатура AT89s51
    Lcd "MK id= AT89s51 "
 Elseif Spi_in_data = &H_1E5206 Then                        'сигнатура AT89s52
    Lcd "MK id= AT89s52 "
 Else
    Lcd "MK id = Err "
 End If
 Wait 2


 Cls
Do
  Gosub Knopki
  Locate 1 , 3
  Lcd " ^-init   "
  Locate 2 , 1
  Lcd "<-write   read->"
  If Knopka = 5 Then Gosub Write_
  If Knopka = 4 Then Gosub Read_
  If Knopka = 1 Then Gosub Init_
Loop


Write_:
 Cls
 Locate 1 , 2
 Lcd "Chip_erase"
 Gosub Chip_erase_
 Wait 1

 Count_memory_byte = 0
 Cls
 Locate 1 , 2
 Lcd "Write flash MK"
 Wait 1
 Restore Dta1
 For Count_memory_byte = 0 To 67                            'байты
     Read Byte_data
     Locate 2 , 1
     Lcd "write=" ; Hex(byte_data) ; " "
     Locate 3 , 1
     Lcd "count=" ; Hex(count_memory_byte) ; " "
     Gosub Write_program_memory_
 Waitms 500
 Next

Do
Gosub Knopki
Loop Until Knopka = 3
Cls
Return



Read_:
   Cls
   Locate 1 , 2
   Lcd "Read flash End "
   Wait 2

   For Count_memory_byte = 0 To 67                          'байты

     Gosub Read_program_memory_

     Locate 2 , 1
     Lcd "count=" ; Hex(count_memory_byte) ; " "
     Locate 3 , 1
     Lcd "read=" ; Hex(spi_in_data) ; " "

     Waitms 500
   Next

Do
Gosub Knopki
Loop Until Knopka = 3
Cls
Return



Init_mk_:
 Spi_in_data = 0
 Spi_out_data = Prog_enable
 For Temp = 1 To 4
    Tempb1 = Spimove(spi_out_byte_1)
    Shift Spi_out_data , Left , 8
 Next
 Spi_in_data = Tempb1
 Spi_out_data = &H_AC530000
Return



Read_id_mk_:
 Spi_in_data = 0
 For Count = 0 To 2                                         
      Spi_out_data = Read_id_mk
      Spi_out_byte_2 = Count                                   'AT89
     For Temp = 1 To 4
         Spi_in_byte_4 = Spimove(spi_out_byte_1)
         Shift Spi_out_data , Left , 8
     Next
    If Count < 2 Then Shift Spi_in_data , Left , 8           ' <4
 Next
Return



Read_program_memory_:
   Spi_in_data = 0
   Spi_out_data = Read_program_memory_byte
   Spi_out_byte_2 = High_byte_count_memory
   Spi_out_byte_3 = Low_byte_count_memory
   For Temp = 1 To 4
       Spi_in_byte_4 = Spimove(spi_out_byte_1)
       Shift Spi_out_data , Left , 8
   Next
Return


Write_program_memory_:
   Spi_in_data = 0
   Spi_out_data = Write_program_memory_byte
   Spi_out_byte_2 = High_byte_count_memory
   Spi_out_byte_3 = Low_byte_count_memory
   Spi_out_byte_4 = Byte_data
   For Temp = 1 To 4
       Spi_in_byte_4 = Spimove(spi_out_byte_1)
       Shift Spi_out_data , Left , 8
   Next
Return


Chip_erase_:
 Spi_out_data = Chip_erase
 For Temp = 1 To 4
     Tempb1 = Spimove(spi_out_byte_1)
     Shift Spi_out_data , Left , 8
 Next
Return



 Knopki:
   Tempw = Getadc(3)
   If Tempw < 300 Then
      Waitms 50
      Tempw = Getadc(3)
      Select Case Tempw

              Case Is < 20:                                 'Кнопка "Вниз"
                             If Time_up = 0 Then
                                 Knopka = 2
                             End If
                             Incr Time_up
                             If Time_up > Var_time_up Then
                                 Time_up = Var_time_up
                                 Knopka = 20
                             End If

              Case 70 To 90 :                               'кнопка "Вверх"
                             If Time_up = 0 Then
                                 Knopka = 1
                             End If
                             Incr Time_up
                             If Time_up > Var_time_up Then
                                 Time_up = Var_time_up
                                 Knopka = 10
                             End If

              Case 140 To 160 :                             'кнопка "Влево"
                             If Time_up = 0 Then
                                 Knopka = 5
                             End If
                             Incr Time_up
                             If Time_up > Var_time_up Then
                                 Time_up = Var_time_up
                                 Knopka = 50
                             End If

              Case 210 To 240 :                             'кнопка "Вправо"
                             If Time_up = 0 Then
                                 Knopka = 4
                             End If
                             Incr Time_up
                             If Time_up > Var_time_up Then
                                 Time_up = Var_time_up
                                 Knopka = 40
                             End If

              Case 270 To 300 :                             'кнопка "OK"
                             If Time_up = 0 Then
                                 Knopka = 3
                             End If
                             Incr Time_up
                             If Time_up > Var_time_up Then
                                 Time_up = Var_time_up
                                 Knopka = 30
                             End If
      End Select
   Else
     Knopka = 0
     Time_up = 0
   End If
Return




Dta1:
Data &H09 , &HC0 , &H18 , &H95 , &H18 , &H95 , &H18 , &H95 , &H18 , &H95 , &H18 , &H95 , &H18 , &H95 , &H18 , &H95
Data &H18 , &H95 , &H18 , &H95 , &H8F , &HE9 , &H8D , &HBF , &HC6 , &HE9 , &HEA , &HE9 , &H4E , &H2E , &HDD , &H27
Data &H5D , &H2E , &HA8 , &H95 , &H84 , &HB7 , &H08 , &H2E , &H87 , &H7F , &H84 , &HBF , &H88 , &HE1 , &H99 , &H27
Data &H81 , &HBD , &H91 , &HBD , &HEE , &HE3 , &HF0 , &HE0 , &HA0 , &HE6 , &HB0 , &HE0 , &H88 , &H27 , &H8D , &H93
Data &H31 , &H97 , &HE9 , &HF7 , &H66 , &H24 , &HBC , &H9A , &H88 , &HB3 , &H90 , &HE1 , &H89 , &H27 , &H88 , &HBB
Data &H8C , &HE2 , &H91 , &HE0 , &H0A , &HD0 , &HF8 , &HCF , &H31 , &H97 , &HF1 , &HF7 , &H08 , &H95 , &H68 , &H94
Data &H62 , &HF8 , &H08 , &H95 , &HE8 , &H94 , &H62 , &HF8 , &H08 , &H95 , &HEF , &H93 , &HFF , &H93 , &HEE , &H27
Data &HE8 , &H2B , &HE9 , &H2B , &H31 , &HF0 , &HE8 , &HEE , &HF3 , &HE0 , &H31 , &H97 , &HF1 , &HF7 , &H01 , &H97
Data &HD1 , &HF7 , &HFF , &H91 , &HEF , &H91 , &H08 , &H95

+1

9

Adagumer написал(а):

http://www.triton-prog.ru/index.php?productID=118


Цена вопроса, мягко говоря, не совсем.

0

10

sasha_1973 написал(а):

мягко говоря,


Я уже лет пять как купил, пока не жалею.

0

11

Нашел на Алиэкспрессе программатор 51AVR CKM        https://ru.aliexpress.com/store/product … 58010.html
Подскажите пожалуйста можно ли им программировать AT89S8253? И какой прогой? Поднакопилось у меня уже плат заводских с 51 серией. Хочется их применять.

+1

12

AleksanderG написал(а):

Нашел на Алиэкспрессе программатор 51AVR CKM        https://ru.aliexpress.com/store/product … 58010.html
Подскажите пожалуйста можно ли им программировать AT89S8253? И какой прогой? Поднакопилось у меня уже плат заводских с 51 серией. Хочется их применять.

Супер, осталось найти программу, китаец молчит.

0

13

Программу нашел. Progisp 1.68.exe   -----  http://bayanbox.ir/info/733650212279351 … ogisp-1.68
Осталось найти драйвер под гаджет.

+1

14

AleksanderG написал(а):

Программу нашел. Progisp 1.68.exe   -----  http://bayanbox.ir/info/733650212279351 … ogisp-1.68


Огромнейшее СПАСИБО !!!

Пробовали шиться ? Если не сложно, по подробнее ?

AleksanderG написал(а):

Осталось найти драйвер под гаджет.


Поясните ?

0

15

Шить не пробивал. Сегодня буду оформлять покупку. USB программатор надо вписать в систему компа. Я правильно понимаю? (Значит нужен драйвер).

0

16

В архиве есть дрова под Windows.

Всунули программатор, подкинули дрова и по идее усё.

0

17

У меня архива нет, скачался только экзешник. Дров нема.

0

18

AleksanderG написал(а):

У меня архива нет, скачался только экзешник. Дров нема.


Запускаете EXE, это самораспаковывающийся архив, внутри программа и дрова.

0

19

"Чем больше узнаешь, тем больше понимаешь, как мало знаешь!" - Я  o.O
Тему начал я, буду ее продолжать. По факту получения прогера и результатов манипуляций с ним, отпишусь.
Всем мира и удачи.

0

20

sasha_1973 написал(а):

Супер, осталось найти программу, китаец молчит.


Побуду в роли китайца))
Сваял прогер, можно шить прям с терминала, для удобства прога в комплекте. MK m32 можно перекомпилить под другой, у кого че есть. Пробовал шить 89s51, 89s52 все норм. 
Ссылка

+1

21

Yuriy.pv написал(а):

Побуду в роли китайца))
Сваял прогер, можно шить прям с терминала, для удобства прога в комплекте. MK m32 можно перекомпилить под другой, у кого че есть. Пробовал шить 89s51, 89s52 все норм.


Нема слов, одни выражения, и все нецензурные (в лучшем смысле).

0

22

Здравствуйте друзья. Итак по программатору (чуток выше по теме). По доставке - оплатил 5.11.2016, забрал на почте 25.11.2016.
Только сегодня закончил с ним экспериментировать. Подключил к 8252 - ноль эмоции. Ладно, думаю закрыли конструкторы камень для чтения, но и стирать, соответственно и записывать наотрез отказывается. Смотрю по осцилографу ногу reset, все вроде бы правильно, подымает из ноля в 5 вольт.
НЕПОНЯТНО.  Дай думаю подключю к тиньке 2313. Ставлю в прошивальщике соответствующий камешек. RESET наблюдаю правильный из 5 вольт в 0. Но ни черта не идет. Мой то каень открытый. Ни прочитать, ни записать, ни стереть. Сегодня подключил к кончикам программатора логический анализатор. Сриншот прилагаю. Есть все. кроме MISO. Непонятно почему, вроде это должен быть ответ от проца. А может быть проблема в скоростях запись - чтение? В общем пока в поиске. Результаты своих иследований буду в теме выкладывать.
http://s6.uploads.ru/t/8tQiR.jpg

Отредактировано AleksanderG (2016-12-05 16:35:22)

0

23

AleksanderG написал(а):

может быть проблема в скоростях запись - чтение?


скорее нет, тактируется отпрограмматора, помоему не меньше 3мгц кварц

0

24

Этот скриншот если в прошивальщике выставляю тиньку 2313. Видно, что в случае S8252 и ATtyni2313 во время обмена reset в обоих случаях падает на ноль. От MISO нет ответа, так как проц не сработал. Короче. не повезло мне с прогером (или прошивальщик дерьмо). Может попробывать другими программами?
http://se.uploads.ru/t/2lhJE.jpg

0

25

на непропай проверяли? обрывы всякие...
прошивки в сети есть под программатор? обновите...

0

26

Логическим анализатором сижу прямо на ножках проца. Судя по изменению состояния на его ножках reset mosi sck, можно сказать, что обрывов или непропаев не должно быть. А вот с перепрошивкой возможно. Попробую найти родную прошивку.
Далее следует.

0

27

AleksanderG написал(а):

Видно, что в случае S8252 и ATtyni2313 во время обмена reset в обоих случаях падает на ноль


В этом и вся поблема что не в ноль надо, это проблема и в AVRdude  файл конфигурации сделал, а он не работает, инвертировал ресет, принял сигнатуру, но читать отказывается.
Мы с sasha_1973 занялись прогером, пока прикрутили 52, 53, 8253

0

28

Работа программатора и проги в режиме чтения флеш. ATtyni2313А. Все прекрасно. Все пакеты на месте. А вот с AT89S5282 никак. Не могу даже стереть.
Вообще ничего не могу. Попробую еще с AT89S5283. Этот скрин для тиньки. Добавлю, что с тинькой получилось все хорошо с программой версии 1.72. до этого пробивал версию 1.68.           PROGISP 1.72  Пробивал на всех скоростях. Все ОК.
http://s1.uploads.ru/t/dMBXZ.jpg

Отредактировано AleksanderG (2016-12-08 11:04:38)

0

29

AleksanderG если не тяжело, можете снять скрин опроса 89s8252? интересует запрос сигнатуры чипа

0

30

Платы заводского исполнения. Процы так закрыли, что даже опрос сигнатюры не происходит. От MISO вообще ничего нет и прога выпадает в ошибку.
Все глухо как танке. Под рукой незашитого или по крайней мере, открытого 51 ядра у меня нет. Если попадется, обязательно выполню лабораторку и выложу результаты.
Как вариант, прогер не работает с 51 ядром вообще

Отредактировано AleksanderG (2016-12-19 11:00:56)

0


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Загрузчик для AT89S8253