... для "хитрых" данных лучше ИМХО использовать структурыuk8amk писал(а):Возможно ли как-то организовать массив указателей на строки во FLASH и как это правильно сделать?
Вопросы по С/С++ (СИ)
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
- Реклама
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Вопросы по С/С++ (СИ)
ChipKiller,
Да, пожалуй вы правы. Переделаю код под массив структур.
Вбил в CVAVR(т.к. первым под руку попался) такой код:
Компилятор вроде проглатил и не поругался. Попробую теперь перетащить на кейл.
Да, пожалуй вы правы. Переделаю код под массив структур.
Вбил в CVAVR(т.к. первым под руку попался) такой код:
Код: Выделить всё
const char str_ok[] = "OK";
const char str_err[] = "ERROR";
const char str_nocarr[] = "NOCARRIER";
const char str_busy[] = "BUSY";
const char str_connect[]="CONNECT";
const char str_ring[]="RING";
const char str_ndialtone[] = "NODIALTONE";
const char str_nanswer[] = "NOANSWER";
const char str_start[]="^SYSSTART";
const char* at_cmd_pattern[ 9 ] = { str_ok, str_err, str_nocarr, \
str_busy, str_connect, str_ring, \
str_ndialtone, str_nanswer,str_start };- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Эти строки будут в оперативной памяти место отъедать, Нужно прописать что это именно флеш константа
для CV
Для студии и winavr
В кейл не знаю, столько комиляторов развелось...
для CV
Код: Выделить всё
flash char str_ok[]="OK";Код: Выделить всё
Запись
PROGMEM unsigned char Num_codes[10]="OK";
//чтение
display[1]=pgm_read_byte_near(&Num_codes[res]);//тут RES это любое число в пределах размера массива.
//либо через указатель вместо &Num_codes[res]
В поисках истины человек развивается.
Re: Вопросы по С/С++ (СИ)
помогите конвертнуть код из си в асм:
SPSR | = (1<<SPI2X);
SPSR | = (1<<SPI2X);
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
movlw 1<<SPI2X
iorwf SPSR, fА люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Реклама
Re: Вопросы по С/С++ (СИ)
атмега48, этот код не работает. unknown command. работаю в avr studio 4uldemir писал(а):Про какой микроконтроллер, вообще-то, речь шла?Код: Выделить всё
movlw 1<<SPI2X iorwf SPSR, f
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
... любой С-компилятор может создавать файл листинга и *.asm файл. Можно например такgyparr писал(а):помогите конвертнуть код из си в асм: SPSR | = (1<<SPI2X);
Код: Выделить всё
in r16,SPSR
ori r16,(1<<SPI2X)
out SPSR,r16Re: Вопросы по С/С++ (СИ)
Ну еще бы!gyparr писал(а): этот код не работает. unknown command.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: Вопросы по С/С++ (СИ)
Я не нашел такой штуки в авр студии, в кодевижн видел, но на данный момент квавр нету.. Если подскажите как создать этот файлик, буду очень благодарен!ChipKiller писал(а):... любой С-компилятор может создавать файл листинга и *.asm файл. Можно например такgyparr писал(а):помогите конвертнуть код из си в асм: SPSR | = (1<<SPI2X);вместо r16 можно использовать r17..r31Код: Выделить всё
in r16,SPSR ori r16,(1<<SPI2X) out SPSR,r16
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
... не пользуюсь ни AVRStudio, ни WinAVR. Cмотрите справку по ключам компиляции ( .. или гуглите фразу "генерация листинга в WinAVR")gyparr писал(а):подскажите как создать этот файлик
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Вот так: А насколько благодарен?gyparr писал(а): Я не нашел такой штуки в авр студии, в кодевижн видел, но на данный момент квавр нету.. Если подскажите как создать этот файлик, буду очень благодарен!
$$$$$
В поисках истины человек развивается.
Re: Вопросы по С/С++ (СИ)
Добрый вечер... Подскажите пожалуйста, правильно ли производится опрос PC0 у Atmega8?
У меня ато работает только если ставлю 0х00, а мне надо опознавать высокий, а не низкий уровень.....
Код: Выделить всё
if ((PINC&0b00000001) == 0xff){ start = 1;}Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
if ((PINC&0b00000001) == 0x00){ start = 0; } // ноль
if ((PINC&0b00000001) != 0xff){ start = 1;} // единица
if ((PINC&0b00000001) == 0x01){ start = 1;} // единица
if ((PINC&0b00000001) == 0b00000001){ start = 1;} // единица
if ((PINC&0b00000001) == 1){ start = 1;} // единицаhttp://ru.wikipedia.org/wiki/%D0%91%D0% ... 0%B8%D0%B8
Re: Вопросы по С/С++ (СИ)
Спасибо огромное)) Дошло наконец-то. Никак от градуировки не отойду 
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
А просто написать нельзя?
Код: Выделить всё
if(PINC.0==0)...[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Вопросы по С/С++ (СИ)
Слишком просто
и ему там нужна была единица. Т.е. просто будет так:
Ну и это же фишка CV, поэтому с точки зрения переносимости между компиляторами...... (тут много букв и демагогии).
Код: Выделить всё
if(PINC.0==1)...- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Чего-то не могу догнать, как оно будет работать?hybroid писал(а):Код: Выделить всё
if ((PINC&0b00000001) != 0xff){ start = 1;} // единица
Ведь 0xFF != 0x01 && 0xFF != 0x00
I am DX168B and this is my favourite forum on internet!
Re: Вопросы по С/С++ (СИ)
Хм. Не будет оно работать.
Изначально в голове else if крутился после первого if'а, вот и получилось то, что получилось.
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А, ну теперь понятно.
А такая запись будет верна?
А такая запись будет верна?
Код: Выделить всё
if((PINC&(1<<PC0)) == 0x01){a=1;}
I am DX168B and this is my favourite forum on internet!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Будет, но только если PC0 = 0.


