Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103 соответственно. На самом деле приведенная схема соответствует одновременно обеим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы
Разводка колодки Х2 на приведенной схеме соответствует принятой фирмой Atmel для производимых ею плат.
Рис. 4.6.
Чтобы проверить эту схему в работе, вам нужно иметь только один микроконтроллер AT90S2313, источник питания +5 В и кварцевый резонатор частотой 4 МГц. Кроме этого, потребуется несколько пассивных элементов — конденсаторов и резисторов. Электрическая принципиальная схема устройства изображена на рис. 4.7.
Для управления светодиодом в схеме использован всего один вывод микроконтроллера — PD1.
Рис. 4.7.
Пример программы
Для проверки работы кабеля внутрисхемного программирования и демонстрационной схемы предлагается несложная программа, которая заставляет мигать светодиод. Оттранслированный код для этой программы можно найти на прилагаемом к книге компакт диске в файле blink.hex.
Текст программы:
// blink.с
#include <90s2313.h>
#include
void main()
{
// инициализация порта D
DDRD=0xff; // Порт D работает на вывод
PORTD=0x00;
while(1)
{
PORTD.1=0;
delay_ms(1000);
PORTD.1=1;
delay_ms(1000);
} // while(1)
} // main
Простейший способ работы с прорамматором — использование команды меню Project, подменю CONFIGURE. Если осуществить указанные на рис. 4.8 установки, оттранслированный код программы будет загружен в микроконтроллер непосредственно после успешной компиляции.
Рис. 4.8.
Перед работой следует указать тип используемого программатора. На рис. 4.9 показан вид окна выбора типа программатора.
Рис. 4.9.
После успешной трансляции должно появиться окно, подобное показанному на рис. 4.10. Для занесения программы в микроконтроллер, следует нажать кнопку «Program».
Рис. 4.10.
Процедуры работы со встроенным АЦП AT90S8535 без прерываний
Текст программы:
// В данном примере определяются две функции для работы с АЦП:
// void ImtADC(void) инициализация АЦП
// int fieadADC(unsigned char) чтение значения напряжения на заданном входе
#include
void InitADC(void)
{
ADMUX = 0; // выбрать вход номер 0
ADCSfi = 0xC0; // включить АЦП и запустить первое "пустое" преобразование
}
int ReadADC(unsigned char channel)
{
int i;
ADMUX = channel; // Выбрать номер входа
ADCSR |= 0x40; // Начать преобразование
while (!(ADCSR & 0x10)); // Проверка завершения преобразования
ADCSR |= 0x10; //Очистка бита "Преобразование завершено" при помощи записи в него "1"
i = ADCL; // Чтение младших 8 битов ПЕРВЫМИ
i += (int)ADCH << 8; // Чтение старших 2 битов, умножение их на 256 и сложение с младшим байтом
return i;
}
void main(void)
{
unsigned int temp;
InitADC(); // Инициализация АЦП
temp=ReadADC(0); // Измерить напряжение на нулевом входе АЦП (линия РАО порта А)
}