Делаю автономный программатор Пиков, тренируюсь на 16f684. (потому что его у меня как грязи). Сам программатор сделан на mega8L (вот такой вот я извращенец). Взял кусок из микрочиповского аппнота AN589 и исходники досовского программатора на страничке http://www.cqham.ru/fpic02.htm Н.Хлюпин (RA4NAL), ra4nalr@write.kirov.ru. Програмлю на CodeVision (если это важно). Проблема же в следующем: так как изначально программатор был на базе LPT порта, а он довольно медленно перебирает ножками код был такой:
Код: Выделить всё
for (i=200;i;i--) ; // delay between command & data
biosprint(0,2+8,PTR); // set bits 001010, clock hi; leading bit
biosprint(0, 8,PTR); // set bits 001000, clock low
Код: Выделить всё
delay_us(tdly2); // delay between command & data
biosprint(0,2+8,PTR); // set bits 001010, clock hi; leading bit
delay_us(tset1);
biosprint(0, 8,PTR); // set bits 001000, clock low
delay_us(thld1);
Код: Выделить всё
#define tset1 1000 //100 ns
#define thld1 1000
#define tdly1 2
#define tdly2 2
#define tprog1 6000
#define tera 6000
налицо нессответсвие: параметры tset1 и thld1 заявлены в 100 наносекнд, но когда я ставлю его в 1 микросекунду (что в 10 раз больше), я ничего не могу читать (и писать) из пика, работать с пиком я могу только если tset1 и thld1 1000 микросекунд (что в 10 000 раз больше даташитовского параметра). В результате пик пишется в течении полутора минут, как мне кажется это долго. Кто виноват? Почему микрочип заявляет одни данные, а в реальности все по другому? Или это я где-то протупил. И что делать? Кто-нибудь сталкивался с подобной проблемой и как решил?


