Страница 276 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср сен 18, 2013 14:46:15
ploop
Вот тут не понял, в чем будут ограничены действия
1. Откройте редактор с кодом, нажмите CTRL+F
2. В поле поиска вбейте "odin", в поле замены - "44"
3. Нажмите "Replace all"
4. Вы получили
абсолютно идентичный код тому, который был.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб сен 21, 2013 21:30:34
0867532
Коты, есть вопрос:
Есть массив:
int DisplayArray [16][8] = {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,0,0}, //тут тот пиксель что мне нужен
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
В цикле проверяю каждый сегмент массива на предмет "1",
И если элемент == 1 то я его зажигаю на матрице 8*16
int i,j;
...
for (i=0; i == 16; i++) {
for (j=0; j == 8; j++) {
if (DisplayArray[j] == 1)
Display(j,i); //потому что указание в двухмерном массиве идёт с "y"!?
}
}
...
Но на матрице пусто.
В работоспособности ф-ции Display(x,y); уверен.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб сен 21, 2013 22:54:13
a_skr
for (i=0; i < 16; i++)
... ну Вы расточительно к памяти AVR относитесь...

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 10:24:09
ploop
ну Вы расточительно к памяти AVR относитесь.
int DisplayArray
В целых 32 раза

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 14:21:15
vitalik_1984
Я не пойму у вас один пиксель кодируется целым int ? Реально расточительство.
Можно вместо [8] просто unsigned char [32]{0b0000000,
0b0000000,
0b0000000,
0b0001000,//тут то, что зажигать хотим.
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
}
и точно так же как храним можно и выводить!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 14:40:48
Аlex
Тогда уж не 32, а 16
Код: Выделить всё
unsigned char DisplayArray[16]{
0b0000000,
0b0000000,
0b0000000,
0b0001000, //тут то, что зажигать хотим.
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000
}
............
............
unsigned char i, j;
for(i=0;i<sizeof(DisplayArray);i++){
unsigned char tmp=DisplayArray[i];
for(j=0;j<8;j++){
if(tmp&0x01) Display(j,i);
tmp>>=1;
}
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 14:48:01
ploop
16*8*4 = 512 байт вместо просто 16 байт. 512/16 = в 32 раза.
У него 16*8 INTов (каждый по 4 байта)
---
Ой, это не мне было, ну да ладно

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 14:51:19
Аlex
ploop, это я про массив.
А так, да, в 32 раза памяти больше...

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 14:59:36
Аlex
Стоп, не в 32, а в 16 раз больше.
В INT'е же 16 бит, а не 32. Это в CV на сколько я помню, но не уверен.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 15:09:10
vitalik_1984
Аlex писал(а):Тогда уж не 32, а 16

Во во именно это я и хотел написать, просто с телефона не очень удобно.

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 16:58:40
ploop
В INT'е же 16 бит, а не 32
Да?
Вот поэтому я всегда использую явные типы: int8_t, int16_t и тд. А то развели тут бардак, где 16, где 32

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 22:36:10
0867532
Не, секунду, мне надо ещё в массив записывать.
Типа DisplayArray[2][4]==1
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 22:40:18
Аlex
И что ? А в отдельный бит нельзя что-ли записать единичку или нолик ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 22:46:45
vitalik_1984
0867532 писал(а):Не, секунду, мне надо ещё в массив записывать.
Типа DisplayArray[2][4]==1

Блин , переписать функцию на вывод целой строки не судьба?
Дальше какие вопросы пойдут? Позвольте предположить: как сложить два массива?
Я так понял это все для тетриса вопросы?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 22:58:22
0867532
Я не понял что вы про строку написали, но про сложение массивов, м! это интересно...
А зачем тогда форумы нужны? -Чтоб одни спрашивали а другие отвечали, или обсуждали что-то.
Во всяком случае мне так кажется.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 22, 2013 23:25:30
Аlex
Дык Вам и отвечают. Только вот обратной реакции нет никакой, как со стенкой общаешься... обидно...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн сен 23, 2013 00:11:44
vitalik_1984
0867532 писал(а):Я не понял что вы про строку написали,
Я говорю Нафига анализировать каждый бит, когда можно анализировать целую строку. таким же образом можно выводить целую строку.
0867532 писал(а):
но про сложение массивов, м! это интересно...
Я могу подсказать простую, но еще не проверенную идею, если вы до сих пор тетрис делаете. Но лучше в отдельной теме, чтобы все это не было разбросано по веткам.
0867532 писал(а):
А зачем тогда форумы нужны? -Чтоб одни спрашивали а другие отвечали, или обсуждали что-то.
Во всяком случае мне так кажется.
Правильно, вас пока что никто еще не выгонял, просто реакции на советы плохо видны. Ладно хоть с массивами разобрались...

Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср сен 25, 2013 19:00:21
Сериг
Коты,здравствуйте!
Подмогните пожалуйста(у меня очередная проблема)

Дана Atmega 8 и 3 микрухи 74hc595,в последовательном соединении.
программа :
Код: Выделить всё
#define reset PORTD.7 // MR
#define SCK PORTD.6 // SHCP
#define ss PORTD.5 // STCP
#define MOSI PORTD.4 // DS
void send_byte_74595 (unsigned char data){ unsigned char i;
ss = 1;
for (i = 0; i < 24; i++) {
if ( (data>>i)&1) MOSI = 1;
else MOSI = 0;
#asm("nop")
SCK = 1;
#asm("nop")
SCK = 0;
#asm("nop")
}
ss = 0;
}
Светодиоды подключенные к микрухам работают хаотично.
Соответственно выводится лебелерда.
Толкните на путь истинный,пожалуйста!
Благодарю!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср сен 25, 2013 19:14:01
Аlex
А как это Вы из байта (
unsigned char data) вытягиваете 24 бита ?

Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср сен 25, 2013 19:52:57
vitalik_1984
Ну даже если из байта сдвигом вытягивать 24 бита все равно должно получиться. Только будет байт и 16 нулей. Значит что то не так выводится все таки.
Лучше попробовать для начала вывести один байт и посмотреть что получается.