Вот читается или нет. Вообще пишут, что так нельзя делать как вы посоветовали.
CodeVision AVR в вопросах и ответах
Так это потому что область памяти одна и та же.
Вот читается или нет. Вообще пишут, что так нельзя делать как вы посоветовали.
Вот читается или нет. Вообще пишут, что так нельзя делать как вы посоветовали.
- Реклама
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Ребят, объясните пожалуйста, вот если используешь аппаратный 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 в низкий уровень?
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 в низкий уровень?
именно, а потом в высокий, короче ручками.MS24 писал(а):...или еще нужно самостоятельно выставлять SS в низкий уровень?
«И всё-таки она вертится!»
Насколько я понял - если только один приемник можно и не использовать данный вывод, просто установить в активный уровень, а вот если принимающих несколько, то выбирать кому сейчас принимать нужно через подачу активного уровня через данный вывод. если МК является только мастер устройством, то вывод SS на нем не используется.
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
А выставлять, (в моем случае atmega8) PORTB.2 = 0 - таким образом?
- Реклама
Вы бы еще поточнее описали что вы там делаете, а то же непонятно, что у вас за схема, мастер или что, сколько устройств.
А так да ноль на ножке именно так устанавливается.
А так да ноль на ножке именно так устанавливается.
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Я пытаюсь запустить датчик давления MPL115A1. делаю вот по статьеvitalik_1984 писал(а):Вы бы еще поточнее описали что вы там делаете, а то же непонятно, что у вас за схема, мастер или что, сколько устройств.
А так да ноль на ножке именно так устанавливается.
http://we.easyelectronics.ru/part/cifro ... 115a2.html
Только там датчик общается по I2C, а у меня по SPI. Я до этого с этим протоколом не работал, логику понимаю, программно могу реализовать, но хочу аппаратный задействовать, он быстрее. Вот столкнулся с непониманием как именно выставлять SS, до этого думал, что он тоже аппаратно выставляется =)
Сейчас вот пока не могу понять, как выкачивать от туда коэффициенты, какой командой(
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
подскажите как реализовать в 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;
отдеально строковые массивы получаются, а вот структуры из них никак....
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;
отдеально строковые массивы получаются, а вот структуры из них никак....
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... для создания собственных типов используйте typedefDDark писал(а):строковые массивы получаются, а вот структуры из них никак...
наверно так:и причем тут CVAVR? обычный C.
Код: Выделить всё
typedef struct
{
unsigned char name[10][11];
unsigned char value[10][5];
unsigned char count;
} submenu;
submenu menu[4];- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
спасибо огромное! однако че то я не соображу почему когда начинаю присваивать значения выскакивает "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;или инициализировать при объявлении массива:
Код: Выделить всё
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");вообще, нерациональный расход ОЗУ получается.
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
Огромное спасибо! начало получаться!)
скажите, а если перед объявлением массива приписать директиву FLASH он же расположит его во флеш памяти а не в ОЗУ?
и еще такой вопрос.. допустим есть структура
а как сделать что то типа
подскажите пожалуйста, а то проблема в несовпадении типов... strcpy тож не нравится несовпадение char и *char
после этого по адресу ololo лежит то что надо, но в массив почему то не передается
скажите, а если перед объявлением массива приписать директиву 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);
Код: Выделить всё
unsigned char text[];
unsigned char *ololo;
sprintf(text,"%04d\n",chislo);
ololo = &(menu[0].value[0][0]);
strcpy (ololo, text);- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
уперся как в стену.. как обойти? ну или как вы создаете менюшки?
Код: Выделить всё
unsigned char x = 123;
sprintf(menu[0].value[0], "%03d\n" , x);
strcpy(menu[0].name[0], "123");ololo уже указывает на menu[0].value[0], значит если оно лежит по адресу ololo - то оно лежит по адресу menu[0].value[0].после этого по адресу ololo лежит то что надо, но в массив почему то не передаетсяКод: Выделить всё
unsigned char text[]; unsigned char *ololo; sprintf(text,"%04d\n",chislo); ololo = &(menu[0].value[0][0]); strcpy (ololo, text);
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
а... ну у меня перед объявлением массива было FLASH прописано... поэтому не работало.. ну а так занято уже 572 байта, но в принципе могу и уложиться))
спасибо огромное!!!!
спасибо огромное!!!!
Всем мяу 
Товарищи,есть у кого пример работы с меню под индикатор wh1602 или подобный?
Не понимаю как мне заставить при нажатии кнопки,переходить в определенное меню и ждать до тех пор,пока в этом меню не произойдет нажатие какой-то из кнопок.
Буду Мяусьма признателен!
Спасибо.
Товарищи,есть у кого пример работы с меню под индикатор wh1602 или подобный?
Не понимаю как мне заставить при нажатии кнопки,переходить в определенное меню и ждать до тех пор,пока в этом меню не произойдет нажатие какой-то из кнопок.
Буду Мяусьма признателен!
Спасибо.
- Сообщения: 73
- Зарегистрирован: Вт июн 22, 2010 20:15:17
ну я вот как раз делаю менюшку с цр1604, но она у меня примитивная.. 2 кнопочки - одна переключает подменюшки с разной информацией а вторая - листает список вниз циклически
Спасибо!почитаю.ibiza11 писал(а):Сериг, вот
можно посмотреть код?DDark писал(а):ну я вот как раз делаю менюшку с цр1604, но она у меня примитивная.. 2 кнопочки - одна переключает подменюшки с разной информацией а вторая - листает список вниз циклически


