»Радиолюбитель>PIC контроллеры. Программаторы и первый проект на PIC
-=Женек=- 19:56 26.03.2009
Сообщение от :
Но Си для контроллеров - полная фигня, если хотите получить стабильность коротких временных интервалов. Тут нужно писать руками кусочки на асме, вставлять их в Си, а в итоге после компилирования получается программа, которая работает вообще не так, как задумывалось. Ну вот так скомпилировалась...
Не писал ты сложных программ для контроллеров, потому так и говоришь.
Сколько раз у меня были ситуации, когда хотелось винить во всем кривой компилятор, мол я пишу все правильно, значит должно работать. Но потом выяснялось, что виноват был я.
Что касается коротких временных интервалов - писал как-то раз программу в которой приходилось контроллировать количество тактов, за которое выполняется какой либо участок кода - запускал таймер, выводил на экран количество тиков - никакой нестабильности не замечал.
А если программа требует реализации сложных структур, меню на дисплейчике например - как такое написать на ASM? а потом еще и отлаживать?
[Ответ]
petrd 06:55 27.03.2009
Сообщение от romchik77:
Интересно, а какие в общем характерные неисправности МК бывают?
Все неисправности (bugs) выявленные в конкретном контроллере описаны в специальном документе под названем Errata, в нем же описан обход (Work around). А самая главная неисправность, известная мне, это кривые руки + кривая программа. Сами по себе PIC контроллеры очень живучие и надо немало постараться, чтобы его убить (если, конечно, не специально убивать).
[Ответ]
petrd 12:01 27.03.2009
Тот же проект со светодиодами, но немного по-другому.
В предыдущей программе практически все процессорное время уходило на программный отсчет задержки и в течении 1 сек. контроллер уже ничего не мог делать. Для того чтобы избавить контроллер от такой рутины будем использовать аппаратные средства контроллера: механизм прерываний и один из таймеров (TMR0). Максимальное время, которое может отсчитать TMR0 при тактовой частоте 4 МГц равняется примерно 66,304 mS, а если 66,304*15 = 994,56 mS, то есть почти секунда. Вот и будем в каждом 15-м прерывании изменять состояние уровней PORTB на противоположное. Для расчета значений использовал программу PIC Timer Calculator скачать можно здесь http://pictimer.picbingo.com/download/index.php.
Код:
unsigned short counter;
void interrupt(){
if(INTCON.T0IF){
counter++;
if (counter>14){
PORTB=~PORTB; // инверсия уровней на выводах PORTB
counter=0;
}
INTCON.T0IF=0;
}
}// interrupt
void Init(){
TRISB=0; // настроили выводы PORTB на вывод
OPTION_REG = 0x87; // настройка TMR0, прерывания будут каждые 66,304 ms
INTCON.T0IE=1; // разрешили прерывания по переполнению TMR0
INTCON.GIE=1; // включили механизм прерываний
}// Init
void main(){
Init();
while(1){ // организовали вечный цикл
// теперь здесь можно что-то делать, а светодиоды все равно будут моргать 1 раз в секунду
}
}//~
Вопрос, а что делает контроллер в свободное время? Ответ: ничего, курит и ждет, когда прерывание стукнется, а как стукнется, то сразу же обработает и дальше курит. Программа немного усложнилась, а жизнь упростилась. Проверено в железе.
[Ответ]
grifon 15:04 27.03.2009
Мне тут скоро понадобится оригинальный контроллер для шагового двигателя сделать. Ватт 500.. Кто смогет за п.к.д.?
[Ответ]
romchik77 15:29 27.03.2009
Сообщение от petrd:
Вопрос, а что делает контроллер в свободное время? Ответ: ничего, курит и ждет, когда прерывание стукнется, а как стукнется, то сразу же обработает и дальше курит
а смысл этого какой... что можно еще чем то его нагрузить? или энерго потребление стало меньше...
[Ответ]
petrd 15:51 27.03.2009
Сообщение от romchik77:
.. что можно еще чем то его нагрузить?
Конечно, грузить другими задачами, ведь возможно кроме моргания еще чего надо будет делать. А кушает он также. А чтобы меньше кушал надо в спячку (режим sleep) падать пока делать нечего, но для нашего примера не надо.
[Ответ]
petrd, спасибо за тему, очень актуально. вопрос - по книге Шпака Ю.А. реально освоить С самостоятельно? с монитора читать несколько неудобно, хотел в магазинах ее поискать. или можт еще кто чего посоветует для чайника в сях.
[Ответ]
petrd 21:32 28.03.2009
Сообщение от deadshad: petrdвопрос - по книге Шпака Ю.А. реально освоить С самостоятельно?
Да, реально. Я Си самостоятельно осваивал (и было это не так давно) и при этом специально его не изучал. Если есть навыки программирования на любом языке, а главное желание, то проблем не вижу никаких.
Шпак - хорошая книга, но в продаже ее не видел никогда, я ее кусками печатал, да всю ее и не надо. Одно НО, в ней описывается компилятор Си - CCS (я говорю только за PIC), но он не очень-то распростанен (хотя Си он и в Африке Си). Большая масса людей пишет на PICC от HI-Tech. А так книжка хорошая, но из нее быстро вырастаешь и тут уже нужна - БИБЛИЯ по Си (повторюсь) это Брайан Керниган и Деннис Ритчи "Язык программирования С" продается в книжных магазинах, надо только поискать.
[Ответ]
petrd 21:18 29.03.2009
Рассказ "Про TRIS, PORT и LAT или грабли на которые наступают начинающие"
Применительно к PIC16F628A имеется два полных 8-и разрядных порта - PORTA и PORTB. Они могут работать как на вход, так и на выход. Для этого имеются регистры управления направлением - TRISA (для PORTA) и TRISB (для PORTB). Например, если нулевой бит регистра TRISB установлен в 1, то вывод RB0 (нулевой бит PORTB) работает как вход, если бит установлен в 0, то работает как выход. Разработчики Microchip рекомендуют такие ассоциации: "1" похожа на букву "I", первую букву слова Input (вход), ноль - похож на букву O, первую букву слова Output (выход).
Вывод в порт:
Код:
TRISB=0; // все выводы PORTB настроили на вывод
PORTB=0xff; // на всех выводах PORTB будут единички
Чтение порта:
Код:
TRISB=0xff; // все выводы PORTB на вход
i=PORTB; // в переменной i будет сохранено значение считанное с выводов PORTB.
Теперь важное - порты устроены так, что когда выводим что-то в порт, то мы пишем в регистр с выхода которого, уровни появляются на выводах контроллера, а когда мы читаем порт, то мы считываем значение на выводах контроллера (а не читаем значение регистра, как многие предполагают).
Окончание этого рассказа следует.
[Ответ]
petrd 08:38 30.03.2009
Продолжение рассказа "Про TRIS, PORT и LAT или грабли на которые наступают начинающие".
Так вот начинающие часто забывают (или не знают), что порты PIC16 это не совсем регистры, и пытаются с ними работать, как с регистрами. Что пытаются делать? Например, если взять примеры по морганию светодиодами, нам надо погасить один светодиод, в то время как остальные должны продолжать светиться. В MikroC есть команды по установке в 0 или 1 отдельных бит регистра (PORTB.F0=0 или PORTB.F0=1 соответственно), которые эквивалентны командам ассемблера BCF и BSF. Вот этими командами и пытаются погасить или зажечь нужный светодиод, а в результате можно получить, что начинают гаснуть или зажигаться еще и другие светодиоды. Хотя нужен был только один выбранный. В чем же дело? А дело в том, что запись производится по принципу Чтение-Модификация-Запись (RMW - Read_Modify_Write) и происходит это так. Горят все светодиоды PORTB (все 8 штук), это значит, что на выводах PORTB установлена лог. 1. Решили погасить нулевой светодиод командой - PORTB.F0=0. В ходе выполнения этой команды контроллер сначала читает состояние на выводах PORTB (все 8) в аккумулятор, потом изменяет состояние нулевого бита в аккумуляторе на лог. 0 (при этом состояние других бит ему по фигу). И потом это измененное значение записывает в PORTB. При этом гарантированно только, что в нулевом бите будет 0, а на остальных будет то, что было считано с выводов (мы-то думаем что там были только лог. 1) , а считано там может быть что угодно (это зависит от характера нагрузки на выводах, помехи и т.д и т.п.). Вот и получается хотели погасить один светодиод, а погасли еще и другие (а может и нет). Вот такие вот грабли.
Как обходить? Предлагаю такой вариант:
Код:
unsigned short old_PORTB; // объявили переменную
old_PORTB=0xff; // присвоили переменной нужное значение
TRISB=0; // настроили на вывод
PORTB=old_PORTB; // вывели в порт переменную
old_PORTB.F0=0; // изменили бит в переменной
PORTB=old_PORTB; // вывели в порт измененное значение
Теперь про LAT. Дабы работать с портами как с полноценными регистрами (я так думаю) разработчики пошли дальше и в PIC18 ввели в порты еще один регистр LAT, который используется только на вывод и никогда на вход. Теперь записывать в порт можно так LATB=0xff или PORTB=0xff (для сохранения переносимости с PIC16 на PIC18). Чтение LATB приведет к чтению именно этого регистра, а не состояния выводов. А вот чтение PORTB приведет именно к чтению состояния на выводах. Вот такие дела. Конец рассказа.
[Ответ]
petrd 08:13 01.04.2009
Еще один примерчик на светодиодах, к предыдущей схеме добавилась кнопка и резистор. Теперь в основном цикле ждем нажатия кнопки, и если она будет нажата, то будет загораться или гаснуть светодиод HL5, а в прерывании теперь будут моргать 4 светодиода ( HL1-HL4), только побыстрей.
Для обработки нажатия использовал встроенную в MikroC процедуру Button(). В железе проверено.
Код:
unsigned short counter, oldstate, step;
void interrupt(){ // подпрограмма обработки прерывания
if(INTCON.T0IF){
counter++;
if (counter>1){
PORTB=~PORTB&0x0f|step;
counter=0;
}
INTCON.T0IF=0;
}
}// interrupt
void Init(){ // подпрограмма начальной инициализации
CMCON=7; // все входы как цифровые, компараторы отключены
TRISA=0xff; // настроили выводы PORTA на вход
TRISB=0; // настроили выводы PORTB на вывод
OPTION_REG = 0x87; // настройка TMR0, прерывания будут каждые 66,304 ms
INTCON.T0IE=1; // разрешили прерывания по переполнению TMR0
INTCON.GIE=1; // разрешили все прерывания
step=0;
oldstate=0;
}// Init
void main(){
Init();
while(1){ // организовали вечный цикл
if (Button(&PORTA, 0, 1, 0))
oldstate = 1;
if (oldstate && Button(&PORTA, 0, 1, 1)){ // ждем отпускания кнопки (переход от 0 к 1)
step=~step&0x80;
PORTB|=step;
oldstate = 0;
}
}
}//~
Планирую еще примеры по работе с модулем ШИМ, по работе с ЖКИ и термометром DS18B20. Жалко, что в PIC16F628A нет АЦП.
Если будут пожелания, то можно еще что-нибудь запустить.
Изображения
И все же. PiC vs AVR? Не подскажите, где именно о сравнении почитать. Нашел тока обзоры. Может форум какой. Что проще в освоении? Что более перспективно?
[Ответ]
petrd 10:13 01.04.2009
Сообщение от Unnamed:
PiC vs AVR?
Точного ответа на этот вопрос никто не даст. Это из разряда религиозных войн. А их лучше не начинать. С чего начинать все равно, сравнение придет со временем.
Еще примерчик с ШИМ. Понятное дело, что яркость светодиода напряжением сильно не нарегулируешь. А вот при помощи ШИМ можно, а человеческий глаз свое дело сделает. Кнопкой на RA0 яркость светодиода можно увеличивать, а кнопкой на RA1 - уменьшать. Все достаточно просто. Схема ниже.
Код:
unsigned short j, old_j;
void Init() {
CMCON=7; // все входы цифровые, компараторы отключены
PORTB = 0; // установили PORTB в 0
TRISB = 0; // настроили PORTB на выход
PORTA = 0xff; // установили PORTA в 1
TRISA = 0xff; // настроили PORTA на вход
Pwm_Init(5000); // настроили ШИМ модуль, период ШИМ - 5 кГц
}//
void main() {
Init();
j = 80; // начальная инициализация j
old_j = 0; // начальная инициализация old_j
Pwm_Start(); // запуск ШИМ
while (1) { // устроили бесконечный цикл
if (Button(&PORTA, 0,1,0)) // нажимаем кнопку на RA0
j+=10 ; // увеличивается j (яркость больше)
if (Button(&PORTA, 1,1,0)) // нажимаем кнопку на RA1
j-=10 ; // уменьшается j (яркость меньше)
if (old_j != j) { // если было изменение j
Pwm_Change_Duty(j); // то изменяем параметры ШИМ
old_j = j; // и сохраняем новое значение
}
Delay_ms(200); // задержка 200 мсек
}
}//~
Пример, как в MikroC можно работать с ЖКИ со встроенными контроллерами типа KS0066, HD44780. Инициализация ЖКИ на ассемблере обычно у начинающих вызывает затруднения. MikroC позволяет работать с 1, 2, 4-х строчными индикаторами. Здесь вся инициализация спрятана в процедуру Lcd_Config(), надо только правильно назначить порт и выводы контроллера и собственно все.
Код:
char *text = "mikroElektronika";
void main() {
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // настройка подключения LCD
LCD_Cmd(LCD_CLEAR); // Очистить дисплей
LCD_Cmd(LCD_CURSOR_OFF); // Кусор выключен
LCD_Out(1,1, text); // Вывести в первую строку слово "mikroElektronika"
Delay_ms(1000); // задержка в 1 сек
LCD_Out(2,6,"mikroE"); // Вывести во вторую строку, начиная с 6-й позиции слово "mikroE"
}
Библиотека LCD в MikroC PRO в части инициализации и предопределенных констант немного изменилась, поэтому для PRO это выглядит так:
Код:
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char *text = "mikroElektronika";
void main() {
LCD_Cmd(_LCD_CLEAR); // Очистить дисплей
LCD_Cmd(_LCD_CURSOR_OFF); // Кусор выключен
LCD_Out(1,1, text); // Вывести в первую строку слово "mikroElektronika"
Delay_ms(1000); // задержка в 1 сек
LCD_Out(2,6,"mikroE"); // Вывести во вторую строку, начиная с 6-й позиции слово "mikroE"
}
Схема ниже, вопросы задаем, обсуждаем.
Изображения
А вот и термометр. В качестве датчика использован цифровой датчик температуры DS18B20, выдающий данные по шине 1-Wire. Температура измеряется с шагом 0,0625 градуса, точность измерения составляет +0,5 градуса. В программе использована встроенная в MikroC библиотека для работы с устройствами по шине 1-Wire. Вывод на отображение температуры два раза в секунду.
Код:
const unsigned short TEMP_RESOLUTION = 12;
char *text = "000.0000";
unsigned temp;
void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;
// преобразование отрицательной температуры
if (temp2write & 0x8000) {
text[0] = '-';
temp2write = ~temp2write + 1;
}
// извлечение целой части
temp_whole = temp2write >> RES_SHIFT ;
// преобразование целой части температуры в символы
text[0] = temp_whole/100 + 48;
text[1] = (temp_whole/10)%10 + 48; // извлечение десятков
text[2] = temp_whole%10 + 48; // извлечение единиц
// извлечение и преобразование дробной части
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;
// преобразование дробной части в символы
text[4] = temp_fraction/1000 + 48;
text[5] = (temp_fraction/100)%10 + 48;
text[6] = (temp_fraction/10)%10 + 48;
text[7] = temp_fraction%10 + 48;
// вывод температуры на ЖКИ
Lcd_Out(2, 5, text);
}//~
void main() {
CMCON = 7; // Все входы цифровые
TRISA=0xff;
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // назначение выводов ЖКИ - PIC
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1, 1, " Temperature: ");
// вывод символа точки и "С" как единицы измерения
Lcd_Chr(2,13,223);
Lcd_Chr(2,14,'C');
//--- главный цикл
do {
//--- чтение температуры из DS18B20
Ow_Reset(&PORTA,2); // сигнал сброса
Ow_Write(&PORTA,2,0xCC); // команда SKIP_ROM
Ow_Write(&PORTA,2,0x44); // команда CONVERT_T
Delay_us(120);
Ow_Reset(&PORTA,2);
Ow_Write(&PORTA,2,0xCC); // команда SKIP_ROM
Ow_Write(&PORTA,2,0xBE); // команда READ_SCRATCHPAD
temp = Ow_Read(&PORTA,2);
temp = (Ow_Read(&PORTA,2) << 8) + temp;
//--- форматирование и вывод температуры
Display_Temperature(temp);
Delay_ms(500);
} while (1);
}
Может кто-нибудь что-нибудь скажет. А то в одно лицо как-то скучно.
[Ответ]
dr.ON 10:43 04.04.2009
Сообщение от petrd:
Может кто-нибудь что-нибудь скажет. А то в одно лицо как-то скучно.
Начинание конечно хорошее, но чем оно отличается от любого самоучителя в нете???
Так ребятки нажмите кнопочку ПУСК ... опа появилась менюшка.
Все видите? Ай да молодцы!
Теперь нажмите Программы, далее Microcoft Word, в результате чего у нас появилось окошечко Ворда.
Теперь закроем его, нажав на кнопочку крестик в вверхнем правом углу.
Все нажали??? Ай да молодцы!
Поздравляю теперь Вы дипломированные программисты. Дипломы заберете на выходе.
З.Ы. Учится нада с основ( цифровая схемотехника( логика), покодить на компе, а уж потом на мелкашки переходить). А иначе дальше "кнопки ПУСК" никак.
[Ответ]
romchik77 11:51 04.04.2009
Сообщение от petrd:
Может кто-нибудь что-нибудь скажет. А то в одно лицо как-то скучно.
тему поддерживаю. Конечно нужно начинать с основ и даже я не успеваю за petrd, я даже еще не прикупил PICkit2, но спасибо за http://kazus.ru/url.php?url=http://mkpochtoi.narod.ru/ письмо написал, но есть сомнения на счет гарантий сделки... Ну эт ладно, теперь по теме: есть задумка собрать терморегулятор в диаппазоне где-то 60 град до 110 и наверно на МК... Так что, вопросы будут, но позже и надеюсь на помощь как автора так и остальных форумцев. Спасибо. [Ответ]
XPEH_BAM 12:29 04.04.2009
dr.ON, ну вот я, например, в зилогах ничего не понимаю(ну. тоесть теорию знаю - но практически работал с другими контроллерам) - так что мне это интересно. Думаю, я не один.
[Ответ]
petrd 13:13 04.04.2009
Сообщение от dr.ON:
Начинание конечно хорошее, но чем оно отличается от любого самоучителя в нете??? Так ребятки нажмите кнопочку ПУСК ... опа появилась менюшка.
Все видите? Ай да молодцы!
Теперь нажмите Программы, далее Microcoft Word, в результате чего у нас появилось окошечко Ворда.
Теперь закроем его, нажав на кнопочку крестик в вверхнем правом углу.
Все нажали??? Ай да молодцы!
Поздравляю теперь Вы дипломированные программисты. Дипломы заберете на выходе.
З.Ы. Учится нада с основ( цифровая схемотехника( логика), покодить на компе, а уж потом на мелкашки переходить). А иначе дальше "кнопки ПУСК" никак.
Я с Вами согласен.НО...
1. Я хотел показать, что путь от "ХОЧУ, НО НЕЗНАЮ С ЧЕГО НАЧТЬ" до "И ПРАВДА РАБОТАЕТ" при наличии подсказок очень быстрый.
2. Отличие от учебников в нете - учебника по MikroC в нете не видел, хотя в нем самом HELP как учебник (большинство учебников идет по академическому пути - обычно долго и на ассемблере), я готов ответить на возникающие вопросы по языку и контроллеру в кратчайшее время. А главное отличие - мои посты не учебник, а Quick Start. Быстро стартанул - понравилось, буду разбираться дальше, не понравилось - выбросил и забыл.
3. Про тупое нажатие кнопок. 1-3 раз тупое, 4-10 раз обдуманно. 11-й и дальше на автомате, сосредоточившись на написании программы.
4. Кто пришел к микроконтроллерам сам (а не после пинка преподавателей ВУЗа), те знают, что такое цифровая техника и объяснять им это не надо.
5. Программировать начинать обязательно на ПК? Почему? Пусть это будет С++, так его основа это Си, а MikroC основан как раз на ANSI Си (стандарт языка Си). Начав программирование на языке ООП с нуля сразу сталкиваешся с трудностью понимания объектов, классов. А в классическом Си этого всего нет, а для МК и не надо. Так что сначала Си, а потом С++ и т.д. От простого к сложному.
[Ответ]
XPEH_BAM 20:05 04.04.2009
Сообщение от petrd:
От простого к сложному.
Тогда уж с машинных кодов начинать. Или асм.
[Ответ]
petrd 21:28 04.04.2009
Сообщение от XPEH_BAM:
Тогда уж с машинных кодов начинать. Или асм.
Буратино тоже можно ножиком выстругать, а можно лобзиком выпилить и не париться. Абсолютно ничего не имею против ассемблера, но два последних примера, что я приводил, написанные на ассемблере, могут напугать начинающего до заикания. А писать в машинных кодах в наши дни - это, по-моему, лучшее средство для самоистязания. Если есть инструмент, то уровень ПРОСТОГО переходит на качественно новый и более высокий уровень. Или не так?
[Ответ]
XPEH_BAM 22:45 04.04.2009
Сообщение от petrd:
Если есть инструмент, то уровень ПРОСТОГО переходит на качественно новый и более высокий уровень. Или не так?
Для моих, например, целей(я пишу для ПЛК) - не так. Функции-процедуры - на "ассемблере", обрабортчики прерываний, событий и исполняемые с определённой периодичностью блоки программы - на языках высокого уровня, более крупные блоки - на графических яхыках, скрипты для системы визуализации - ANSI C, Visual Basic(ненавижу это язык - но некоторые служебные библотеки есть только для него).
Думаю, функцию, которая из полученных с датчика по SSI интерфесу 32 бит "выдерет" 25 бит кода, "расчленит" его на количество оборотов и текущую позицию, а так же умножит на постоянный коэффициент для получения миллиметров - лучше писать на ассемблероподобном языке(опять же - в моём случае её на чём-то другом не напишешь). А вот вызов таких функций для пары датчиков раз в 100 мс, вычисление перекоса и позиций - уже на чём-то си- либо паскале-подобном.
P.S. Всё упрощено, кто разбирается в симатиках - не придирайтесь
P.P.S. Продолжайте про микроконтроллеры - интересно ведь!
[Ответ]
dr.ON 23:03 04.04.2009
Сообщение от petrd:
А главное отличие - мои посты не учебник, а Quick Start. Быстро стартанул - понравилось,..
Ктож потом полезет в "какашках" то ковыряться?
Стоит ли начинать свою "жизнь" со "сказок", ведь потом придется достаточно круто обламываться ???
P.S.XPEH_BAM, Не пора ли тему почистить от всяких рассуждений и чьих то личных достижений
Сообщение от XPEH_BAM:
P.S. Всё упрощено, ...... - не придирайтесь
Эт как это без "попинать" немнога ?!?!?! Традиции нарушать нельзя[Ответ]
petrd 09:21 05.04.2009
Сообщение от dr.ON:
Стоит ли начинать свою "жизнь" со "сказок", ведь потом придется достаточно круто обламываться ???
Ну и где хоть в одном моем примере сказка? А обламываться придется только понимая, что знаний для решения конкретной задачи не хватает или ресурсов выбранного контроллера.
[Ответ]
romchik77 13:33 05.04.2009
petrd, вот кое-что на работе нашел из программаторов ChipProg2 фирмы "Фитон"
Вместо PICkit2 он сойдет? и в чем отличия меж ними?
[Ответ]
petrd 17:06 05.04.2009
Сообщение от romchik77: petrd, вот кое-что на работе нашел из программаторов ChipProg2 фирмы "Фитон"
Вместо PICkit2 он сойдет? и в чем отличия меж ними?
Конечно сойдет. ChipProg2 - чистый универсальный программатор, без возможности отладки. Но и PICKit2 из среды MikroC тоже не умеет отлаживать, так что для нашего случая преимуществ никаких не дает ни тот ни другой. Так что можно уже и железо щупать, если PIC какой-нибудь есть.
[Ответ]