Т.к. страницы долго грузятся, не смотрел все страницы.
В CodeVisionAVR пишется текст программы?
на каком языке, Ассемблер???
П.С. не надо смеяться, я только учусь...
_________________ Не умеешь - не берись, но не взявшись не научишься...
УПС ARV, спасибо, что обратили внимание, руки что-то не то печатают.. Константу-то (0b00010000) я написал верно. Естественно, если сделать "ИЛИ" это приведет к установке интересующего нас бита (кстати это и есть способ установки бита), а вот "И" с "1" в интересующем разряде даст "1", если бит был установлен и "0", если нет.
У себя в посте тоже поправил, чтобы не смущать никого.
Alexeus писал(а):
наверное еще условие нужно, равно, не равно...
Нет, все верно. Результат "&" даст 0 или 0b00010000, этого достаточно для работы if'а
_________________ Оптимизм х (Опыт + Знания) = const
ARV: наверное еще условие нужно, равно, не равно...
т.е. так?
Код:
if ((BYTE[1] &= 0b00010000)!=0) {PORTA.3=1;} else {...}
Не обязательно. В С условие считается истинным, если выражение описывающее условие (т. е. находящееся в скобках) не 0, т. е.
Код:
if ((BYTE[1] & 0b00010000)!=0)
и
Код:
if (BYTE[1] & 0b00010000)
эквивалентны, впрочем в предыдущем посте Вам уже ответили. Не знаю, что Вы хотели сделать, но на всякий случай напоминаю, этот оператор
Код:
if ((BYTE[1] &= 0b00010000)!=0)
, кроме проверки на 0 результата операции лог И элемента массива BYTE[1] и маски 0b00010000, еще и запишет этот результат в элемент BYTE[1], т. е. после выполнения оператора if, в BYTE[1] будет результат операции BYTE[1] & 0b00010000
Зарегистрирован: Вс мар 04, 2007 01:17:12 Сообщений: 690
Рейтинг сообщения:0
EEprom. AVR.
есть специальная команда в ЦвАВР записи eeprom а для чего "*"?:
Код:
eeprom int *peremennaya=0;
Мне нужно что бы в прерывании происходил цикл записи массива в еепром. С каждым прерыванием происходило дозаписывание к предыдущей записи. т.е. инкреминировался адрес еепром. И после выключения и последующего включения так же происходило дозаписывание, а не с начального адреса писалось, затирая предыдущие данные. Как так можно сделать?
в прерывании запрещу глобально прерывания, поставлю задержку по флагу окончания записи в еепром и после разрешу глобально прерывания, reti.
во-первых, в обработчике прерывания и так глобально запрещены прерывания (извините за тавтологию), во-вторых, задержки в обработчике прерываний - очень порочная практика, напоритесь на вилы (не сейчас, так потом).
Цитата:
я понимаю что это инкременирование адреса "*", но как оно работает?
не хотите попробовать изучить основы языка Си, прежде чем браться за программирование? * - это символ указателя, т.е. ваша переменная будет хранить адрес тех данных, с которыми вы собрались работать. int *ptr - указатель ptr на данные типа int, char *pchar - указатель pchar на данные типа char и т.д. инкрементирование указателя делается так же, как инкрементирование переменной: ptr++ или pchar++. а когда указатель предваряется звездочкой - это означает, что мы работаем с теми данными, на которые он указует. учтите, что если изначально ptr == pchar, то ptr++ уже не будет равно pchar++ когда и как вы будете этот указатель изменять - дело ваше, сама программа этого за вас делать не будет.
Цитата:
после выключения и включения мк будет дозаписывать или сначала начнет?
МК за вас ничего делать не будет - что вы напишите в программе, то и будет делаться по включению
Цитата:
что будет когда до последнего адреса дойдет?
и в третий раз скажу: будет то, что вы напишите. а если ничего не напишите - то пойдет запись с начала памяти.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Ну вот появилось окно, в котором я ничего не могу вписать!
И что это еще за штука слева, сам параметры МК, частота кварца и т.д.???
Как мне в это окно вписать чтонибудь?
Под каждый компилятор свой программатор?
Как скомпилировать программу в Хекс файл? или в Хекс не компилирует?
Прошу сильно не царапать, если что то не так, я просто недопонимаю и учусь на своих ошибках.
_________________ Не умеешь - не берись, но не взявшись не научишься...
по ЕЕПРОМ- 100 000 перезаписей не такая уж и маленькая цифра, хотя если случайно попадет в цикл под полную частоту кварца... ее хватит на несколько секунд.
... погорячился. минут на 15 хватит при идеальных условиях, при повышенной температуре, пониженной хватит на еще меньшее кол-во циклов перезаписи.
Последний раз редактировалось Alexeus Вт мар 17, 2009 00:26:47, всего редактировалось 1 раз.
по ЕЕПРОМ- 100 000 перезаписей не такая уж и маленькая цифра, хотя если случайно попадет в цикл под полную частоту кварца... ее хватит на несколько секунд.
Вообще-то запись еепром в AVR длится несколько милисекунд, и Ваши расчеты вряд-ли верны.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения