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 же.)

0
0

About Кирилл Васин

Прохожий из шапки сайта

21 Comments

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

        1. Вот схема. Печатную плату к сожалению не нашел. Нумерация пинов:

          Порт микроконтроллера Пин в  Arduino
          PD0 0
          PD1 1
          PD2 2
          PD3 3
          PD4 4
          PD5 5
          PD6 6
          PD7 7
          PB0 8
          PB1 9
          PB2 10
          PB3 11
          PB4 12
          PB5 13
          PC0 14
          PC1 15
          PC2 16
          PC3 17
          PC4 18
          PC5 19

          А насчет отображения ArduinoMega32, попробуйте сделать по туториалу или вот готовая сборка.

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

    1. Вот такие ошибки выдает:
      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 это я перепутал, в другой программе такие ошибки выскакивали

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

        1. Со стандартной библиотекой у меня тоже ничего не получилось, а библиотека 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, так как она уже ушла в дело. библиотека.

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

    1. 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *