Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср авг 06, 2025 20:44:07

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 33, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 14, 2009 19:58:33 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Например, можно сделать логическое "И" с числом 0b00010000 и проверить результат: если == 0 - бит сброшен, если != 0 - бит установлен.

_________________
Оптимизм х (Опыт + Знания) = const


Последний раз редактировалось Aheir Вс мар 15, 2009 01:03:01, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 14, 2009 22:39:40 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Т.к. страницы долго грузятся, не смотрел все страницы.
В CodeVisionAVR пишется текст программы?
на каком языке, Ассемблер???
П.С. не надо смеяться, я только учусь...

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 14, 2009 23:07:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Aheir писал(а):
Например, можно сделать логическое или с числом 0b00010000 и проверить результат: если == 0 - бит сброшен, если != 0 - бит установлен.
категорически неверно!!! нужно делать логическое И!!!!
Код:
if(somebyte & 0b00010000){
   // обработка, если бит стоит
} else {
   // обработка, если бит сброшен
}

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 00:07:19 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
ARV: наверное еще условие нужно, равно, не равно...

т.е. так?
Код:

if ((BYTE[1] &= 0b00010000)!=0)
{PORTA.3=1;}
else {...}



Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 01:01:55 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
УПС :oops: ARV, спасибо, что обратили внимание, руки что-то не то печатают.. Константу-то (0b00010000) я написал верно. :) Естественно, если сделать "ИЛИ" это приведет к установке интересующего нас бита (кстати это и есть способ установки бита), а вот "И" с "1" в интересующем разряде даст "1", если бит был установлен и "0", если нет.

У себя в посте тоже поправил, чтобы не смущать никого.

Alexeus писал(а):
наверное еще условие нужно, равно, не равно...


Нет, все верно. Результат "&" даст 0 или 0b00010000, этого достаточно для работы if'а

_________________
Оптимизм х (Опыт + Знания) = const


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 02:32:36 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Alexeus писал(а):
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


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 03:51:12 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
ээ.. мине не надо записывать :)
тогда уж сначала присвою temp=BYTE[1] а затем проверю темп, пусть перезаписывает...
Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 15, 2009 17:25:40 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Alexeus писал(а):
ээ.. мине не надо записывать :)
тогда уж сначала присвою temp=BYTE[1] а затем проверю темп, пусть перезаписывает...
Спасибо.

Вы не поняли, можно проверять так
Код:
if (BYTE[1] &0b00010000)

тогда ничего в BYTE[1] не запишется, просто будет произведена проверка
у Вас же вот так
Код:
if (BYTE[1] &= 0b00010000)

знак равно выполнит операцию присваивания и в BYTE[1] запишется новое значение.
Еще раз внимательно посмотрите в чем разница приведенных строчек.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 16:07:27 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
EEprom. AVR.

есть специальная команда в ЦвАВР записи eeprom а для чего "*"?:

Код:
eeprom int *peremennaya=0;


Мне нужно что бы в прерывании происходил цикл записи массива в еепром. С каждым прерыванием происходило дозаписывание к предыдущей записи. т.е. инкреминировался адрес еепром. И после выключения и последующего включения так же происходило дозаписывание, а не с начального адреса писалось, затирая предыдущие данные. Как так можно сделать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 16:20:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
так и делать - через указатель (та самая *). только вы уверены, что между прерываниями EEPROM успеет дописаться? это небыстрая операция...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 16:23:42 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
в прерывании запрещу глобально прерывания, поставлю задержку по флагу окончания записи в еепром и после разрешу глобально прерывания, reti.

я понимаю что это инкременирование адреса "*", но как оно работает?

после выключения и включения мк будет дозаписывать или сначала начнет?

что будет когда до последнего адреса дойдет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:01:21 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Как создать новый проект, когда я только зашел в программу?

А почему нельзя компилировать отдельный файл в отличие от нового проекта?

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:08:16 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Alexeus писал(а):
после выключения и включения мк будет дозаписывать или сначала начнет?

что будет когда до последнего адреса дойдет?


Можно хранить в какой-нибудт дополнительной ячейке указатель на элемент массива (номер последнего обновленного элемента массива)

Stalker46 писал(а):
Как создать новый проект, когда я только зашел в программу?


Через меню File->New->Project, например, или ткнуть на значек нового документа на панели инстркментов в левом верхнем углу.

_________________
Оптимизм х (Опыт + Знания) = const


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:31:26 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alexeus писал(а):
в прерывании запрещу глобально прерывания, поставлю задержку по флагу окончания записи в еепром и после разрешу глобально прерывания, reti.
во-первых, в обработчике прерывания и так глобально запрещены прерывания (извините за тавтологию), во-вторых, задержки в обработчике прерываний - очень порочная практика, напоритесь на вилы (не сейчас, так потом).

Цитата:
я понимаю что это инкременирование адреса "*", но как оно работает?
не хотите попробовать изучить основы языка Си, прежде чем браться за программирование? * - это символ указателя, т.е. ваша переменная будет хранить адрес тех данных, с которыми вы собрались работать. int *ptr - указатель ptr на данные типа int, char *pchar - указатель pchar на данные типа char и т.д. инкрементирование указателя делается так же, как инкрементирование переменной: ptr++ или pchar++. а когда указатель предваряется звездочкой - это означает, что мы работаем с теми данными, на которые он указует.
учтите, что если изначально ptr == pchar, то ptr++ уже не будет равно pchar++
когда и как вы будете этот указатель изменять - дело ваше, сама программа этого за вас делать не будет.

Цитата:
после выключения и включения мк будет дозаписывать или сначала начнет?
МК за вас ничего делать не будет - что вы напишите в программе, то и будет делаться по включению

Цитата:
что будет когда до последнего адреса дойдет?
и в третий раз скажу: будет то, что вы напишите. а если ничего не напишите - то пойдет запись с начала памяти.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:38:41 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
ух, лучше чем в книжке объяснили :) пасиб

/где то видел, что в прерывании срабатывало прерывание, в том еще... пока не переполнялся стек. отсюда и подумал, что запрещать нужно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:43:28 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 16, 2009 21:40:57
Сообщений: 828
Рейтинг сообщения: 0
Подскажите где скачать CVAVR полный ? Где почитать как с ним работать ? Есть 2 недели свободного времени, хочу поучится программировать AVR.

Alexeus писал(а):
Мне нужно что бы в прерывании происходил цикл записи массива в еепром. С каждым прерыванием происходило дозаписывание к предыдущей записи.


На обложке даташита указана не очень большая цифра перезаписей ЕЕПРОМ. На долго ее вам хватит ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 21:53:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alexeus писал(а):
где то видел, что в прерывании срабатывало прерывание, в том еще... пока не переполнялся стек. отсюда и подумал, что запрещать нужно.
это может происходить как раз если прерывания разрешать в обработчике (для AVR-архитектуры). а для других архитектур это нормальное явление...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 22:36:06 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
Ну вот появилось окно, в котором я ничего не могу вписать!
И что это еще за штука слева, сам параметры МК, частота кварца и т.д.???

Как мне в это окно вписать чтонибудь?
Под каждый компилятор свой программатор?
Как скомпилировать программу в Хекс файл? или в Хекс не компилирует?
Прошу сильно не царапать, если что то не так, я просто недопонимаю и учусь на своих ошибках.

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 22:57:03 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
ikarab писал(а):
Подскажите где скачать CVAVR полный ? Где почитать как с ним работать ?

На обложке даташита указана не очень большая цифра перезаписей ЕЕПРОМ. На долго ее вам хватит ?


http://easyelectronics.ru/category/knigi тут есть офигенная книженция по CvAVR, но страницы многие в зеркальном отображении :D

по ЕЕПРОМ- 100 000 перезаписей не такая уж и маленькая цифра, хотя если случайно попадет в цикл под полную частоту кварца... ее хватит на несколько секунд.

... погорячился. минут на 15 хватит при идеальных условиях, при повышенной температуре, пониженной хватит на еще меньшее кол-во циклов перезаписи.


Последний раз редактировалось Alexeus Вт мар 17, 2009 00:26:47, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 16, 2009 23:21:36 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Alexeus писал(а):
по ЕЕПРОМ- 100 000 перезаписей не такая уж и маленькая цифра, хотя если случайно попадет в цикл под полную частоту кварца... ее хватит на несколько секунд.

Вообще-то запись еепром в AVR длится несколько милисекунд, и Ваши расчеты вряд-ли верны.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 33, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y