о, мсье знает толк в извращениях!Apparatchik писал(а):Или писать всё в одну строку если уж так нужно каждый бит отдельноКод: Выделить всё
PORTA.3=0; PORTC.4=0; PORTC.5=0;...
CodeVision AVR в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
если вы ОКОНЧАТЕЛЬНО перешли на французский то называйте меня ситуаен ! что значит гражданин.
Будете проходить мимо- проходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
гражданином прокурор назовет 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):гражданином прокурор назовет
Зря Вы его так... Ув. Семенов М. обнаруживает хорошее знание классики ( "12 стульев" ), за что ему респект и пожелание так развить свой бузинес, чтоб смог открыть представительство в Минске, где я мог бы за вменяемую сумму зайчиков купить что-нить железное. Впрочем, скоро мы все будем в одном большом государстве, так что вопрос отпадет сам собой . Сорри, оффтоп, умолкаю.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
человек, знающий хорошо упомянутую классику, явно обладает отличным чувством юмора и, я уверен на 100%, совсем не обиделся на мою шуткуJack_A писал(а):Зря Вы его так... Ув. Семенов М. обнаруживает хорошее знание классики ( "12 стульев" )
классику и я неплохо знаю, и с ув. Семеновым М. не раз на форуме "пикрировались" цитатами к обоюдному удовольствию.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
"Золотой теленок" - http://az.lib.ru/i/ilfpetrov/text_0140.shtml- Честное слово, мосье Бендер!..
- Слушайте, Шура, если уж вы окончательно перешли на французский язык, то называйте меня не месье, а ситуайен, что значит - гражданин. Кстати, адрес вашего миллионера?
- Он живет в Черноморске.
- Ну, конечно, так и знал! Черноморск! Там даже в довоенное время человек с десятью тысячами назывался миллионером. А теперь... могу себе представить!
Будете проходить мимо- проходите!
Re: CodeVision AVR в вопросах и ответах
ARV, я не зря поставил вопрос, как мне записать это всё именно в 4 строчки,
Заметье, 4ре а не 6 или 8.
тоесть я прекрасно понимаю что каждый порт это 8бит, и в него если записать 11110000 это будет
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
Вопрос остаётся прежним, как? читать информацию из 8бит порта по такому-то адресу, в оперативку, там очищать значение, и записывать новое значение, и после писать обратно в 8бит порта?
я понимаю, на форуме сидят мего умные люди, для которых всё просто.
или например иди читай самоучитель и так далее. Написать 2 строчки кода и сказать человеку, как это делать я думаю не сложнее, чем совет, писать всё в одну строчку.
С уважением к вам всем!
Заметье, 4ре а не 6 или 8.
тоесть я прекрасно понимаю что каждый порт это 8бит, и в него если записать 11110000 это будет
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
Вопрос остаётся прежним, как? читать информацию из 8бит порта по такому-то адресу, в оперативку, там очищать значение, и записывать новое значение, и после писать обратно в 8бит порта?
я понимаю, на форуме сидят мего умные люди, для которых всё просто.
или например иди читай самоучитель и так далее. Написать 2 строчки кода и сказать человеку, как это делать я думаю не сложнее, чем совет, писать всё в одну строчку.
С уважением к вам всем!
Re: CodeVision AVR в вопросах и ответах
Warn писал(а): например иди читай самоучитель и так далее. Написать 2 строчки кода и сказать человеку, как это делать я думаю не сложнее,
А че не почитать то ? Например:
http://www.proavr.narod.ru/05.htm "чуток Си для микроконтроллеров"
этож не последняя ваша прога неверно. пригодится.
А написать вам так:
Код: Выделить всё
PORTA = 0b00110101; // единички и нули нужные вами остальные порты аналогично
Если надо обнулять биты не меняя другие биты порта ( регистра, переменной), то
Код: Выделить всё
PORTA &= ~( (1<<3) | (1<<6) ); // обнулить биты 3 и 6 в PORTA не меняя других бит.Если надо делать единичками - "Устанавливать" - биты не меняя другие биты порта, то
Код: Выделить всё
PORTA |= (1<<3) | (1<<6) ; // сделать "1" биты 3 и 6 в PORTA не меняя других бит.Будете проходить мимо- проходите!
Re: CodeVision AVR в вопросах и ответах
Человеческое спасибо, читал Лебедева, 237 страница, но там не написано таких простых вещей.
Спасибо! пишу программу дальше, использую оператор выбора, CVavr неплохо понимает тип данных char.
моя программа будет выводить текст на самодельную светодиодную матрицу, общение хочу сделать по txt, rxt. Но это пожже.
Спасибо!
Спасибо! пишу программу дальше, использую оператор выбора, CVavr неплохо понимает тип данных char.
моя программа будет выводить текст на самодельную светодиодную матрицу, общение хочу сделать по txt, rxt. Но это пожже.
Спасибо!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
я так и не понял, в чем сакральный смысл ИМЕННО ЧЕТЫРЕХ СТРОЧЕК? одной строкой не устраивало? или двумя?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Вот тут ув. ARV разясняет по поводу битов. Вот тоже маленький курс
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
задача упражнение 5 краткого курса по AVR программирование UART USART обмен данными - www.proavr.narod.ru/z5.htmWarn писал(а): общение хочу сделать по txt, rxt
ёуWarn писал(а):Спасибо!

Будете проходить мимо- проходите!
Re: CodeVision AVR в вопросах и ответах
Курсов масса, книг море - когдаж читатели подтянутся ????????????? 
Будете проходить мимо- проходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
radio-kot писал(а):Курсов масса, книг море - когдаж читатели подтянутся ?????????????
они не подтянутся, они отжимаются
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Знак четырех однако.ARV писал(а): в чем сакральный смысл ИМЕННО ЧЕТЫРЕХ СТРОЧЕК?
Будете проходить мимо- проходите!
Re:
[quote="ARV"]
typedef struct{
char flag; // признак "активности"
char cmd[]; // строка-команда
}t_search
и потом создаете массив таких структур с заданием каждому элементу массива flag=1 и cmd = "вашей строке".
Код:
t_search array[3] = {
{1,"RE"}, {1,"RU"}, {1,"ST"} // для команд RESET, RUN и STOP хватит анализа первых 2 символов
};
затем начинаете ждать символ. когда пришел символ - вы его сравниваете с первым символом команд во всем массиве, и устанавливаете flag=1 для тех элементов, в которых символы совпали.
Код:
array[i].flag = array[i].str[1] == ch;
/quote]
подскажите пож. в данном примере не опечатка? - в определении структуры char cmd[]; , а обращение идет к .str[1]
Спрашиваю не с целью выявить ошибки автора, а чтобы понять почему у меня не работает программа.
Сейчас пытаюсь повторить этот алгоритм, но не работает, т.к. при обращении к образцовому массиву команд, у меня почему то идет непонятный перебор данных.. например =
CNT_IN_SYMB=0;
ShowSYMBARR =CMD_ARRAY[i].cmd[CNT_IN_SYMB];
при значении i =0 , в ShowSYMBARR виден как и ожидается первый символ первой строки образцового массива
а при i=1 я ожидаю увидетьпервый символ второй строки массива, а почему то появляется следующий+1 из первой строки.
--
помогите пож. понять в чем ошибка.
массивы определены так
typedef struct
{
char flag; // счетчик совпадений
char flag_max; // max символов для сравнения
char cmd[]; // строка-команда {1,0x0d,0x0d,'О','К',0x0d}
}t_search;
static t_search CMD_ARRAY[5] =
{
{0,2,"OK\0\0\0"}, {0,5,"+CMTI"}, {0,5,"+CMGR"}, {0,5,"+CMGL"}, {0,5,"+CUSD"}
};
typedef struct{
char flag; // признак "активности"
char cmd[]; // строка-команда
}t_search
и потом создаете массив таких структур с заданием каждому элементу массива flag=1 и cmd = "вашей строке".
Код:
t_search array[3] = {
{1,"RE"}, {1,"RU"}, {1,"ST"} // для команд RESET, RUN и STOP хватит анализа первых 2 символов
};
затем начинаете ждать символ. когда пришел символ - вы его сравниваете с первым символом команд во всем массиве, и устанавливаете flag=1 для тех элементов, в которых символы совпали.
Код:
array[i].flag = array[i].str[1] == ch;
/quote]
подскажите пож. в данном примере не опечатка? - в определении структуры char cmd[]; , а обращение идет к .str[1]
Спрашиваю не с целью выявить ошибки автора, а чтобы понять почему у меня не работает программа.
Сейчас пытаюсь повторить этот алгоритм, но не работает, т.к. при обращении к образцовому массиву команд, у меня почему то идет непонятный перебор данных.. например =
CNT_IN_SYMB=0;
ShowSYMBARR =CMD_ARRAY[i].cmd[CNT_IN_SYMB];
при значении i =0 , в ShowSYMBARR виден как и ожидается первый символ первой строки образцового массива
а при i=1 я ожидаю увидетьпервый символ второй строки массива, а почему то появляется следующий+1 из первой строки.
--
помогите пож. понять в чем ошибка.
массивы определены так
typedef struct
{
char flag; // счетчик совпадений
char flag_max; // max символов для сравнения
char cmd[]; // строка-команда {1,0x0d,0x0d,'О','К',0x0d}
}t_search;
static t_search CMD_ARRAY[5] =
{
{0,2,"OK\0\0\0"}, {0,5,"+CMTI"}, {0,5,"+CMGR"}, {0,5,"+CMGL"}, {0,5,"+CUSD"}
};
Последний раз редактировалось igor-x Вс апр 10, 2011 13:54:57, всего редактировалось 1 раз.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ну ясен пень, str написано в запарке, cmd там быть должно. и надо в структуре указать cmd[3], чтобы зарезервировать место под строку.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):ну ясен пень, str написано в запарке, cmd там быть должно. и надо в структуре указать cmd[3], чтобы зарезервировать место под строку.
ага. спасибо. - я то забыл задать размер строки в массиве.......
Re: CodeVision AVR в вопросах и ответах
Подскажи, это глюк компилятора, глюк языка Си, или так и должно быть.
Есть у меня 2 массива, допустим mass1 и mass2 на 5 элементов каждый. они объявлены друг за другом
Так вот, если в программе ошибочно обратиться к шестому элементу массива mass1, то он "без зазрения совести" принимает значение первого элемента массива mass2. Очень трудно уловимый глюк был..... Подскажите, есть ли способ как то обезопасить себя от таких случаев в будущем??
ps. Один из способов - писать программы без ошибок - знаю,
еще есть варианты 
Есть у меня 2 массива, допустим mass1 и mass2 на 5 элементов каждый. они объявлены друг за другом
Код: Выделить всё
unsigned char mass1 [5] = {0,1,2,3,4},
mass2 [5] = {5,6,7,8,9}:ps. Один из способов - писать программы без ошибок - знаю,
KIT
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: CodeVision AVR в вопросах и ответах
... так и должно быть - за выходом за границы массива следит сам программист.O-LED писал(а): ..это глюк компилятора, глюк языка Си, или так и должно быть.
... можно поступить, как, например, в Паскале - 1-ый элемент хранит размер массиваO-LED писал(а):Подскажите, есть ли способ как то обезопасить себя от таких случаев в будущем??