Pic Basic pro для начинающих
|
|
Python |
Дата: Пт, 12.02.2010, 19:48 | Сообщение # 106 |
Группа:
Пользователи
Ранг:
Пытаюсь разобраться
Сообщений:
45
Замечания:
±
На сайте с 11.02.2010
Статус:
Offline
|
Огромное спасибо, просто только перешел с ассемблера, как-то в диковинку все. По поводу Или я чего-то непонимаю или доступ есть только к некоторым даташитам... Подскажите как работать с EEPROM? Вставлять асм-код или есть операторы? Заранее спасибо за понимание
|
|
|
|
terrarus |
Дата: Пт, 12.02.2010, 20:10 | Сообщение # 107 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Посмотри в прикреплении. Прикрепления: LCD_162_.pdf Ну уж яснее и проще не бывает
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 12.02.2010, 20:11
|
|
|
|
holyuser |
Дата: Пт, 12.02.2010, 20:56 | Сообщение # 108 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Quote (Python) Подскажите как работать с EEPROM? Вставлять асм-код или есть операторы? Есть операторы, посмотри: DATA READ WRITE
|
|
|
|
Python |
Дата: Вс, 14.02.2010, 10:17 | Сообщение # 109 |
Группа:
Пользователи
Ранг:
Пытаюсь разобраться
Сообщений:
45
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 12.05.2009
Статус:
Offline
|
Quote (Python) да и извращение это если есть USART Эт точно, даже не могу представить, чего нужно передавать, чтобы не хватило USART HSerout - передача, HSerin - прием. Hserin в основном цикле программы, с Timeout несколько десятков или сотен мс, т.е. проц, когда ничем не занимается, слушает USART
|
|
|
|
Python |
Дата: Вс, 14.02.2010, 22:11 | Сообщение # 111 |
Группа:
Пользователи
Ранг:
Пытаюсь разобраться
Сообщений:
45
Замечания:
±
На сайте с 11.02.2010
Статус:
Offline
|
Цель: Существуют два контроллера один - пульт (ведущий), другой - исполнитель (ведомый) Первый отвечает за подсчет импульсов с энкодера (RB7), отображение, корректировку и храненние информации. Второй принимает данные от первого и на их основе управляет 6-ю приводами через частотники (инверторы), а также опрашивает датчики на предмет аварии. В случае аварии ведомый передает ведущему сигнал "АВАРИЯ" (RB6=1), ведущий в свою очередь переключается на прием данных и получает от ведомого информацию о характере аварии. Вот собственно и все... Ну покрайней мере пока энкодер не привезли. Судя по тому как порвали ЖКИ и EEPROM это неочень сложно... И чего я голову себе морочил с ассемблером?... Как ведомый сможет понять что ему нужно принимать информацию? что почитать можно? или может есть какой либо пример?
Сообщение отредактировал
Python - Вс, 14.02.2010, 22:15
|
|
|
|
Dmitry |
Дата: Пн, 15.02.2010, 00:15 | Сообщение # 112 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
157
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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? Сушествуют некоторые проблемы с английским В даташите на 628-й RB0-INT прерывание RB1-RX прием RB2-TX передача, если я правильно понял. Это жесткие ограничения?
Сообщение отредактировал
Python - Вт, 16.02.2010, 00:06
|
|
|
|
pic_anton |
Дата: Пт, 19.02.2010, 12:40 | Сообщение # 114 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
58
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Попробуйте так: Code pause 1000 : lcdout $FE,1,"12345678"
|
|
|
|
terrarus |
Дата: Пт, 19.02.2010, 14:50 | Сообщение # 116 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 18.02.2010
Статус:
Offline
|
Теперь понятно что в коде пролем нет, есть другой вопрос при включении горит весь верхний ряд ЛСД черными квадратами что это может быть?
Век живи, Век учись, и всего не постичь!!!
|
|
|
|
terrarus |
Дата: Пт, 19.02.2010, 16:48 | Сообщение # 120 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Quote (pic_anton) горит весь верхний ряд ЛСД черными квадратами что это может быть? Было точно такое дело оказался неисправным LCD. Но в вашем случе может быть или обрыв или КЗ на плате. А вот если черными квадратами отображаются все ряды то скорее всего нужно изменить параметры сопротивленичя в цепи регулирующей контрастность изображения. Обычно я ставлю с 3 вывода (V0 - Contrast Adjstment) на землю. сопротивление от 1К до 5,1 К.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|