|
|
|
|
А в примерах, которые с компиляторами идут, ничего похожего не найдется? Хех, долго я ответ набирал  |
|
|
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 |
|
|
|
|