Свежие обсуждения
Микроконтроллеры

Еще раз про индикатор WM-1611-62C

1 2 4

А в примерах, которые с компиляторами идут, ничего похожего не найдется?

Хех, долго я ответ набирал

 

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 = 01h

b = 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