Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Pic Basic pro для начинающих
Python Дата: Пт, 12.02.2010, 19:48  |                                                                                                                Сообщение # 106
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

Огромное спасибо, просто только перешел с ассемблера, как-то в диковинку все.
По поводу
Quote (terrarus)
Посетите ресурс http://terrarus.ucoz.ru/proton_plus_ide/index.html, там Вы найдете ответ на этот вопрос. Успехов!

Или я чего-то непонимаю или доступ есть только к некоторым даташитам...
Подскажите как работать с EEPROM? Вставлять асм-код или есть операторы?
Заранее спасибо за понимание
terrarus Дата: Пт, 12.02.2010, 20:10  |                                                                                                                Сообщение # 107
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Посмотри в прикреплении.
Прикрепления: LCD_162_.pdf

Ну уж яснее и проще не бывает


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 12.02.2010, 20:11
holyuser Дата: Пт, 12.02.2010, 20:56  |                                                                                                                Сообщение # 108
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Quote (Python)
Подскажите как работать с EEPROM? Вставлять асм-код или есть операторы?

Есть операторы, посмотри:

DATA
READ
WRITE

Python Дата: Вс, 14.02.2010, 10:17  |                                                                                                                Сообщение # 109
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

Люди вы реально помогли я начал быстрее ваять программу.
Вот только не нашел я функции для вывода символа в определенном знакоместе ЖКИ не затирая содержимое строк.
Пытался с помощью LCDOUT $FE, $14, но как то некорректно работает, просто курсор показывает в этом знакоместе, а вывод начинает с начала строки.

Добавлено (13.02.2010, 19.48.37)
---------------------------------------------
Блин люди простите засранца...
не заглянул сразу в pdf? там проще пареной репы? спасибо!

Добавлено (14.02.2010, 10.17.15)
---------------------------------------------
C индикацией разобрался, еще раз спасибо за помощь, оперативно.
Теперь уперся в проблему передачи данных от одного контроллера к другому.
Оба камня 628-е, может кто сталкивался? Хотел организовать 4-х разрядную шину, но нехватает одной линии, да и извращение это если есть USART. Вот только как это организовать в Бейсике незнаю, по поиску нашел только обмен с компом и вот эту http://www.picbasic.ru/forum/5-164-1 ссылочку, но там вообще ничего непонятно...

Сообщение отредактировал Python - Вс, 14.02.2010, 10:18
Dmitry Дата: Вс, 14.02.2010, 21:42  |                                                                                                                Сообщение # 110
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (Python)
да и извращение это если есть USART

Эт точно, даже не могу представить, чего нужно передавать, чтобы не хватило USART

HSerout - передача, HSerin - прием.
Hserin в основном цикле программы, с Timeout несколько десятков или сотен мс, т.е. проц, когда ничем не занимается, слушает USART

Python Дата: Вс, 14.02.2010, 22:11  |                                                                                                                Сообщение # 111
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

Цель:

Существуют два контроллера один - пульт (ведущий), другой - исполнитель (ведомый)

Первый отвечает за подсчет импульсов с энкодера (RB7), отображение, корректировку и храненние информации.
Второй принимает данные от первого и на их основе управляет 6-ю приводами через частотники (инверторы), а также опрашивает датчики на предмет аварии.
В случае аварии ведомый передает ведущему сигнал "АВАРИЯ" (RB6=1), ведущий в свою очередь переключается на прием данных и получает от ведомого информацию о характере аварии. Вот собственно и все... Ну покрайней мере пока энкодер не привезли.

Судя по тому как порвали ЖКИ и EEPROM это неочень сложно...
И чего я голову себе морочил с ассемблером?...

Как ведомый сможет понять что ему нужно принимать информацию? что почитать можно? или может есть какой либо пример?

Сообщение отредактировал Python - Вс, 14.02.2010, 22:15
ЯНДЕКС Дата: 14.02.2010
Dmitry Дата: Пн, 15.02.2010, 00:15  |                                                                                                                Сообщение # 112
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (Python)
Как ведомый сможет понять что ему нужно принимать информацию?

По правильному ему не нужно понимать. Приемом USART занимается. Байт принялся, USART сгенерировал прерывание, обработчик прерывания проанализировал байт, сделал, что надо (то ли ждать следующего, то ли выполнять команду и т.п.)
Если с прерываниями заморачиваться лень или пока сложно, то можно сделать проще.
Если программа большую часть времени крутится в цикле в ожидании каких-либо событий,
то в этом же цикле добавить:

HSerin 100, next_label, [byte1, byte2, ...]

Прога будет останавливаться на 100 мс и ждать байты с USART, если за 100 мс ничего не принялось,
то переход на next_label, если принялось, то принятое запишется в byte1, byte2 ... и проц перейдет к следующей
команде, где эти байты можно анализировать.
В хелпе написано, как пользоваться hserin, hserout и какие define надо указать в начале программы
(параметры USART-соединения)

Сообщение отредактировал Dmitry - Пн, 15.02.2010, 00:18
Python Дата: Пн, 15.02.2010, 23:57  |                                                                                                                Сообщение # 113
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 45
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

Огромное спасибо за участие.

Думаю прерывания пока ненужны.
Программа все время вертится в цикле, без принудительных задержек, т.е. время уходит только на выполнение команд и подсчет импульсов энкодера.
Возможна ли такая конструкция?

chr_in var byte
chr_out var byte

metka:

HSerin 100, compare_, chr_in
if chr_in=%00011101 then gosub transmit_
goto metka

transmit_:
???????????? 'с передачей пока проблема, что то не совсем понятно как это организовать
return

а можно ли использовать произвольные выводы портов? у меня остались RA0,RA1,RA6,RA7

Quote (Dmitry)
В хелпе написано, как пользоваться hserin, hserout и какие define надо указать в начале программы (параметры USART-соединения)

Имеется ввиду хелп PicBasic-a? Сушествуют некоторые проблемы с английским sad

В даташите на 628-й RB0-INT прерывание RB1-RX прием RB2-TX передача, если я правильно понял.
Это жесткие ограничения?

Сообщение отредактировал Python - Вт, 16.02.2010, 00:06
pic_anton Дата: Пт, 19.02.2010, 12:40  |                                                                                                                Сообщение # 114
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 58
Репутация: 0   ±
Замечания:   ±
На сайте с 18.02.2010

Статус: Offline

ребята помогите разобраться с ЛСД

камень у меня 16ф877а кварц 20, LCD ts1620a-17

ниже прога
@ device HS_osc,wdt_off, wrt_off, lvp_off, pwrt_on, protect_off


DEFINE LCD_TYPE ALPHA
DEFINE LCD_DPORT PORTD
DEFINE LCD_DBIT 0
DEFINE LCD_EPORT PORTC
DEFINE LCD_EBIT 0
DEFINE LCD_RSPORT PORTC ;
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 8
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
DEFINE LCD_LINES 2

trisd=0
trisc=0

lcdout "12345678"
MainProgram:

portc.7=1
pause 1000
portc.7=0
pause 1000



Goto MainProgram

светодиод для того чтоб знать что камень работает а вот LCD не хочет


Век живи, Век учись, и всего не постичь!!!
holyuser Дата: Пт, 19.02.2010, 13:59  |                                                                                                                Сообщение # 115
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Попробуйте так:
Code
pause 1000 : lcdout $FE,1,"12345678"
terrarus Дата: Пт, 19.02.2010, 14:50  |                                                                                                                Сообщение # 116
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Я давно не использую PicBasicPro и на моем компе нет этого софта поэтому Вашу прогу проверял и компилировал в Протоне. Поэтому в начале пришлось добавить две строки
Device 16F877
Xtal = 4
в остальном весь код без всяких изменений годится для компиляции и в протоне.

Device 16F877
Xtal = 4
'@ Device HS_osc, wdt_off', wrt_off', lvp_off, pwrt_on, protect_off ' Кажется в этой строке есть ошибки.

DEFINE LCD_Type ALPHA
DEFINE LCD_DREG PORTD ' Лучше так
DEFINE LCD_DBIT 0
DEFINE LCD_EREG PORTC ' Лучше так
DEFINE LCD_EBIT 0
DEFINE LCD_RSREG PORTC ' Лучше так
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 8
DEFINE LCD_CommandUs 2000
DEFINE LCD_DataUs 50
DEFINE LCD_Lines 2

TRISD=%00000000 ' Лучше так
TRISC=%00000000 ' Лучше так

LCDout $fe, 1 ' Очистить экран ' Лучше так
LCDout $fe, 2, "12345678" ' Поместить курсор в начало первой строки и напечатать 12345678 ' Лучше так

MainProgram:

PORTC.7 = 1
pause 1000
PORTC.7 = 0
pause 1000

GoTo MainProgram

В Протоне это работает. Должно компилиться и в PIcBasicPro


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пт, 19.02.2010, 15:08
terrarus Дата: Пт, 19.02.2010, 15:22  |                                                                                                                Сообщение # 117
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (Python)
а можно ли использовать произвольные выводы портов? у меня остались RA0,RA1,RA6,RA7

Если вы используете команды HSERIN и HSEROUT то в PicBasicPro переназначить выводы нельзя, а если использовать команды SERIN, SEROUT, SERIN2, SEROUT2 которые программным способом воспроизводят работу интерфейса RS232 то можно определить для них любые выводы.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
holyuser Дата: Пт, 19.02.2010, 15:23  |                                                                                                                Сообщение # 118
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Quote (terrarus)
DEFINE LCD_DREG PORTD ' Здесь была ошибка LCD_DPORT
DEFINE LCD_DBIT 0
DEFINE LCD_EREG PORTC ' Здесь была ошибка LCD_DPORT
DEFINE LCD_EBIT 0
DEFINE LCD_RSREG PORTC ' Здесь была ошибка LCD_RSPORT
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 8
DEFINE LCD_CommandUs 2000
DEFINE LCD_DataUs 50
DEFINE LCD_Lines 2

TRISD=%00000000 ' Здесь была ошибка - trisd=0
TRISC=%00000000 ' Здесь была ошибка - trisc=0

Вы, уважаемый, что-то перепутали PBP с протоном, как-раз здесь ошибок нет.
Eсли кварц на 20 МГц, то в начале надо добавить еще DEFINE OSC 20

pic_anton Дата: Пт, 19.02.2010, 16:05  |                                                                                                                Сообщение # 119
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 58
Репутация: 0   ±
Замечания:   ±
На сайте с 18.02.2010

Статус: Offline

Теперь понятно что в коде пролем нет, есть другой вопрос при включении горит весь верхний ряд ЛСД черными квадратами что это может быть?


Век живи, Век учись, и всего не постичь!!!
terrarus Дата: Пт, 19.02.2010, 16:48  |                                                                                                                Сообщение # 120
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (pic_anton)
горит весь верхний ряд ЛСД черными квадратами что это может быть?

Было точно такое дело оказался неисправным LCD. Но в вашем случе может быть или обрыв или КЗ на плате. А вот если черными квадратами отображаются все ряды то скорее всего нужно изменить параметры сопротивленичя в цепи регулирующей контрастность изображения. Обычно я ставлю с 3 вывода (V0 - Contrast Adjstment) на землю. сопротивление от 1К до 5,1 К.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Форум Picbasic.ru » Программирование МК » PicBasicPro » Pic Basic pro для начинающих (помощь в осваивании языка Pic Basic pro)
Поиск: