Atmega32 + ArduinoIDE

Многим новичкам удобнее писать код в среде ArduinoIDE на WiringC++, но как подружить эту среду с другими контроллерами? К примеру, с atmega32. В принципе, WiringC++ это тот же самый C++, но только с кучкой библиотек и констант, облегчающих работу. Ведь да же ядро ArduinoIDE — WinAvr.

В папке hardware хранятся конфигурационные файлы того или иного контроллера: назначение пинов, названия таймеров и прочих. Таким образом, отредактировав эти файлы соответствующим образом, можно добавить поддержку любого контроллера семейства AVR.

На просторах интернета существовала плата ATmega32 Dev Board, это была Arduino на базе Atmega32/16. К сожалению, этот проект распался и от них я успел отхватить лишь несколько файлов для IDE. 🙁

Схема этой ардуино-подобной платы была примерно такой:

Ashampoo_Snap_2014.03.22_11h43m43s_002_

Но через digitalWrite/Read задействованы выводы: PB6, PB7, PC6, PC7. Однако ими можно управлять напрямую через PORTX.

Чтобы добавить поддержку этой платы, необходимо загрузить архив и поместить файлы в папку arduino-x\hardware\arduino. Затем запустить среду и выбрать ArduinoMega32. Для теста загрузим программу blink, моргающую пином 0. (это PD0).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int led = 0;
 
// the setup routine runs once when you press reset:
void setup() { 
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT); 
}
 
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(1000); // wait for a second
  digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
  delay(1000); // wait for a second
}

Теперь нужно скомпилировать нашу программу.

А как загрузить программу? Очень просто, от ArduinoIDE нам нужен только .hex файл прошивки, остальное можно сделать через Uniprof.
Нужный нам .hex файл будет находиться довольно далеко: C:\Users\(имя пользователя)\AppData\Local\Temp\build(цифры всякие).tmp. Ищите по дате изменения; IDE не нужно закрывать.


Зашиваем программу в контроллер и все должно заработать.

Ypa

Я проверял несколько библиотек (работа с символьными экранами, SD, анти-дребезг и прочие), с ними проблем нет. Системные таймеры для delay, Micros — работают. Но весь потенциал контроллера язык раскрыть не сможет, поэтому лучше совмещать с Си/Асм, так как в этом ограничений нет. (ядро WinAVR же.)

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

21 комментарий к “Atmega32 + ArduinoIDE”

  1. Artur:

    А схемку Arduino Mega32 можно увидеть?

    • А что конкретно вас интересует?

      • Artur:

        Меня интересует схема и ваша плата 💡 ардуино на ATmega32, нумерация выходных пинов устройства. Ещё у меня не получается вставить разорхивированный файл «Atmega32_Dev_Board» в \arduino-0021\hardware\arduino , в списке Board ATmega32 не отображается. ❓

  2. maks:

    А можно создать поддержку кристаллов семейства TINY, например 2313?

  3. sae74:

    Подскажите, как установить фьюзы для прошивки загрузчика?

  4. Игорь:

    Здравствуйте! Сделал arduino на atmega32. Все работает, но не компилируется скейтч с применением SD карт. Что то видимо не так в Arduino_pins.h А очень хотелось бы подключить к atmega32 sd карточку для логирования

    • Игорь:

      Вот такие ошибки выдает:
      In file included from ReadWrite.cpp:21:
      D:\install\arduino-00221\arduino-0022\libraries\SD/SD.h:29: error: expected class-name before ‘{‘ token
      ReadWrite.cpp: In function ‘void setup()’:
      ReadWrite:47: error: ‘class File’ has no member named ‘println’
      С arduino_pins это я перепутал, в другой программе такие ошибки выскакивали

      • C SD картой я еще не пробовал, да и вообще, при работе с некоторыми библиотеками часто выдавались ошибки. Пока времени нет, позже протестирую, отпишусь. 😉

        • Со стандартной библиотекой у меня тоже ничего не получилось, а библиотека SdFat(на ней была основана SD биб.) компилируется :-). Также я добавил в нее поддержку atmega32, но функции ArduinoOutStream cout(Serial);, count и т.п. не работают, собственно говоря, они просто выводят данные в com-порт. Попробуйте, запишите простой скетч.

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          
          #include <SdFat.h>
           
          const uint8_t chipSelect = SS_PIN;
           
          SdFat sd;
           
          SdFile file;
           
          void setup() {
            sd.init(SPI_HALF_SPEED, chipSelect);
            file.open("test.txt", O_RDWR | O_CREAT | O_AT_END);
            file.print("Abrakadabra");
            file.close();
            }
           
          }
          //------------------------------------------------------------------------------
          void loop() {}

          У меня нет возможности протестировать atmega32, так как она уже ушла в дело. библиотека.

  5. Сергей:

    Здрасте 🙂 , я недавно разобрал сигнализацыю и обнарудыл там микроконтроллер AT90S2313-10SI , немного помучавшысь я сдался 😥 и вот обращаюсь к вам 🙄 КАК ЕГО ЗАПРОГРАМИРОВАТЬ ???

    • 8- ми разрядный AVR® микроконтроллер с 2 Кбайт Flash памятью с поддержкой внутрисистемного программированием
      http://www.polesite.ru/wp-content/uploads/2013/01/2313_p.gif
      Аналог — Attiny2313. Питание: 5В (GND, VCC) Reset — очевидно, во время работы контроллера нужно прижать к gnd через 10кОм резистор. Кварц нужен на 10Мгц

      Как запрограммировать? Можно использовать программатор Громова Подключить его к MOSi, MISO, SCK, RESET и GND. Больше ничего не надо. Единственная проблема, если вы нашли его в заводской сигнализации, возможно, перепрошить его не получится. Так как, многие производители любят ставить фьюзы микроконтроллера на защиту прошивки, т.е. сменить ее вообще нельзя.

      Писать программу можно будет в самой обычной Avr Studio.

  6. Сергей:

    😐 с фюзами прокол, ну ладно будим пробывать, спасибо 8)

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bug Report
Локализовано: шаблоны Wordpress