Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

AVR и экран MT10T7

Непрочитано 13.07.2010, 14:10  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Не работает, сам вот ковыряюсь, ничего не выходит...
Реклама:
Lockdog вне форума  
Непрочитано 14.07.2010, 15:25  
OneTech
Вид на жительство
 
Регистрация: 09.10.2009
Сообщений: 353
Сказал спасибо: 20
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
OneTech на пути к лучшему
По умолчанию AVR и экран MT10T7

Советую использовать TIC33 или TIC55 дисплеи фирмы Ampire, дешевле стоят, интерфейс последовательный я-ля SPI с Latch-ем, подсветку можно сотворить свою или купить готовую любых цветов хоть RGB, по толщине гораздо меньше (COG, чип на стекле), при программно организованном интерфейсе дисплей у меня работает вообще без задержек.
Миниатюры:
Нажмите на изображение для увеличения
Название: f_17852_368682_934413992_4.jpg
Просмотров: 158
Размер:	41.6 Кб
ID:	9811  
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
OneTech вне форума  
Непрочитано 15.07.2010, 19:42  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Lockdog, Ну как успехи?
harchenko_pavel вне форума  
Непрочитано 15.07.2010, 21:46  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Поправил код по даташиту
Код:
#include ‹ioavr.h›
#include ‹intrinsics.h›

//Макросы задержек в мкс, мс
#define XTAL_MHz 8.0
#define _delay_us(us) __delay_cycles((unsigned long int)us*XTAL_MHz)
#define _delay_ms(ms) _delay_us(ms*1000)

#define FALSE 0
#define TRUE  1

//Конфигурация выводов микроконтроллера
//Шина дреса/данных DB0
#define DDR_DB0   DDRD
#define PORT_DB0  PORTD
#define DB0       PD3
//Шина дреса/данных DB1
#define DDR_DB1   DDRD
#define PORT_DB1  PORTD
#define DB1       PD4
//Шина дреса/данных DB2
#define DDR_DB2   DDRD
#define PORT_DB2  PORTD
#define DB2       PD5
//Шина дреса/данных DB3
#define DDR_DB3   DDRD
#define PORT_DB3  PORTD
#define DB3       PD6
//Запись  вмодуль (активный уровень high)
#define DDR_WR1  DDRB
#define PORT_WR1 PORTB
#define WR1      PB0
//Выбор адрес (А0 low)/данные (A0 high)
#define DDR_A0   DDRB
#define PORT_A0  PORTB
#define A0       PB1
//Длительность сигнала записи/удержания
#define delay_mt _delay_us(10)

#define ClrBit(reg, bit) reg |= (1‹‹bit)
#define SetBit(reg, bit) reg &= (~(1‹‹bit))

#define DDR_MT_set  SetBit(DDR_DB0,DB0);\
                    SetBit(DDR_DB1,DB1);\
	            SetBit(DDR_DB2,DB2);\
	            SetBit(DDR_DB3,DB3);\
		    SetBit(DDR_WR1,WR1);\
		    SetBit(DDR_A0,A0)
					
#define DB_all_low  ClrBit(PORT_DB0,DB0);\
                    ClrBit(PORT_DB1,DB1);\
		    ClrBit(PORT_DB2,DB2);\
		    ClrBit(PORT_DB3,DB3)

#define DB_all_high SetBit(PORT_DB0,DB0);\
                    SetBit(PORT_DB1,DB1);\
		    SetBit(PORT_DB2,DB2);\
		    SetBit(PORT_DB3,DB3)			  

#define DB0_low     ClrBit(PORT_DB0,DB0)
#define DB0_high    SetBit(PORT_DB0,DB0)

#define DB1_low     ClrBit(PORT_DB1,DB1)
#define DB1_high    SetBit(PORT_DB1,DB1)

#define DB2_low     ClrBit(PORT_DB2,DB2)
#define DB2_high    SetBit(PORT_DB2,DB2)

#define DB3_low     ClrBit(PORT_DB3,DB3)
#define DB3_high    SetBit(PORT_DB3,DB3)

#define WR1_low     ClrBit(PORT_WR1,WR1)
#define WR1_high    SetBit(PORT_WR1,WR1)

#define A0_low      ClrBit(PORT_A0,A0)
#define A0_high     SetBit(PORT_A0,A0)


void mt_setp(char position);
void mt_init(void);
void mt_clear(void);               
void mt_putc(char c, char point);        

int main( void )
{
  char i;

  mt_init();

  for (i=0; i‹=9; i++) mt_putc(i,FALSE);
  
  while(1);
}

/*
        Инициализация (разблокировка дисплея)
*/ 
void mt_init()
{
    // разблокировка шины     
    DDR_MT_set;    //Настраиваем регистры DDR
    DB_all_high;   //Устанавливаем адрес 0Fh
    A0_low;        //Переключаемся в регистр адреса
    WR1_high;      //Начало записи
    delay_mt;      //Задержка сигнала записи - tWR
    WR1_low;       //Конец записи
    delay_mt;      //Задержка удержания - tHAD 
    A0_high;       //Переключаемся в регистр данных
    DB_all_low;    //Устанавливаем шину данных в LOW
    delay_mt;      //Задержка между записью - tHW
    DB0_high;      //Устанавливаем DB0=H
    WR1_high;      //Записываем DB0=H по адресу 0Fh
    delay_mt;      //Задержка сигнала записи - tWR   
    WR1_low;       //Конец записи
    delay_mt;      //Задержка удержания - tHAD
    DB_all_low;    //Устанавливаем шину данных в LOW
    mt_clear();    //Очистка индикатора
}         

/*
        очистка дисплея представляет из себя отключение всех сегментов индикатора
*/     
void mt_clear(void)
{        
    char i=0;

    DB_all_low;      //Устанавливаем адрес 00h
    A0_low;          //Переключаемся в регистр адреса
    WR1_high;        //Начало записи
    delay_mt;        //Задержка сигнала записи - tWR
    WR1_low;         //Конец записи
    delay_mt;        //Задержка удержания - tHAD
    A0_high;         //Переключаемся в регистр данных
    while (i++!=20)  //Очистка сегментов Sg1-Sg10
    {  
        delay_mt;    //Задержка между записью - tHW
	WR1_high;    //Записываем DB0(L),DB1(L),DB2(L),DB3(L) по адресу 00h - 09h
        delay_mt;    //Задержка сигнала записи - tWR   
	WR1_low;     //Конец записи
        delay_mt;    //Задержка удержания - tHAD
    }
    mt_setp(0x00);   //Устанавливаем адрес 00h
}

/*
        Установка позиции производится при установки 
        значения position: 0x00 - 0x09 
*/               
void mt_setp(char position)
{
    
    if (position&0x01) DB0_high; //Если бит 0001=H устанавливаем DB0=H
    else DB0_low;                //Иначе устанавливаем DB0=L
    if (position&0x02) DB1_high; //Если бит 0010=H устанавливаем DB1=H
    else DB1_low;                //Иначе устанавливаем DB1=L
    if (position&0x04) DB2_high; //Если бит 0100=H устанавливаем DB2=H
    else DB2_low;                //Иначе устанавливаем DB2=L
    if (position&0x08) DB3_high; //Если бит 1000=H устанавливаем DB3=H
    else DB3_low;                //Иначе устанавливаем DB3=L
    A0_low;                      //Переключаемся в регистр адреса
    WR1_high;                    //Начало записи
    delay_mt;                    //Задержка сигнала записи - tWR
    WR1_low;                     //Конец записи
    delay_mt;                    //Задержка удержания - tHAD 
    A0_high;                     //Переключаемся в регистр данных
    DB_all_low;                  //Устанавливаем шину данных в LOW
    delay_mt;                    //Задержка между записью - tHW
} 

/*
        Вывод одиночной цифры
        параметры: с     - цифра от 0 до 9
                   point - TRUE (отображать точку), FALSE (не отображать) 
*/
void mt_putc(char c, char point)
{ 
    char digits_l[]= {0xe,0x0,0xf,0xd,0x1,0xd,0xf,0x8,0xf,0xd};//младшая тетрада
    char digits_h[]= {0xe,0x6,0x2,0x6,0xe,0xc,0xc,0x6,0xe,0xe};//старшая тетрада
     
    //Устанавливаем на шине данных значение запиываемое в младшую тетраду
    DB_all_low;                     //Устанавливаем шину данных в LOW
    if (digits_l[c]&0x01) DB0_high; //Если бит 0001=H устанавливаем DB0=H
    else  DB0_low;                  //Иначе устанавливаем DB0=L
    if (digits_l[c]&0x02) DB1_high; //Если бит 0010=H устанавливаем DB1=H
    else  DB1_low;                  //Иначе устанавливаем DB1=L
    if (digits_l[c]&0x04) DB2_high; //Если бит 0100=H устанавливаем DB2=H
    else  DB2_low;                  //Иначе устанавливаем DB2=L
    if (digits_l[c]&0x08) DB3_high; //Если бит 1000=H устанавливаем DB3=H
    else  DB3_low;                  //Иначе устанавливаем DB3=L
    delay_mt;                       //Задержка между записью - tHW
    WR1_high;                       //Записываем в младшую тетраду значения DB0,DB1,DB2,DB3
    delay_mt;                       //Задержка сигнала записи - tWR   
    WR1_low;                        //Конец записи
    delay_mt;                       //Задержка удержания - tHAD
    DB_all_low;                     //Устанавливаем шину данных в LOW
    delay_mt;                       //Задержка между записью - tHW
	
    //Устанавливаем на шине данных значение запиываемое в старшую тетраду
    if (digits_h[c]&0x01) DB0_high; //Если бит 0001=H устанавливаем DB0=H
    else  DB0_low;                   //Иначе устанавливаем DB0=L
    if (digits_h[c]&0x02) DB1_high; //Если бит 0010=H устанавливаем DB1=H
    else  DB1_low;                  //Иначе устанавливаем DB1=L
    if (digits_h[c]&0x04) DB2_high; //Если бит 0100=H устанавливаем DB2=H
    else  DB2_low;                  //Иначе устанавливаем DB2=L
    if (point) DB3_high;            //Если point-TRUE устанавливаем DB3=H
    else  DB3_low;                  //Иначе устанавливаем DB3=L
    delay_mt;                       //Задержка между записью - tHW
    WR1_high;                       //Записываем в старшую тетраду значения DB0,DB1,DB2,DB3
    delay_mt;                       //Задержка сигнала записи - tWR   
    WR1_low;                        //Конец записи
    delay_mt;                       //Задержка удержания - tHAD
    DB_all_low;                     //Устанавливаем шину данных в LOW
    delay_mt;                       //Задержка между записью - tHW	
}
З.Ы. Нашел пару косяков

Последний раз редактировалось harchenko_pavel; 16.07.2010 в 00:31.
harchenko_pavel вне форума  
Сказали "Спасибо" harchenko_pavel
Lockdog (15.07.2010)
Непрочитано 15.07.2010, 23:01  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Пытаюсь скомпилировать и выдаёт ошибки:
Код:
Building configuration: lcd - Release 
Updating build tree... 
main.c  
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
Error[Pe101]: "DDRD" has already been declared in the current scope (at line 145 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\INC\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 43 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 43 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
Error[Pe101]: "DDRB" has already been declared in the current scope (at line 139 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\INC\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 45 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 45 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 49 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
Error[Pe101]: "PORTD" has already been declared in the current scope (at line 144 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
INC\iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 54 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 55 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 55 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 76 
Warning[Pe223]: function "mt_setp" declared implicitly C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 87 
Error[Pe159]: declaration is incompatible with previous "mt_setp" (declared at line 87) C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 147 
Error while running C/C++ Compiler 
 
Total number of errors: 16 
Total number of warnings: 4
Lockdog вне форума  
Непрочитано 15.07.2010, 23:18  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Сообщение от Lockdog Посмотреть сообщение
Пытаюсь скомпилировать и выдаёт ошибки:
Код:
Building configuration: lcd - Release 
Updating build tree... 
main.c  
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
Error[Pe101]: "DDRD" has already been declared in the current scope (at line 145 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\INC\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 42 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 43 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 43 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
Error[Pe101]: "DDRB" has already been declared in the current scope (at line 139 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\INC\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 44 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 45 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 45 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 49 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
Error[Pe101]: "PORTD" has already been declared in the current scope (at line 144 of "G:\Development\IAR Systems\Embedded Workbench 5.4\avr\ C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
INC\iotiny2313.h") 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 50 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 54 
Error[Pe077]: this declaration has no storage class or type specifier C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 55 
Error[Pe065]: expected a ";" C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 55 
Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 76 
Warning[Pe223]: function "mt_setp" declared implicitly C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 87 
Error[Pe159]: declaration is incompatible with previous "mt_setp" (declared at line 87) C:\Users\Lockdog\Desktop\StepMotor\LCD\main.c 147 
Error while running C/C++ Compiler 
 
Total number of errors: 16 
Total number of warnings: 4
Только что скомпилил матюкнулся тока на FALSE, добавил:
#define FALSE 0
#define TRUE 1

Получил на выходе:
Building configuration: mt10t7 - Debug
Updating build tree...
main.c
Linking
Total number of errors: 0
Total number of warnings: 0


Приложил main.c который компилил в IAR C/C++ Compiler for AVR
5.50.0 (5.50.0.50277)
Миниатюры:
Нажмите на изображение для увеличения
Название: screen.jpg
Просмотров: 72
Размер:	152.0 Кб
ID:	9870  
Вложения:
Тип файла: rar main.rar (1.6 Кб, 50 просмотров)

Последний раз редактировалось harchenko_pavel; 16.07.2010 в 00:34.
harchenko_pavel вне форума  
Сказали "Спасибо" harchenko_pavel
Lockdog (16.07.2010)
Непрочитано 16.07.2010, 00:06  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Не компилировалось, видимо из-за того что слэши в define не везде стояли, сейчас всё скомпилилось, но на экран выводятся только цифры "5" с точками... я в отчаянии, пины прозванивал - всё подключено правильно, ничего не коротит
Ещё раз, большое спасибо за исходник.
Lockdog вне форума  
Непрочитано 16.07.2010, 00:16  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Lockdog, В исходнике было несколько ошибок в макросах, сейчас поправил.
Если не поможет - попробуй увеличить задержку как в оригинале до 40мкс

Последний раз редактировалось harchenko_pavel; 16.07.2010 в 00:33.
harchenko_pavel вне форума  
Непрочитано 16.07.2010, 00:27  
SHIM1
Временная регистрация
 
Аватар для SHIM1
 
Регистрация: 19.04.2010
Сообщений: 90
Сказал спасибо: 29
Сказали Спасибо 83 раз(а) в 37 сообщении(ях)
SHIM1 на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Сообщение от OneTech Посмотреть сообщение
Советую использовать TIC33 или TIC55 дисплеи фирмы Ampire...
Если можно, то чуть подробнее о документации. Хотя по моим понятиям, дешевле и проще MT10T7 ничего быть не может. В свое время их (MT10T7) активно юзал. Не помню, правда, чтобы были километры строк программы, а помню, что все работало сразу и безоговорочно, ведь в даташите разжевано буквально все. Главный недостаток MT10T7 слишком много ног ИМХО и это напрягает.
SHIM1 вне форума  
Непрочитано 16.07.2010, 00:31  
Lockdog
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 89
Сказал спасибо: 25
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
Lockdog на пути к лучшему
По умолчанию Re: AVR и экран MT10T7

Я это сразу попробовал =(
P.S. пробовал и последнее исправленное, не помогает(((

Последний раз редактировалось Lockdog; 16.07.2010 в 00:38.
Lockdog вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Электронная библиотека 11242 29.12.2015 23:45
AVR JTAGICE MKII - проблемы firmware... Luxurious AVR 25 20.10.2014 10:50
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31


Часовой пояс GMT +4, время: 06:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.