и вообще, кусок кода какой-то несуразный....
CodeVision AVR в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
boobonick, а что вы хотели-то? определяете массив символов, а втюхиваете в него строки... разница все-таки есть, как ни крути
и вообще, кусок кода какой-то несуразный....
и вообще, кусок кода какой-то несуразный....
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
можно, даже нужно, что бы этот масив был bit только насколько я знаю можно только около 100 битовых переменых.
вот как мне обойти эту гадость?
я думал что можно сделать еще вот так
extern char mas1[25];
extern char mas2[25];
extern char mas3[25];
extern char mas4[25];
extern char mas5[25];
как раз получается 1000 байт
вот как мне обойти эту гадость?
я думал что можно сделать еще вот так
extern char mas1[25];
extern char mas2[25];
extern char mas3[25];
extern char mas4[25];
extern char mas5[25];
как раз получается 1000 байт
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
вы начните с того, что ответьте: сколько ОЗУ в тини2313? там всего-то 128 байт памяти - куда вы собрались такой массив пихать?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Synergetik
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Чт фев 28, 2008 23:54:35
- Откуда: Воскресенск, МО
- Контактная информация:
Займитесь простой арифметикой. Сначала определитесь, какой тип нужен для элементов. char - 1 байт, int - 2 байт. Умножьте это значение на число элементов в массиве (произведение размерностей). Получится размер памяти для хранения массива. Сравните со значениями ОЗУ и flash различных микроконтроллеров (даташиты никто не отменял) начиная последовательно от tiny2313, atmega8, atmega16, atmega32, ... Если памяти ОЗУ не хватает для единовременной обработки массива, сохраните его в flash-памяти (только там свои ограничения и могут возникнуть определённые глюки). Потренируйтесь на Протеусе.PacMan писал(а):ну и как быть? какой микроконтроллер предложите?)
Под вопросом - возможность создания трёхмерного массива в C. Возможно проще создать функцию обработки одномерного массива как трёхмерного.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
пока что у меня создается впечатление, что ваша проблема в том, что задача поставлена неправильно. огласите задачу полностью.
почему я так думаю?
во-первых, вы хотите массив битовых значений. это настораживает
во-вторых, трехмерный массив... так же вызывает подозрения на счет необходимости...
почему я так думаю?
во-первых, вы хотите массив битовых значений. это настораживает
во-вторых, трехмерный массив... так же вызывает подозрения на счет необходимости...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
мож кто поможет, НЕ ПОСЫЛАТЬ В ДАТАШИТИ! все равно в них кроме распиновки нече не понимяу, короч, как запустить прерывания+ их счетчик, который будет сравнивать Общее число прерываний с определенным, и по нему перепрыгивать на другую бесконечную подпрограмму, ну типа если количество =0, тогда идет основная програма, если 1= то 2 программа, если 2 то 3 программа.......
Мотание тороидов- вышивание по мужски.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
2 цвета - это включено и выключено?PacMan писал(а):вообщем хочу собрать led cube 5x5x5 вот и нужен 3-х мерный массив. у меня только 2 цвета
для вашей задачи хватит двумерного массива из байтов char cube[5][5] - всего 25 байт
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
у вас куб состоит из 5 слоев 5х5 - так?
каждый слой состоит из 5 полосок по 5 светодиодов, так?
каждая полоска - это байт, каждый светодиод - это бит в байте.
улавливаете?
картинки ваши будете рисовать по слоям. например вот так будет закодирован ромбик:
0b00000100
0b00001010
0b00010001
0b00001010
0b00000100
улавливаете?
каждый слой состоит из 5 полосок по 5 светодиодов, так?
каждая полоска - это байт, каждый светодиод - это бит в байте.
улавливаете?
картинки ваши будете рисовать по слоям. например вот так будет закодирован ромбик:
0b00000100
0b00001010
0b00010001
0b00001010
0b00000100
улавливаете?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Код: Выделить всё
typedef char[5] sloy_t;
sloy_t cube[5];
// установка для заданного слоя кубика в строке и столбике бита в 1
voig set_bit(sloy_t *sloy, char stroka, char stolb){
char bit = 1 << stolb;
*sloy[stroka] |= bit;
}если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
boobonick писал(а):...подскажите,пожалуйста,не понимаю, компилятор выдает сообщение "missing ;" ... возможно ли так в структурах делать?Код: Выделить всё
struct {
char lcd_menu_master[x_element][y_element]= {
{"Menu1"},
{"Menu2"},
{"Menu3"}
};
};
"Втюхивать" строки в char-массивы стандартом Си разрешено, более того - делать так зачастую удобнее, чем лепить кучу отдельных символов.ARV писал(а):boobonick, а что вы хотели-то? определяете массив символов, а втюхиваете в него строки... разница все-таки есть, как ни крути
В Си - массивы, строки и указатели очень тесно связаны, и это отражается, в частности, в способах инициализации. Разница, конечно, есть, но язык Си задумывался для написания осперационных систем и потому должен был давать программисту максимум (логичных) возможностей, так как изначально предполагалось, что писать на Си будет системный программист, который по определению лучше компилятора ориентируется в ситуации и знает о ней больше. Разумеется, ответственность за написанное, при таком раскладе, лежит только на нём.
boobonick, отдели инициатор от объявления структуры и будет тебе счастье:
Только учти наличие в строках маркера конца строки.
P.S. Что-то имя "menu" заставляет меня сомневаться в том, что ты выбрал для достижения своих целей правильные средства - строки меню очень редко бывают одинаковой длины...

- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
если бы все знали все, что можно в Си и умели бы этим пользоваться - ни у кого не возникаоло бы вопросовYellow Tiger писал(а):"Втюхивать" строки в char-массивы стандартом Си разрешено, более того - делать так зачастую удобнее, чем лепить кучу отдельных символов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Yellow Tiger писал(а):boobonick писал(а):...подскажите,пожалуйста,не понимаю, компилятор выдает сообщение "missing ;" ... возможно ли так в структурах делать?Код: Выделить всё
struct {
char lcd_menu_master[x_element][y_element]= {
{"Menu1"},
{"Menu2"},
{"Menu3"}
};
};ARV писал(а):boobonick, а что вы хотели-то? определяете массив символов, а втюхиваете в него строки... разница все-таки есть, как ни крути
Да, наверное мое представление неправильное, но, как я думаю,
строка - это набор символов, с '/n'?
P.S. Что-то имя "menu" заставляет меня сомневаться в том, что ты выбрал для достижения своих целей правильные средства - строки меню очень редко бывают одинаковой длины...
А под одну строку [x_element] же я выделил много символов [y_element], т.е. строки же разные могли быть или я не понимаю чего-то?
Вот сегодня перечитал про указатели и сделал вот так
: Код: Выделить всё
static char *lcd_menu_master[]= {"Menu1","Menu2","Menu3"};Спасибо большое за ответы!
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Нет, это в текстовом файле строка ограничивается символом перевода строки, а Си-шный набор данных, называемый строкой, оканчивается нулем - '\0'.boobonick писал(а):...но, как я думаю, строка - это набор символов, с '/n'
Вот теперь правильно.boobonick писал(а):...сегодня перечитал про указатели и сделал вот так:Код: Выделить всё
static char *lcd_menu_master[]= {"Menu1","Menu2","Menu3"};
Здравствуйте уважаемые!
Возникла проблема, пожалуйста помогите справиться.
Это самое первое что я "изобрел" сам!
Тоесть я ТОЛЬКО ТОЛЬКО начинаю.
Другими словами "ЧАЙНИК"!!!
Схема проста.
ATmega16.
На PORTA.0 подключена кнопка, замыкающая на землю.
На порт С подключен ЖКИ 1602 на контроллере 44780.
Если кнопка не нажата, то на ЖКИ выводятся надписи:
"Hello word"
"AVR 123 kurs"
Если она нажата то:
"Урааа!!"
"Работает!!!"
Использую:
CodeWizardAVR V2.03.9 Evaluation
PonyProg2000 Version 2.06f Beta
windows XP профешнл.
К стати! Что означает Evaluation?
Вот только нехочет оно правильно работать!
Подскажите пожалуйста что я делаю неправильно?
Уже всю голову себе поломал!
Вот основной кусок кода:
PORTA=0x01;//Подтягиваю PINA.0 к питанию.
DDRA=0x00;
// LCD module initialization
lcd_init(16);
static char a; //обьявляю переменную "а"
while (PINA.0==0) { //Проверяю не нажата ли кнопка
};
a=PINA.0; //Результат проверки заношу в "а"
if(a)
{ //Если не нажата то выводим на индикатор следующие две строки
lcd_clear(); //Очищаю индикатор
lcd_gotoxy(3,0); // Куда писать
lcd_putsf("Hello word"); // Что писать
lcd_gotoxy(2,1); // Куда писать
lcd_putsf("AVR 123 kurs"); // Что писать
}
//Если нажата то выводим на индикатор следующие две строки
else
{
lcd_clear(); //Очищаю индикатор от предыдущих показаний
lcd_gotoxy(3,0);
lcd_putsf("©paaa!");
lcd_gotoxy(2,1);
lcd_putsf("PaІoїaeї!!!");
};
} // Это осталось от main.
И еще
Что и в каких случаях нужно вписывать в скобки lcd_clear(); ?
Может быть в них можно указать конкретные знакоместа ЖКИ? Если да, то как это сделать правильно?
Спасибо
С уважением Сергей.
Возникла проблема, пожалуйста помогите справиться.
Это самое первое что я "изобрел" сам!
Тоесть я ТОЛЬКО ТОЛЬКО начинаю.
Другими словами "ЧАЙНИК"!!!
Схема проста.
ATmega16.
На PORTA.0 подключена кнопка, замыкающая на землю.
На порт С подключен ЖКИ 1602 на контроллере 44780.
Если кнопка не нажата, то на ЖКИ выводятся надписи:
"Hello word"
"AVR 123 kurs"
Если она нажата то:
"Урааа!!"
"Работает!!!"
Использую:
CodeWizardAVR V2.03.9 Evaluation
PonyProg2000 Version 2.06f Beta
windows XP профешнл.
К стати! Что означает Evaluation?
Вот только нехочет оно правильно работать!
Подскажите пожалуйста что я делаю неправильно?
Уже всю голову себе поломал!
Вот основной кусок кода:
PORTA=0x01;//Подтягиваю PINA.0 к питанию.
DDRA=0x00;
// LCD module initialization
lcd_init(16);
static char a; //обьявляю переменную "а"
while (PINA.0==0) { //Проверяю не нажата ли кнопка
};
a=PINA.0; //Результат проверки заношу в "а"
if(a)
{ //Если не нажата то выводим на индикатор следующие две строки
lcd_clear(); //Очищаю индикатор
lcd_gotoxy(3,0); // Куда писать
lcd_putsf("Hello word"); // Что писать
lcd_gotoxy(2,1); // Куда писать
lcd_putsf("AVR 123 kurs"); // Что писать
}
//Если нажата то выводим на индикатор следующие две строки
else
{
lcd_clear(); //Очищаю индикатор от предыдущих показаний
lcd_gotoxy(3,0);
lcd_putsf("©paaa!");
lcd_gotoxy(2,1);
lcd_putsf("PaІoїaeї!!!");
};
} // Это осталось от main.
И еще
Что и в каких случаях нужно вписывать в скобки lcd_clear(); ?
Может быть в них можно указать конкретные знакоместа ЖКИ? Если да, то как это сделать правильно?
Спасибо
С уважением Сергей.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Самый простой вариант который пришёл в голову.
Код: Выделить всё
while (1) {
if(PINA.0==1){
Если кнопка нажата то выводим на LCD “Ура это может работать!!!”
}else{
Если кнопка не нажата то выводим на LCD “Не работает!!!”
}
};