Перейти к содержанию
    

Господа, кто может переделать файл LCD.LIB из CodeVision AVR C v1.25.8? Дело в том, что по умолчанию используются пины 0,1,2,4,5,6 и 7(3 свободный). А мне в Меге8 нужен кварц - PINB6 и 7, и вход Таймера0 - PIND4. Можно ли поменять в LCD.LIB пины 3 и 4. А то я в ассемблере не силен.

В архиве LCD.LIB

LCD.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понятно - опишите подробнее задачу (где какие пины).

я менял в секции lcd.lib:

#asm

.equ __lcd_direction=__lcd_port-1

.equ __lcd_pin=__lcd_port-2

.equ __lcd_rs=3

.equ __lcd_rd=2

.equ __lcd_enable=1

.equ __lcd_busy_flag=7

#endasm

но с LCD Bolymin 2х20 не заработала эта библиотека (там задержки наверное больше) - сделал задачу в WinAVR, использовав стороннюю библиотеку (в приложении) все нормально работает. Если непонятно с русскими символами - расскажу как.

LCD_lib.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понятно - опишите подробнее задачу (где какие пины).

я менял в секции lcd.lib:

#asm

.equ __lcd_direction=__lcd_port-1

.equ __lcd_pin=__lcd_port-2

.equ __lcd_rs=3

.equ __lcd_rd=2

.equ __lcd_enable=1

.equ __lcd_busy_flag=7

#endasm

но с LCD Bolymin 2х20 не заработала эта библиотека (там задержки наверное больше) - сделал задачу в WinAVR, использовав стороннюю библиотеку (в приложении) все нормально работает. Если непонятно с русскими символами - расскажу как.

CodeVision предлагает такое подключение:

Port Bit 0 - RS

Port Bit 1 - RD

Port Bit 2 - EN

Port Bit 3 - Free

Port Bit 4 - Data4

Port Bit 5 - Data5

Port Bit 6 - Data6

Port Bit 7 - Data7

А хотелось бы: Port Bit 3 - Data4; Port Bit 4 - Free, чтобы задействовать вход Таймера0 - PIND4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Трудновато будет - библиотека использует 4 смежных старших бита DATA. Придется сильно лопатить библиотеку - лучше перенести на другой порт или поставить доп. микросхему типа CD4094 типа

http://www.caxapa.ru/sch/lcd3v.html. Наверное библиотеку придется написать самому. А может найдете универсальную (где любые пины).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Трудновато будет - библиотека использует 4 смежных старших бита DATA. Придется сильно лопатить библиотеку - лучше перенести на другой порт или поставить доп. микросхему типа CD4094 типа

http://www.caxapa.ru/sch/lcd3v.html. Наверное библиотеку придется написать самому. А может найдете универсальную (где любые пины).

Спасибо. Буду искать. А перенести на другой порт не получится. Можно только PortB и PortD, и на обоих нужные пины заняты.

А можно ли раскидать по разным портам? Вот так:

PortB Bit 0 - RS

PortB Bit 1 - RD

PortB Bit 2 - EN

PortB Bit 3 - Free

PortC Bit 0 - Data4

PortC Bit 1 - Data5

PortC Bit 2 - Data6

PortC Bit 3 - Data7

Или так:

PortB Bit 0 - RS

PortB Bit 1 - RD

PortB Bit 2 - EN

PortB Bit 3 - Free

PortD Bit 0 - Data4

PortD Bit 1 - Data5

PortD Bit 2 - Data6

PortD Bit 3 - Data7

Использовать младшие биты, но смежные. PortB и PortD можно поменять. Главное, что PortB6,7 и PortD4 свободны.

Изменено пользователем Barni

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы все-таки твердо намерены использовать библиотеку CV,вам надо перенести 4 разряда данных в младшую тетраду,а разряды управления переназначить на свободные разряды порта в старшей,поменять в нужных вам библиотечных функциях направления сдвига нибла и маску.

А вообще библиотечные фукции в CV,ммм,неадекватные.Ресурсы жрут безбожно,т.к сделаны универсальными без привязки к конкретным кристалам.Т.е нигде не используются прерывания,вся времянка формируется только аппаратно,в математике умножение софтовое,куча асмовских кусков

в общем-то даром не нужных и т.д.

ИМХО,все-таки лучше взять готовую адекватную либу и портировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да так можно сделать, но лопатить все равно придется (придется завести вторую переменную __lcd_port типа __lcd_port2)

и в основном файле Си написать что-то типа:

 

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

.equ __lcd_port2=0x18;PORTB

#endasm

 

#include "lcd.h"

 

дальше в lcd.lib править - если упр. сигналы - __lcd_port, дата - __lcd_port2

учесть что дата у вас младшие разряды

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, там (в штатной библиотеке CV) еще есть место где повиснуть может- программа ждет в бесконечном цикле ready от индикатора. это место я дорабатывал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну это один из милых приветов библиотек CV- завис контроллер LCD и повесил вусмерть контроллер,а на длинном шлейфе это бывает.не говоря о том,что это нафик не нужно и только безбожно тормозит программу. Организую вывод по таймеру и горя не знаю.

И зачем это надо,когда полно нормально написанных и выложенных в сеть исходников?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to oll

Спасибо, попробую разобраться.

to WHALE

А можно конкретные ссылки, а то я программист начинающий, и сразу понять что из ху трудно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вверху этого форума есть топик-архив исходников для AVR.Посмотрите-там для LCD HD47780 несколько

штук есть,выберите на свой вкус.Кажется,есть и непосредственно под CV.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вверху этого форума есть топик-архив исходников для AVR.Посмотрите-там для LCD HD47780 несколько

штук есть,выберите на свой вкус.Кажется,есть и непосредственно под CV.

Завтра(сегодня) буду изучать, а то уже пятый час :wacko:

Спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CV либы - отстой полный

свои руками написать быстрее, чем заставить их работать :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CV либы - отстой полный

свои руками написать быстрее, чем заставить их работать :(

 

Кстати, кто-нибудь разбирался с математическими функциями CV с точки зрения быстродействия?

Альтернативные функции работают быстрее?

Интересует тригонометрия:sin, cos, atan2 ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, кто-нибудь разбирался с математическими функциями CV с точки зрения быстродействия?

Альтернативные функции работают быстрее?

Интересует тригонометрия:sin, cos, atan2 ...

sin cos - не знаю

делал давненько терморегулятор с термопарой на М48 - код+2 полинома в IAR (не помню версию) не влез по объему в M48, тот же код CV легко разместил. Делал по тупому - возведение в степень заменил умножением. Это конечно не показатель - может сейчас IAR лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...