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