Параллельный программатор для микроконтроллеров Atmel серии АТ89 |
После удаления фоторезиста производится травление
медной фольги с металлизированным слоем суммарной толщиной 10-15 мкм с пробельных
мест схемы. Для этого применяется травильная установка с медноаммиачным травильным
раствором. В варианте использования металлорезиста ПОС-61 последний удаляется в
травильном растворе в струйной конвейерной установке. При применении в качестве
металлорезиста никеля сложность процесса в том, что слой никеля остается на
поверхности проводника и несколько шире его медной части. Поэтому применение
металлорезиста сплава олово/свинец с последующим его удалением является более
технологичным процессом.
Из изложенного выше можно сделать вывод: изготовление
слоев по субтрактивной технологии с применением диэлектриков с тонкой медной
фольгой толщиной 5 - 9 мкм обеспечивается получение проводящего рисунка с минимальной
шириной проводников и зазоров между ними порядка 50 мкм при толщине проводников
5-9 мкм и 100 - 125 мкм при толщине проводников 40-50 мкм.
3). Травление.
Важнейшей технологической операцией в
производстве электронных элементов и функциональных узлов является травление.
Под этим понимают химическое разрушение материала под действием газообразных
или жидких травителей. Продукты реакции в общем случае удаляются благодаря подвижности
травителя. Травление применяется для:
- создания определенного рисунка
металлических слоев, расположенных на нетравящем диэлектрике (например, для
получения рисунка ПП при субтрактивном методе);
- создания мельчайших отверстий
микрометрового диапазона в металлической фольге при изготовлении сетчатых
трафаретов, масок и фильтров;
- изготовления сложных профильных деталей
из тонкой жести и металлической фольги (профильное травление);
- создания металлически чистых
поверхностей для последующего осаждения слоев или контактирования;
- создания определенного рельефа
поверхности;
- удаления изоляционных слоев для
частичного обнажения металлических слоев (подтравливание в МПП).
Наиболее часто техника травления
применяется для создания рисунка ПП при субтрактивном методе. При этом до 90%
металлической фольги, нанесенной на диэлектрик фольгированием или напылением,
удаляется, а нужные участки защищаются металлическими или лаковыми слоями,
устойчивыми при травлении. В основном подвергают травлению металлы, особенно Сu и ее сплавы, Ni, сплавы Ni и Cr, Al, Au, Ag, Pt, Pd, Та, Ti, Mo, а также сталь.
Кроме того, в производстве электронных элементов необходимо травить полупроводниковые
материалы (Si, Ge) и диэлектрические слои (как правило, SiO2). Удаления неметаллов стремятся избежать, так как
они очень устойчивы при травлении. Имеется всего несколько исключений, например
травление стекла и эпоксидной смолы в отверстиях МПП.
4). Прессование.
Многослойные печатные платы
изготавливают прессованием диэлектрических фольгированных материалов (с одно-
или двухсторонним расположением печатных проводников) и прокладочной
стеклоткани. Процесс основан на клеящей способности последней при тепловом воздействии.
Процесс прессования определяется
характером изменения давления и температуры. Качество прессованного соединения
зависит от множества факторов, важнейшими из которых являются: свойства
прокладочной стеклоткани и момент перехода от давления склеивания, когда
связующее переводится в клеящее состояние, к давлению отверждения.
Прокладочная стеклоткань обеспечивает:
- прочное сцепление с поверхностью
диэлектрических материалов;
- заполнение места вытравленного
медного слоя;
- ликвидацию воздушных включений между
слоями за счет растекания смолы;
- необходимые зазоры между слоями;
- заданную толщину МПП.
5). Очистка.
При формировании структуры слоев и
контактировании металлических выводов детали (подложки, поверхности контактов)
должны обладать определенным состоянием поверхности, если нежелательны
серьезные помехи в процессе производства, высокий процент брака и снижение
надежности. Применяемые для этих целей процессы очистки обеспечивают удаление
крупных загрязнений (органических и неорганических отложений, крупных
продуктов коррозии); тонких пленок масла и жира; тонких пленок окислов; органических
и неорганических защитных покрытий (резисты трафаретной печати, фоторезисты).
Тесно связаны с процессами очистки
такие химические и механические процессы, которые наряду с очисткой
способствуют изменению состояния поверхности (выглаживание, придание
шероховатости) или удалению заусенцев, образующихся при механической обработке.
Кроме того, разработан ряд методов очистки, использующих особые физические
эффекты в соединении с химическими средствами, например ультразвуковая очистка.
Особое внимание необходимо уделить очистке, основанной на промывке, нейтрализации
и сушке.
6. Программная поддержка программатора.
6.1. Программирование микроконтроллеров серии АТ89.
|
Таблица
6.
|
|
Байты сигнатуры
|
Микросхема
|
|
(Hex)
|
|
|
1
|
2
|
3
|
АТ89С1051
|
1Е
|
11
|
Нет
|
AT89C1051U
|
1Е
|
12
|
Нет
|
АТ89С2051
|
1Е
|
21
|
Нет
|
AT89C2051x2
|
1Е
|
22
|
Нет
|
АТ89С4051
|
1Е
|
41
|
Нет
|
АТ89С51
|
1Е
|
51
|
FF
|
АТ89С51-ХХХХ-5
|
1Е
|
51
|
05
|
AT89LV51
|
1Е
|
61
|
FF
|
АТ89С52
|
1Е
|
52
|
FF
|
АТ89С52-хххх-5
|
1Е
|
52
|
05
|
AT89LV52
|
1Е
|
62
|
FF
|
AT89S53
|
1Е
|
53
|
Нет
|
AT89LS53
|
1Е
|
63
|
Нет
|
АТ89С55
|
1E
|
55
|
FF
|
АТ89С55-ХХХХ-5
|
1E
|
55
|
05
|
AT89LV55
|
1Е
|
65
|
FF
|
AT89S8252
|
1Е
|
72
|
Нет
|
AT89LS8252
|
1Е
|
82
|
Нет
|
Программа автоматически определяет тип
установленного в одну из панелей микроконтроллера, анализируя для этого его
сигнатуру – два или три байта, специально записанные в постоянной памяти.
Перечень сигнатур микроконтроллеров семейства АТ89 приведен в таблице 6. Если
все байты сигнатуры равны 0FFH, отсутствует в панели или неисправен микроконтроллер,
а возможно – не включено питание программатора.
Рекомендуемая операционная среда – MS
DOS. Пользователям Windows следует запускать программу, предварительно перезагрузив
компьютер в режиме MS DOS или установить такой режим в свойствах файла. Иначе
программирование микросхем придется повторять по три-четыре раза подряд, пока
не прекратятся сообщения об ошибках верификации.
Весь процесс программирования занимает
не более одной-двух минут, а собственно загрузка FLASH-памяти – максимум
10...15 с. Команды, список которых выведен на экран монитора, подают, нажимая
клавиши с буквами латинского алфавита. Регистр (верхний или нижний) не имеет
значения.
Имя двоичного файла, данные из которого
должны быть загружены в память микроконтроллера, вводят после подачи команды
"Чтение файла". Содержимое этой памяти можно предварительно
прочитать и сохранить в аналогичном файле (команда "Запись в файл").
При сверке содержимого памяти с данными из файла (команда "Сверка с файлом")
возможно появление на экране сообщений, подобных такому:
В ячейке FLASH 039A = FF ?! 6В
Это означает, что а ячейке FLASH-памяти
(памяти программ) микроконтроллера по адресу 39АН записан код 0FFH вместо 6ВН,
указанного в файле.
6.2. Исходный текст программы.
Программа написана на языке
программирования Borland C++
// Программа для AT89C51/C52/C1051/C1052
программатора.
#include <stdio.h>
#include <string.h>
#include <graph.h>
#include <dos.h>
#define FALSE 0
#define TRUE -1
//#define PBASE 0x378 //
LPT1 базовый адрес
//#define PBASE 0x278 //
LPT2 базовый адрес
//#define PDATA (PBASE+0)
//#define PSTAT (PBASE+1)
//#define PCTRL (PBASE+2)
#define CHIPSIZE 2048 //
AT89C1052 размер FLASH-памяти
#define TCVT (1.19318) //
постоянная преобразования времни
//
частота порядка 1E6
// Коды четырехбитных функций (передача
в P3.6; P3.5; P3.4; P3.3).
#define WRITE_DATA 0xe
#define READ_DATA 0xc
#define WRITE_LOCK_1 0xf
#define WRITE_LOCK_2 0x3
#define CHIP_ERASE 0x1
#define READ_SIGNATURE 0x0
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned int BOOLEAN;
typedef unsigned long int BIGINT;
BOOLEAN load_data( char *, BYTE *, int *
);
BOOLEAN save_data( char *, BYTE *, int );
void erase( BYTE * );
void program( BYTE *, BYTE *, int );
void xread( BYTE *, BYTE *, int );
BOOLEAN verify( BYTE *, BYTE *, int );
BOOLEAN blank( BYTE * );
void signature( BYTE * );
void lock( BYTE *, int );
void reset( BYTE * );
void set_function( BYTE );
void set_data( BYTE );
BYTE get_data( void );
void enable_address( BYTE * );
void disable_address( BYTE * );
void enable_data( BYTE * );
void disable_data( BYTE * );
void enable_RST( BYTE * );
void disable_RST( BYTE * );
void pulse_RST( BYTE*, int );
void pulse_XTAL1( BYTE*, int );
void pulse( BYTE *, int );
void delay( BIGINT );
extern void tinit( void );
extern void tend( void );
extern void tread( void );
extern void disable_traps( void );
extern void enable_traps( void );
WORD pctrl, pdata; // Адреса регистра
данных и регистра управления //LPT-порта
BIGINT tcount = 0L; //
счет таймера
main(argc, argv)
int argc;
char *argv[];
{
FILE *fptr;
int fsize;
BYTE pgmdata[CHIPSIZE], control
= 0;
char *pch, fname[20];
WORD far *p_lpt1 = (WORD far
*)0x00400008;
WORD far *p_lpt2 = (WORD far
*)0x0040000a;
if ((argc > 1) &&
((pch = strpbrk( argv[1], "12" )) != NULL)) {
switch (*pch) {
case '1': //
LPT1
pdata =
*p_lpt1;
pctrl =
*p_lpt1 + 2;
break;
case '2': //
LPT2
pdata =
*p_lpt2;
pctrl =
*p_lpt2 + 2;
break;
}
if (pdata == 0) { //
порт неопределен
puts(
"SPP параллельный порт не установлен." );
exit( 255 );
}
} else puts(
tinit(); //
запускаем таймер
disable_traps(); //
запрещаем ctl-C и ctl-break
while (TRUE) {
_clearscreen(
_GCLEARSCREEN );
puts( "Стирание
чипа\t\tD\n" );
puts( "Программа
из файла \tF" );
puts( "Сравнение
данных на чипе с файлом\tG" );
puts( "Запись в
файл\t\tH\n" );
puts( "Проверка:
чистый чип или нет\t\tI\n" );
puts( "Чтение
сигнатуры\t\tJ\n" );
puts( "Запись
Lock Bit 1\tL" );
puts( "Запись
Lock Bit 2\tN\n" );
puts(
"Выход\t\t\tX\n\n" );
printf( "Ваш
выбор: " );
gets( pch );
*pch |= 0x20;
//конвертируем первый символ в нижний регистр
switch (*pch) {
case 'd': //
стирание чипа
erase(
&control );
break;
case 'f': //
запись чипа из файла
printf(
"Введите имя файла: " );
gets(
fname );
fsize
= CHIPSIZE;
if
(load_data( fname, pgmdata, &fsize ))
program(
&control, pgmdata, fsize );
else
{
_clearscreen(
_GCLEARSCREEN );
puts(
"Ошибка открытия или чтения входного файла данных." );
puts(
"\nНажмите Enter для продолжения..." );
gets(
pch );
}
break;
case 'g': //
сравнивание содержимого чипа с файлом
Страницы: 1, 2, 3, 4, 5, 6
|