$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Программирование микроконтроллеров ATmega просто, если у вас настроена вся инфраструктура и на борту микрокомпьютера Raspberry Pi установлено специальное программное обеспечение. Для программирования можно использовать плату Arduino IDE. Чтобы соединить Arduino IDE с Raspberry Pi и Gertboard, нужно будет сделать несколько небольших изменений: установить дополнительные пакеты и осуществить правку файлов конфигурации Arduino. Надо отметить, что эта работа была проведена Гордоном Хендерсоном (см. разд. 6.1.3).
Итак, сначала устанавливаем Arduino IDE:
sudo apt-get install arduino
Теперь загрузим и установим модифицированный пакет avrdude:
cd /tmp
wget http://project-downloads.drogon.net/gertboard/avrdude 5.10-4 armhf.deb sudo dpkg -i avrdude 5.10-4 armhf.deb sudo chmod 4755 /usr/bin/avrdude
Далее скачаем и выполним сценарий для изменения некоторых системных файлов:
cd /tmp
wget http://project-downloads.drogon.net/gertboard/setup.sh chmod +x setup.sh sudo ./setup.sh
Следующий шаг — сообщить Arduino IDE о процессоре ATmega на нашей плате Gertboard. Для этого подменяем в Arduino IDE файлы boards.txt и programmers.txt, добавив в них соответствующую информацию:
cd /tmp
wget http://project-downloads.drogon.net/gertboard/boards.txt wget http://project-downloads.drogon.net/gertboard/programmers.txt cd /usr/share/arduino/hardware/arduino sudo mv boards.txt board.txt.bak sudo mv /tmp/boards.txt .
sudo mv programmers.txt programmers.txt.bak sudo mv /tmp/programmers.txt .
Прежде чем начать программировать ATmega, следует инициализировать чип. Но сначала надо подключить Gertboard к Raspberry Pi и установить четыре перемычки от GPIO Raspberry Pi к порту программатора ATmega ISP следующим образом (рис. 6.33):
* GPIO контакт 8 ^ ISP контакт 5 (сброс);
* GPIO контакт 9 ^ ISP контакт 1 (MISO);
* GPIO контакт 10 ^ ISP контакт 4 (MOSI);
* GPIO контакт 11 ^ ISP контакт 3 (SCLK).
Теперь запустим скрипт для инициализации процессора ATmega:
avrsetup
Если все сделано правильно, вы должны увидеть результат, подобный изображенному на рис. 6.34.
На следующем шаге нужно настроить среду IDE для работы с платой Gertboard. Перейдите к настройке: Tool | Board и выберите опцию Gertboard с тем типом
микросхемы, который установлен на плате, — это могут быть ATmega168 или ATmega328, они чаще всего используются совместно с платой Gertboard (рис. 6.35).
Затем перейдите в меню Tools | Programmer и выберите Raspberry Pi GPIO (рис. 6.36). микросхемы, который установлен на плате, — это могут быть ATmega168 или ATmega328, они чаще всего используются совместно с платой Gertboard (рис. 6.35).
Затем перейдите в меню Tools | Programmer и выберите Raspberry Pi GPIO (рис. 6.36). в мире Arduino номера контактов чипов не соответствуют номерам их функций. Вместо этого есть некоторые абстрактные обозначения цифровых и аналоговых выводов, которые не зависят от номеров выводов самих физических устройств. Это позволяет коду, написанному для одного устройства Arduino, успешно работать на другом устройстве Arduino, которое может иметь чип с другой раскладкой выводов. В табл. 6.3 показано соответствие выводов платы Gertboard с Arduino IDE.
Теперь можно приступить к написанию скетча (программы для Arduino). Примем за основу программу Blink из примеров к Arduino IDE (File | Examples | Basics | Blink). Чтобы загрузить скетч в чип Arduino IDE, выполните команду меню File | Upload Using Programmer (рис. 6.37).
Это займет некоторое время, необходимое для компиляции и загрузки, а затем ваш скетч заработает на микроконтроллере. Чтобы наглядно увидеть работу скетча (изменение состояния на входе PB5 разъема J25 с периодичностью 1 сек.), подсоединим светодиод 1 перемычкой с PB5 на BUF1, и он станет мигать.
Иногда при загрузке скетча может возникнуть ошибка (рис. 6.38). Чаще всего это происходит по двум причинам:
* загрузка осуществляется командой Upload (т. е. File | Upload), а правильно применить команду Upload Using Programmer (File | Upload Using Programmer);
* нет перемычки для подключения питания 3,3 В (2 верхних контакта на разъеме J7).
По умолчанию Gertboard использует для GPIO последовательный порт AMA0. Однако Arduino IDE не воспринимает устройство /dev/ttyAMA0 как последовательный порт, поэтому мы переназначим порт на устройство /dev/ttyS1:
sudo ln /dev/ttyAMA0 /dev/ttyS1
Связывание делаем постоянным:
sudo nano /etc/init.d/link serial Заносим в файл iink_seriai следующий код:
#!/bin/bash
ln -s /dev/ttyAMA0 /dev/ttyS1
И далее:
sudo chmod 755 /etc/init.d/link serial update-rc.d link serial defaults
Теперь при запуске Arduino IDE появится порт /dev/ttyS1 (рис. 6.39).
Проверяем, так ли это. Пишем небольшой скетч (листинг 6.18), загружаем его в Gertboard на ATmega, открываем монитор последовательного порта — и видим вывод данных скетча в последовательный порт (рис. 6.40).
Листинг 6.18. Скетч для вывода данных в последовательный порт
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("millis="); Serial.println(millis()); delay(1000);
}