CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

Так это потому что область памяти одна и та же.
Вот читается или нет. Вообще пишут, что так нельзя делать как вы посоветовали.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: CodeVision AVR в вопросах и ответах

Сообщение MS24 »

Ребят, объясните пожалуйста, вот если используешь аппаратный SPI, кто устанавливает вывод SS? Т.е когда ты реализуешь его программно, ты сам должен делать это, а в даташите указанны только 2 фунцкции:
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
}
для передачи, и приема

char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1<<SPIF)))
;
/* Return data register */
return SPDR;
}
Т.е просто запихивать туда байт и радоваться жизни, или еще нужно самостоятельно выставлять SS в низкий уровень?
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: CodeVision AVR в вопросах и ответах

Сообщение Apparatchik »

MS24 писал(а):...или еще нужно самостоятельно выставлять SS в низкий уровень?

именно, а потом в высокий, короче ручками.
«И всё-таки она вертится!»
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

Насколько я понял - если только один приемник можно и не использовать данный вывод, просто установить в активный уровень, а вот если принимающих несколько, то выбирать кому сейчас принимать нужно через подачу активного уровня через данный вывод. если МК является только мастер устройством, то вывод SS на нем не используется.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: CodeVision AVR в вопросах и ответах

Сообщение MS24 »

А выставлять, (в моем случае atmega8) PORTB.2 = 0 - таким образом?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

Вы бы еще поточнее описали что вы там делаете, а то же непонятно, что у вас за схема, мастер или что, сколько устройств.
А так да ноль на ножке именно так устанавливается.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: CodeVision AVR в вопросах и ответах

Сообщение MS24 »

vitalik_1984 писал(а):Вы бы еще поточнее описали что вы там делаете, а то же непонятно, что у вас за схема, мастер или что, сколько устройств.
А так да ноль на ножке именно так устанавливается.

Я пытаюсь запустить датчик давления MPL115A1. делаю вот по статье
http://we.easyelectronics.ru/part/cifro ... 115a2.html
Только там датчик общается по I2C, а у меня по SPI. Я до этого с этим протоколом не работал, логику понимаю, программно могу реализовать, но хочу аппаратный задействовать, он быстрее. Вот столкнулся с непониманием как именно выставлять SS, до этого думал, что он тоже аппаратно выставляется =)
Сейчас вот пока не могу понять, как выкачивать от туда коэффициенты, какой командой(
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

подскажите как реализовать в CodeVisonAVR подобную штуку

type submenu = record
name: array[1..10] of string[10];
value: array[1..10] of string[4];
count: byte;
end;

var
menu: array[1..4] of submenu;

отдеально строковые массивы получаются, а вот структуры из них никак....
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: CodeVision AVR в вопросах и ответах

Сообщение ChipKiller »

DDark писал(а):строковые массивы получаются, а вот структуры из них никак...
... для создания собственных типов используйте typedef
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

наверно так:

Код: Выделить всё

typedef struct
{
  unsigned char name[10][11];
  unsigned char value[10][5];
  unsigned char count;
} submenu;

submenu menu[4];
и причем тут CVAVR? обычный C.
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

спасибо огромное! однако че то я не соображу почему когда начинаю присваивать значения выскакивает "Missing ("
подскажите пожалуйста...

Код: Выделить всё

typedef struct
{
  unsigned char name[10][11];
  unsigned char value[10][5];
  unsigned char count;
} submenu;

submenu menu[4];

menu[0].name[0] = "Status:";
menu[0].name[1] = "Temp:";
menu[0].name[2] = "Rotates:";
menu[0].name[3] = "Generation:";
menu[0].name[4] = "SENSORS";
menu[0].name[5] = "H2 GENERATOR";
menu[0].name[6] = "PREFERENCES";

menu[0].value[0] = "1:";
menu[0].value[1] = "2";
menu[0].value[2] = "3";
menu[0].value[3] = "4";
menu[0].value[4] = "5";
menu[0].value[5] = "6";
menu[0].value[6] = "7";

menu[0].count = 7;
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

:facepalm: что это?
или инициализировать при объявлении массива:

Код: Выделить всё

typedef struct
{
  unsigned char name[3][11];
  unsigned char value[3][5];
  unsigned char count;
} submenu;
submenu menu[3]=
{
  {"11","22","33", "11","22","33", 5},
  {"44","55","66", "11","22","33", 5},
  {"77","88","99", "aa","bb","cc", 5}
};
или по ходу выполнения:

Код: Выделить всё

strcpy(menu[0].name[0], "123");
и еще не забудьте про размерности, "PREFERENCES" - уже 12 байт.
вообще, нерациональный расход ОЗУ получается.
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

Огромное спасибо! начало получаться!)
скажите, а если перед объявлением массива приписать директиву FLASH он же расположит его во флеш памяти а не в ОЗУ?

и еще такой вопрос.. допустим есть структура

Код: Выделить всё

typedef struct
{
  unsigned char name[3][11];
  unsigned char value[3][5];
  unsigned char count;
} submenu;
submenu menu[3]=
{
  {"11","22","33", "11","22","33", 5},
  {"44","55","66", "11","22","33", 5},
  {"77","88","99", "aa","bb","cc", 5}
};


а как сделать что то типа

Код: Выделить всё

unsigned char x = 123;
sprintf(menu[0].value[0], "%03d\n" , x);
 

подскажите пожалуйста, а то проблема в несовпадении типов... strcpy тож не нравится несовпадение char и *char

Код: Выделить всё

unsigned char text[];
unsigned char *ololo;

sprintf(text,"%04d\n",chislo);
ololo = &(menu[0].value[0][0]);     
strcpy (ololo, text);


после этого по адресу ololo лежит то что надо, но в массив почему то не передается
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

уперся как в стену.. как обойти? ну или как вы создаете менюшки?
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

Код: Выделить всё

unsigned char x = 123;
sprintf(menu[0].value[0], "%03d\n" , x);
strcpy(menu[0].name[0], "123");

у меня это компилируется без ошибок и предупреждений.

Код: Выделить всё

unsigned char text[];
unsigned char *ololo;
sprintf(text,"%04d\n",chislo);
ololo = &(menu[0].value[0][0]);     
strcpy (ololo, text);

после этого по адресу ololo лежит то что надо, но в массив почему то не передается
ololo уже указывает на menu[0].value[0], значит если оно лежит по адресу ololo - то оно лежит по адресу menu[0].value[0].
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

а... ну у меня перед объявлением массива было FLASH прописано... поэтому не работало.. ну а так занято уже 572 байта, но в принципе могу и уложиться))
спасибо огромное!!!!
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

Всем мяу :)
Товарищи,есть у кого пример работы с меню под индикатор wh1602 или подобный?
Не понимаю как мне заставить при нажатии кнопки,переходить в определенное меню и ждать до тех пор,пока в этом меню не произойдет нажатие какой-то из кнопок.
Буду Мяусьма признателен!
Спасибо.
DDark
Открыл глаза
Сообщения: 73
Зарегистрирован: Вт июн 22, 2010 20:15:17

Re: CodeVision AVR в вопросах и ответах

Сообщение DDark »

ну я вот как раз делаю менюшку с цр1604, но она у меня примитивная.. 2 кнопочки - одна переключает подменюшки с разной информацией а вторая - листает список вниз циклически
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение ibiza11 »

Сериг, вот
Ставим плюсы: )
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

ibiza11 писал(а):Сериг, вот

Спасибо!почитаю.
DDark писал(а):ну я вот как раз делаю менюшку с цр1604, но она у меня примитивная.. 2 кнопочки - одна переключает подменюшки с разной информацией а вторая - листает список вниз циклически
можно посмотреть код?
Ответить

Вернуться в «AVR»