реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Умный дом.
vet
сообщение Mar 26 2006, 20:01
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



flash char *disp1;
disp1="Не работает";


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 26 2006, 20:30
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ps1x @ Mar 26 2006, 20:39) *
1)
char *disp1;
disp1="Не работает";
- такой код выдает ошибку "pointers are to different memory classes"

2)
а такой вроде как работает
char *disp1;
*disp1="Не работает";

1. Это уже конкретные AVRовские заморочки с flash - я не в курсе, как я понимаю Вам "vet" ответил.

2.Бред, если компилятор на такое хотя-бы одно предупреждение не выдал, то хреновый компилятор,
либо ему все предупреждения задавили.
Ну а сделать он мог, максимум, в память по адресу на который указывает указатель disp1 (кстати в пределах данного фрагмента не инициализированный! ) запихнуть один байт 'Н'. И выдать пару варнингов:
- неинициализированный указатель;
- хрен знает какое преобразование строки к байту;


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 26 2006, 21:01
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



В общем правильны вариант оказался:
Код
        char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};
        lcd_puts(mainm[cur]);

- работает полностью в полном обьеме cheers.gif

Вот недоделаное меню:
Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.5 Standard
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 26.03.2006
Author  : ps1x                            
Company : ccc                            
Comments:


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/
#asm
   .equ __lcd_port=0x18;PORTB
#endasm
#include <mega8.h>
#include <stdio.h>
#include <STRING.h>
#include <lcd.h>
#include <delay.h>

unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся
char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};//пункты главного меню
int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее)
unsigned int hour,min,sec;//переменные для показа часов (на будущее)


void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта
{
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts(mainm[cur]);//выводим текущ. пункт меню
        lcd_gotoxy(0,0);    
        lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта.
        lcd_gotoxy(0,1);
        lcd_puts(mainm[cur+1]);//следующий пункт

}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (kod) { //в зависимости от нажатой кнопки

    case 'u'://если кнопка вверх
        if (cur==0){cur=5;}//ограничене для закольцовывания меню ))
        cur--;//уменьшение указателя
    switch (m) {//если активно главное меню
    case 'm':
        showmm(cur);//отображение гл. мен.
    break;
    }
    break;
    case 'd'://кнопка вниз
        if (cur==4){cur=-1;}//ограничение
        cur++;
        showmm(cur);
    break;
    case 's'://нажатие кнопки селект
        switch(cur){
        case 3:
        lcd_clear();
        lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код
        };
    break;
    case 'c':

    break;
    case 'z':
        
    break;

    };
kod='z';
}

// Declare your global variables here



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
TCCR0=0x04;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")
lcd_init(16);
while (1) //опрашиваем клавиатуру
      {
if (PIND.0==1)
{kod='u';delay_ms(250);}

if (PIND.1==1)
{kod='d';delay_ms(250);}

if (PIND.2==1)
{kod='s';delay_ms(250);}

if (PIND.3==1)
{kod='c';delay_ms(250);}


      };
}


как вам такая реализация???

p.s. КОД НЕЗАКОНЧЕН!

Как заставить ISIS показывать русские буквы?
И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?

Сообщение отредактировал ps1x - Mar 26 2006, 21:12
Go to the top of the page
 
+Quote Post
bezobraznic
сообщение Mar 26 2006, 21:35
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441



Цитата(ps1x @ Mar 27 2006, 00:01) *
Как заставить ISIS показывать русские буквы?
И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?


#pragma rl+
lcd_putsf("Что-то на русском");
#pragma rl-
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 26 2006, 22:27
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Как я понял, ИСИС с русским не дружит... )
Тем не менее остаются вопросы:
Как общаться Мегам между собой - rs232 насколько я почерпнул из интернета - самый простой метод.
Например:
мастер-пульт посылает каждому пульту-слейву по байту вида
хххxzzzz - где xxxx-идентификатор устройства(слейва) zzzz- комманда
например
00011010 - посылает первому слейву запрос на наличие у слейва информации для кого нибудь другого устройства, и слушает....
потом ему приходит:
00000010 - типа хочу что-то послать второму слейву
мастер ему говорит - 00010001 - готов к приему (говорит первому слейву), слушает...
слейв отвечает 00010010, 10110110 - типа передай второму слейву (00010010), что я его люблю (10110110).
Мастер кричит в эфир 00101111 - второй слейв, слушай сюда!
Второй отвечает - 00000001 - слушаю!
Мастер говорит - 00100010, 10110110.
Вот такая история...
Кто нибудь осуществлял подобного ттипа задачки? Поделитесь опытом, пожалуйста!
Go to the top of the page
 
+Quote Post
TamTam
сообщение Mar 27 2006, 12:35
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(ps1x @ Mar 27 2006, 00:01) *
В общем правильны вариант оказался:
Код
        char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};
        lcd_puts(mainm[cur]);

- работает полностью в полном обьеме cheers.gif

Вот недоделаное меню:
Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.5 Standard
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 26.03.2006
Author  : ps1x                            
Company : ccc                            
Comments:


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/
#asm
   .equ __lcd_port=0x18;PORTB
#endasm
#include <mega8.h>
#include <stdio.h>
#include <STRING.h>
#include <lcd.h>
#include <delay.h>

unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся
char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};//пункты главного меню
int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее)
unsigned int hour,min,sec;//переменные для показа часов (на будущее)


void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта
{
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts(mainm[cur]);//выводим текущ. пункт меню
        lcd_gotoxy(0,0);    
        lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта.
        lcd_gotoxy(0,1);
        lcd_puts(mainm[cur+1]);//следующий пункт

}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (kod) { //в зависимости от нажатой кнопки

    case 'u'://если кнопка вверх
        if (cur==0){cur=5;}//ограничене для закольцовывания меню ))
        cur--;//уменьшение указателя
    switch (m) {//если активно главное меню
    case 'm':
        showmm(cur);//отображение гл. мен.
    break;
    }
    break;
    case 'd'://кнопка вниз
        if (cur==4){cur=-1;}//ограничение
        cur++;
        showmm(cur);
    break;
    case 's'://нажатие кнопки селект
        switch(cur){
        case 3:
        lcd_clear();
        lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код
        };
    break;
    case 'c':

    break;
    case 'z':
        
    break;

    };
kod='z';
}

// Declare your global variables here



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
TCCR0=0x04;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")
lcd_init(16);
while (1) //опрашиваем клавиатуру
      {
if (PIND.0==1)
{kod='u';delay_ms(250);}

if (PIND.1==1)
{kod='d';delay_ms(250);}

if (PIND.2==1)
{kod='s';delay_ms(250);}

if (PIND.3==1)
{kod='c';delay_ms(250);}


      };
}


как вам такая реализация???

p.s. КОД НЕЗАКОНЧЕН!

Как заставить ISIS показывать русские буквы?
И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?


А можно на скриншот ISIS посмотреть ???
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 27 2006, 14:10
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ
Произошла ошибка при загрузке файла, в связи с тем, что директория 'uploads' имеет неправильные атрибуты. Если Вы получили эту ошибку, просим Вас обратиться к Администратору форума и сообщить об этой ошибке.

---вот такая лажа случилась, щас залью на хостинг...

http://www.annesemonin.ru/scr.jpg -- вот адрес картинки.

Добавленно:
http://www.annesemonin.ru/scr1.jpg -- с русскими буквами.

Сообщение отредактировал ps1x - Mar 27 2006, 14:13
Go to the top of the page
 
+Quote Post
Balaganov
сообщение Mar 27 2006, 17:54
Сообщение #23


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 16-02-05
Пользователь №: 2 688



Цитата(ps1x @ Mar 27 2006, 00:27) *
Как я понял, ИСИС с русским не дружит... )
...

Качаеш отсюда редактор симоволов LCDALPHA и отредактируеш шрифты в нем.
Quick Help: сохранить .BMP, открыть LCDALPHA.DLL, загрузить сохраненную .BMP и сохранить LCDALPA.DLL.

Удачи!

Сообщение отредактировал Balaganov - Mar 27 2006, 17:55
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 27 2006, 17:54
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Не смог я всетаки со своим меню разобраться, посему прошу помощи. Какой самый простой метод организации многоуровнего меню? Есть-ли у кого нибудь ссылки на алгоритмы работы меню (реализации GUI)?
з.ы. Все что нашел - под винду, т.е. совершенно не подходит (используют оконные меню и иже с ними)
Go to the top of the page
 
+Quote Post
_artem_
сообщение Mar 27 2006, 18:26
Сообщение #25


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Для начала вот это достаточно будет .:

http://rapidshare.de/files/16570538/gui.rar.html


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 27 2006, 18:31
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Cпасибо! ценная информация!
Go to the top of the page
 
+Quote Post
Laptop
сообщение Mar 27 2006, 18:41
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Цитата(ps1x @ Mar 27 2006, 20:54) *
Не смог я всетаки со своим меню разобраться, посему прошу помощи. Какой самый простой метод организации многоуровнего меню? Есть-ли у кого нибудь ссылки на алгоритмы работы меню (реализации GUI)?
з.ы. Все что нашел - под винду, т.е. совершенно не подходит (используют оконные меню и иже с ними)

ИМХО, самый простой метод с организацией списка и хождения по его элементам, в полях элемента хранишь все что тебе необходимо. Реализация проста до безобразия, а всю рутину берет на себя компилятор. И главное, что потом добавив поля можешь хоть картинки к каждой менюшке подвесить.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 27 2006, 18:54
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(Laptop @ Mar 27 2006, 22:41) *
Цитата(ps1x @ Mar 27 2006, 20:54) *

Не смог я всетаки со своим меню разобраться, посему прошу помощи. Какой самый простой метод организации многоуровнего меню? Есть-ли у кого нибудь ссылки на алгоритмы работы меню (реализации GUI)?
з.ы. Все что нашел - под винду, т.е. совершенно не подходит (используют оконные меню и иже с ними)

ИМХО, самый простой метод с организацией списка и хождения по его элементам, в полях элемента хранишь все что тебе необходимо. Реализация проста до безобразия, а всю рутину берет на себя компилятор. И главное, что потом добавив поля можешь хоть картинки к каждой менюшке подвесить.

Дык а есть исходники с комментариями на русском для дебилов? С удовольствием бы поизучал.
Насколько я понял из некоторых примеров, надо создать несколько структур - для пункта меню, для меню и для вбранного пункта меню, так?
Go to the top of the page
 
+Quote Post
Laptop
сообщение Mar 27 2006, 19:23
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Цитата(ps1x @ Mar 27 2006, 21:54) *
Дык а есть исходники с комментариями на русском для дебилов? С удовольствием бы поизучал.
Насколько я понял из некоторых примеров, надо создать несколько структур - для пункта меню, для меню и для вбранного пункта меню, так?

Исходников к сожалению нет. Несколько структур создавать не обязательно, все элементы могут быть одинаковы, надо только определить для себя каким будет отображение на экране.
Самый простой вариант когда отображается один уровень, с вложенностью (точнее с одновременным отображением нескольких уровней вложенности) чуть сложнее, больше работы процессору.

Структура элемента следующая:
предыдущий пункт
следующий пункт
вход в нижний уровень вложенности, если есть
признак активного пункта
поле возможно указателя на функцию, возвращающую значение пункта меню(On, Off, etc.)

Необходимо только предусмотреть затычки для неиспользуемых полей.-
Вся работа сводится к беготне по ссылкам внутри спискаsmile.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение Mar 27 2006, 21:45
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Ну, отображаться будут две строки меню (на дисплее 16*2), причем перед одной из них символ ">>" как индикатор активного пункта, вобщем можете взглянуть на скрин-шот из эмулятора
http://www.annesemonin.ru/scr.jpg
Максимальная вложенность - 3, тоесть:

Главное меню
----настройки
---------контраст
---------яркость
---------идентификатор
----таймер
---------проверить
---------установить

и т.п.

Гы, а как собственно "бегать" по элементам? (switch?)
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016