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

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

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

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



плата arduino mega2560

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

1

всем привет. приобрел платку ардуино для продолжения изучения Bascom. но при попытке с ней работать ничего не выходит. программатор ставил как на этом видео http://www.youtube.com/watch?v=Ppdpp4pqeQc
но при попытке залить программу пишет что "МК не атмел 256"

пробовал еще так
http://wiki.mcselec.com/Getting_started … UNO#Author
но тут параметров слишком много, консоль открывается, и тут же закрывается, не успеваю прочесть

хотелось бы получить помощь!

спасибо всем откликнувшимся!

http://arduino.ru/Hardware/ArduinoBoardMega2560

0

2

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

0

3

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

программатор ставил как на этом видео

И порт и скорость?

0

4

еще немного инфы. пробовал разные скорости порта (115200)

mega2560.name=Arduino Mega 2560 or Mega ADK

mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200

mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=stk500v2
mega2560.bootloader.file=stk500boot_v2_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F

mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino
mega2560.build.variant=mega

0

5

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

И порт и скорость?

да, в системе у меня "arduino mega 2560 COM13"
в свойствах драйвера тоже ставил скорость 115200

спасибо, что откликнулся

0

6

http://s4.uploads.ru/t/OIBkd.png
попробовал сделать как описано тут http://habrahabr.ru/post/151544/

но консоль возвращает, что не может открыть устройство на сом13

Отредактировано Scorpushka (2013-10-06 17:18:11)

0

7

так как я понимаю, вы шьёте через стандартный аурдиновский юсб
а код баскома надо шить напрямую в МК (минуя их программатор от юсб)

родные аурдиновские скетчи пробовали заливать, работают?

0

8

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

а код баскома надо шить напрямую в МК (минуя их программатор от юсб)

Теперь можно шить по USB.

0

9

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

так как я понимаю, вы шьёте через стандартный аурдиновский юсб
а код баскома надо шить напрямую в МК (минуя их программатор от юсб)

родные аурдиновские скетчи пробовали заливать, работают?

да, через интерфейс ардуино я открыл пример мигания штатного светодиода, изменил частоту, залил, плата живая.

покопал интернет, вроде обмен м\у мегой16 и мегой2560 производится по  протоколу STK500v2
пробовал как тут описано http://habrahabr.ru/post/151544/ но то нет ответа, то не синхронизировано пишет в консоли

0

10

буду зашивать бутлоадер от баскома

0

11

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

буду зашивать бутлоадер от баскома

Проверено в железе.

Адаптированая прошивка именно для Arduino Mega2560

$crystal = 16000000

$baud = 38400       'this loader uses serial com

$regfile = "m2560def.dat"
Const Loaderchip = 2560

#if Loaderchip = 2560       ' Mega2560
    $loader = &H1FC00       ' 1024 words
    Const Maxwordbit = 7       'Z7 is maximum bit                                   '
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
#endif

Const Maxword =(2 ^ Maxwordbit) * 2       '128
Const Maxwordshift = Maxwordbit + 1
Const Cdebug = 0       ' leave this to 0

#if Cdebug
   Print Maxword
   Print Maxwordshift
#endif

'Dim the used variables
Dim Bstatus As Byte , Bretries As Byte , Bblock As Byte , Bblocklocal As Byte
Dim Bcsum1 As Byte , Bcsum2 As Byte , Buf(128) As Byte , Csum As Byte
Dim J As Byte , Spmcrval As Byte       ' self program command byte value

Dim Z As Long       'this is the Z pointer word
Dim Vl As Byte , Vh As Byte       ' these bytes are used for the data values
Dim Wrd As Word , Page As Word       'these vars contain the page and word address
Dim Bkind As Byte , Bstarted As Byte

Disable Interrupts       'we do not use ints

'some constants used in serial com
Const Nak = &H15
Const Ack = &H06
Const Can = &H18

'we use some leds as indication in this sample , you might want to remove it
Config Pinb.2 = Output
Portb.2 = 1       'the stk200 has inverted logic for the leds
Config Pinb.3 = Output
Portb.3 = 1

$timeout = 400000       'we use a timeout

Bretries = 5       'we try 5 times
Testfor123:
#if Cdebug
    Print "Try " ; Bretries
    Print "Wait"
#endif
Bstatus = Waitkey()       'wait for the loader to send a byte
#if Cdebug
   Print "Got "
#endif

Print Chr(bstatus);

If Bstatus = 123 Then       'did we received value 123 ?
   Bkind = 0       'normal flash loader
   Goto Loader
Elseif Bstatus = 124 Then       ' EEPROM
   Bkind = 1       ' EEPROM loader
   Goto Loader
Elseif Bstatus <> 0 Then
   Decr Bretries
   If Bretries <> 0 Then Goto Testfor123       'we test again
End If

For J = 1 To 10       'this is a simple indication that we start the normal reset vector
   Toggle Portb.2 : Waitms 100
Next

#if Cdebug
  Print "RESET"
#endif
Goto _reset       'goto the normal reset vector at address 0

'this is the loader routine. It is a Xmodem-checksum reception routine
Loader:
  #if Cdebug
      Print "Clear buffer"
  #endif
  Do
     Bstatus = Waitkey()
  Loop Until Bstatus = 0

  For J = 1 To 3       'this is a simple indication that we start the normal reset vector
     Toggle Portb.2 : Waitms 50
  Next

  If Bkind = 0 Then
     Spmcrval = 3 : Gosub Do_spm       ' erase  the first page
     Spmcrval = 17 : Gosub Do_spm       ' re-enable page
  End If

Bretries = 10       'number of retries

Do
  Bstarted = 0       ' we were not started yet
  Csum = 0       'checksum is 0 when we start
  Print Chr(nak);       ' firt time send a nack
  Do

    Bstatus = Waitkey()       'wait for statuse byte

    Select Case Bstatus
       Case 1:       ' start of heading, PC is ready to send
            Incr Bblocklocal       'increase local block count
            Csum = 1       'checksum is 1
            Bblock = Waitkey() : Csum = Csum + Bblock       'get block
            Bcsum1 = Waitkey() : Csum = Csum + Bcsum1       'get checksum first byte
            For J = 1 To 128       'get 128 bytes
              Buf(j) = Waitkey() : Csum = Csum + Buf(j)
            Next
            Bcsum2 = Waitkey()       'get second checksum byte
            If Bblocklocal = Bblock Then       'are the blocks the same?
               If Bcsum2 = Csum Then       'is the checksum the same?
                  Gosub Writepage       'yes go write the page
                  Print Chr(ack);       'acknowledge
               Else       'no match so send nak
                  Print Chr(nak);
               End If
            Else
               Print Chr(nak);       'blocks do not match
            End If
       Case 4:       ' end of transmission , file is transmitted
             If Wrd > 0 And Bkind = 0 Then       'if there was something left in the page
                 Wrd = 0       'Z pointer needs wrd to be 0
                 Spmcrval = 5 : Gosub Do_spm       'write page
                 Spmcrval = 17 : Gosub Do_spm       ' re-enable page
             End If
            '  Waitms 100                                   ' OPTIONAL REMARK THIS IF THE DTR SIGNAL ARRIVES TO EARLY
             Print Chr(ack);       ' send ack and ready

             Portb.3 = 0       ' simple indication that we are finished and ok
             Waitms 20
             Goto _reset       ' start new program
       Case &H18:       ' PC aborts transmission
             Goto _reset       ' ready
       Case 123 : Exit Do       'was probably still in the buffer
       Case 124 : Exit Do
       Case Else
          Exit Do       ' no valid data
    End Select
  Loop
  If Bretries > 0 Then       'attempte left?
     Waitms 1000
     Decr Bretries       'decrease attempts
  Else
     Goto _reset       'reset chip
  End If
Loop

'write one or more pages
Writepage:
If Bkind = 0 Then
   For J = 1 To 128 Step 2       'we write 2 bytes into a page
      Vl = Buf(j) : Vh = Buf(j + 1)       'get Low and High bytes
      lds r0, {vl}       'store them into r0 and r1 registers
      lds r1, {vh}
      Spmcrval = 1 : Gosub Do_spm       'write value into page at word address
      Wrd = Wrd + 2       ' word address increases with 2 because LS bit of Z is not used
      If Wrd = Maxword Then       ' page is full
          Wrd = 0       'Z pointer needs wrd to be 0
          Spmcrval = 5 : Gosub Do_spm       'write page
          Spmcrval = 17 : Gosub Do_spm       ' re-enable page

          Page = Page + 1       'next page
          Spmcrval = 3 : Gosub Do_spm       ' erase  next page
          Spmcrval = 17 : Gosub Do_spm       ' re-enable page
      End If
   Next

Else     'eeprom
     For J = 1 To 128
       Writeeeprom Buf(j) , Wrd
       Wrd = Wrd + 1
     Next
End If
Toggle Portb.2 : Waitms 10 : Toggle Portb.2       'indication that we write
Return

Do_spm:
  Bitwait Spmcsr.0 , Reset       ' check for previous SPM complete
  Bitwait Eecr.1 , Reset       'wait for eeprom

  Z = Page       'make equal to page
  Shift Z , Left , Maxwordshift       'shift to proper place
  Z = Z + Wrd       'add word
  lds r30,{Z}
  lds r31,{Z+1}

  #if _romsize > 65536
      lds r24,{Z+2}
      sts rampz,r24       ' we need to set rampz also for the M128
  #endif

  Spmcsr = Spmcrval       'assign register
  spm     'this is an asm instruction
  nop
  nop
Return

Отредактировано sasha_1973 (2013-10-08 22:26:36)

0

12

Такая же проблема, не видит Bascom Arduino 2560

0

13

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

Такая же проблема, не видит Bascom Arduino 2560

Подробнее, что значит не видит, при каких вводных?

Отредактировано sasha_1973 (2014-04-07 07:41:00)

0

14

Вводные те же, что и автора топика - Arduino 2560 с родным бутлодером. Менять родной бутлодер на Bascom не хочется, потеряется совместимость со средой разработки Arduino.

0

15

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

Менять родной бутлодер на Bascom не хочется, потеряется совместимость со средой разработки Arduino.

Сохраните родной Boot, меняйте Bootloader по мере необходимости.

+1

16

Итак, есть два варианта шить 2560 с Ардуиновским загрузчиком:
1. Через "дудку" (Averdude.exe, как здесь http://habrahabr.ru/post/151544/) с указанием STK500v2 в параметрах (avrdude.exe -ce:\arduino-0022\hardware\tools\avr\etc\avrdude.conf -p -p  -p m2560 -c stk500v2 -P COM19 -b 115200 -U flash:w:{FILE}:i)

2. Новым Basсom, в версии 2.0.7.7 появился программатор Arduino STK500v2

0

17

И всё-таки, чего не хотите поменять загрузчик???

0

18

Была у меня точь в точь такая трабла. Посмотри в моей темке, там всё расписано.

0

19

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

И всё-таки, чего не хотите поменять загрузчик???

Если поменять загрузчик с платой будет неудобно работать в среде ArduinoIDE, под которую масса библиотек и примеров кода.

0

20

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

Если поменять загрузчик с платой будет неудобно работать в среде ArduinoIDE, под которую масса библиотек и примеров кода.

Понятненько. Я пару раз пробовал, ну не нравится мне их среда разработки, плюс почему-то тормоза несусветные.

0

21

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

Понятненько. Я пару раз пробовал, ну не нравится мне их среда разработки, плюс почему-то тормоза несусветные.

Я тоже не в восторге, но под нее куча примеров реализаций протоколов, чем собирать грабли методом тыка иногда удобней тестануть на реальной железке и портировать нужные куски.

0

22

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

Я тоже не в восторге, но под нее куча примеров реализаций протоколов

Например, что там есть такого, чего нельзя сделать на Bascome?

0

23

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

Например, что там есть такого, чего нельзя сделать на Bascome?

Сделать можно все, но там уже ЕСТЬ. Улавливаете разницу? Например там есть готовая библиотека работы с Oregon_овскими датчиками, есть библиотека для акселеромеров ADXL 345, библиотека RCSwitch, из которой я портировал код эмулятора пульта. Да много чего готового есть. Проще посмотреть по коду проверив и портировать, чем снифать обмен и наступить на грабли частности решения.

0

24

давно не заходил сюда. пользуюсь активно платкой, залил бутлоадер BASCOM. работает как ракета!

0

25

Столкнулся с такой проблемой!
Сразу оговорюсь, что для себя я её решил, но как говориться НО осталась...

Начнём с вводных:
Плата китайская ДУИНА на mega2560 с юсб переходником на CH340G
Прошивалка китайская usbasp
Bascom версии 2.0.7.5

Пытаюсь зашить HEX файл бутлоадера который пользую уже много лет на всех tiny и mega
плюсы и минусы его перечислять не буду, на вкус и цвет все фломастеры разные.

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

Вечер помучился забил

Сейчас прошил этот же HEX файл в SinaProg, с первого раза всё прошилось и верифицировалось!
Ну соответственно и заработало!

Пытаюсь прочитать записанное в баском, он упорно говорит, что в МК записаны 0000

Такое ощущение, что он не может читать и писать большие адреса ИМХО.

Кому не лень попробуйте залить!
СкачатьBOOTLOAD2560.rar

0

26

Геныч написал(а):

Кому не лень попробуйте залить!

Исходник Bootloadera где?

0

27

Дык зачем он?

Он на С написан, не думаю что сильно поможет!

Я про то, что данный HEX баском не пишет и не читает с чипа при этом на экране показывает его правильно
А другой прогой шется и читается
сылка на hex выше!

Отредактировано Геныч (2014-11-23 19:22:06)

0

28

Шьёте через Bascom чем, программатором, каким?

0

29

Нескромный вопрос, а чем не нравится Bascom bootloader?

0

30

в сообщении было

Начнём с вводных:
Плата китайская ДУИНА на mega2560 с юсб переходником на CH340G
Прошивалка китайская usbasp
Bascom версии 2.0.7.5

Да почему нескромный?
Мне нужно универсальное средство, которое может шить вне зависимости на чём написана прога + плюшки ввидe rs485
А баскомовский прошивальщик мне непонравился почему то на подсознанке. :)

0