| 
 | 
 | 
| 
 | 
А в примерах, которые с компиляторами идут, ничего похожего не найдется? Хех, долго я ответ набирал    | 
  
 | 
| 
 | 
Splav56,   Ну дык как, заработало?  | 
  
 | 
| 
 | 
picmaniac: Ну дык как, заработало? Пока только в симуляторе.   Я написал программку вывода на него цифр от 1 до 0 (1-9,0), правда пока не разбирался с временными параметрами. программатор на работе, контроллеры тоже, железо немного не доделано. Поэтому завтра буду дальше отлаживать. А пока этот кусок такой:
   Dim	i	As	Byte Dim a As Byte  'eeprom address Dim b As Byte  'eeprom data AllDigital	'все выводы как цифровые TRISA	 = 	00h PORTA.1	 = 	01h PORTA.2	 = 	01hb = 01h  'set the data value to be written For a = 0 To	9  'go through whole eeprom memory Write a, b  'perform the writing to eeprom b	 = b	 + 1  'increment b Next a WaitMs 	10 PORTA.2	 = 	00h loop: 	a	 = 	0 For 	i	 = 1 To 10 	Read	a, 	b 	PORTA.0	 = 	b.0 	PORTA.1	 = 	0 	WaitUs	1 	PORTA.1	 = 	1	' 	PORTA.0	 = 	b.1 	PORTA.1	 = 	0 	WaitUs	1 	PORTA.1	 = 	1	' 	PORTA.0	 = 	b.2 	PORTA.1	 = 	0 	WaitUs	1 	PORTA.1	 = 	1	 	PORTA.0	 = 	b.3 	PORTA.1	 = 	0 	WaitUs	1 	PORTA.1	 = 	1	 	WaitUs	5 	a	 = 	a	 + 	1 Next	i PORTA.0	 = 	0 WaitMs 	10 Goto loop End
  
  Прошу не ругаться, это проба пера.  
  | 
  
 | 
| 
 | 
На виртуальном осциллографе выглядит красиво. В железе-то как, заработало?  | 
  
 | 
| 
 | 
picmaniac: На виртуальном осциллографе выглядит красиво. В железе-то как, заработало? Забыл HEX дома.   И вообще мне надоела такая работа, пишешь дома, компилируешь, симулируешь   тоже, а программировать чип и проверять в железе на работе. Сплошной гемморой. Поэтому беру тайм-аут на подготовку на работе полноценного рабочего места, не зависящего от прихоти сисадмина, куда я смогу инсталлировать все проги, нужные мне для работы с м/к. Сегодня уже проапгрейдил процессор с 486SX до первого ПНЯ 75 МГц  , так ВИН 95-й просто стал летать!   Завтра заменю ХАРД на более быстрый, а то стоит 256 Мб тормоз. Ну и т.д. Место будет передвижное на колесиках. Сделаю покажу фото.   Да, пока апгредил пришла здравая мысль о том, что в Basic'e цикл не прокатит из-за временных соотношений, наверное надо делать ассемблерную вставку.
   | 
  
 | 
| 
 | 
 Временные соотношения можно посмотреть здесь: http://splav56.narod.ru/PIC/LCD.rar PS: Посмотрел по виртуальному осциллографу, все ОК, имею в виду алгоритм вывода.    | 
  
 | 
| 
 | 
Пробую переписать программу на mb и почему-то при отладке не проходит цикл записи в EEPROM. Вернее проходит один раз, а на втором проходе зависает:  b = 0x01   ' подготовка переменной к записи в EEPROM FOR a = 0 TO 9              ' Цикл записи переменной в память Eeprom_Write (a, b) b = b + 1 NEXT a
 
 Отладчик зависает на строке Eeprom_Write (a, b), а время выполнения переходит в миллисекунды и постоянно увеличивается, хотя первый цикл записи проходит за 44 микросекунды. Использована библиотечная функция:  sub procedure EepromabWrite             '  запись в EEPROM Eeprom_Write (a, b) end sub
 
 Описана на стр. 133 мануала. В чем тут трабла?  | 
  
 | 
| 
 | 
Трабла возможно в том, что библиотечная функция Eeprom_Write устанавливает после своей работы (при выходе) бит глобального разрешения прерываний INTCON,GIE (читаем об этом в мануале и хелпе). Посмотрите биты регистра INTCON в процессе симуляции. Следует либо предусмотреть обработчик прерываний - "заглушку" из одной команды INTCON = 0, либо замаскировать все прерывания соответствующими битами. Либо по крайней мере сбрасывать бит GIE после записи в EEPROM. А так происходит переход по адресу 4 (вектор прерываний), а что там находится - можно увидеть в ассемблерном файле, создаваемом при компиляции. "Заглушки"-то не предусмотрено. http://www.pic16.nm.ru/notes/eetest.zip - работоспособный пример. Проверено только в PIC Simulator IDE, в железе не пробовал.  | 
  
 | 
| 
 | 
Спасибо за подсказку, а я не мог понять, чегой-то он сигает на 0х04 и вертится там.   Про прерывания не допер. Завтра попробую. Только сейчас сообразил что можно из Хэлпа строки копировать в эл. переводчик, из ПДФа никак не скопировать. Так что переведу эту страницу.  | 
  
 | 
| 
 | 
Не помогло!  Все вроде правильно, а на втором проходе та же хе***!    Управление уходит на адрес 0х17 и циклится в пределах 0х15 - 0х22 Такое ощущение что компилируется не так как надо. Кстати по ссылке: http://www.pic16.nm.ru/notes/eetest.zip  та же фигня. Распечатка программы в прикрепленном файле. picmaniac, попробуйте запустить у себя эту прогу и сравнить ассемблерные листинги, если программа пройдет цикл записи в EEPROM. Заранее премного благодарен.   57669.doc  | 
  
 | 
 | 
 | 
 |