termostat: Все сообщения за 5 Июля 2005 года

 
ПнВтСрЧтПтСбВс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

termostat

аксакал

Radiotehnik - на первой странице курса я прошу обязательно 1 раз прочитать весь курс, запомнить его наизуть за раз не удастся и это не нужно, но еслиб ты прочитал курс 1 раз то наверняка бы вспомнил что "гдето в курсе" есть ответы на ВСЕ твои вопросы!


Radiotehnik > Глянул задачу №1 и появился вопрос: while(!(TIFR&0x02h)).
Что означает значёк & - ведь по идее это логическое И. Зачем он здесь нужен..
 


В задаче 1 курса, внизу КРУПНО сказано:

"Очень важно! Битовые операции!

.... Вы должны уметь эффективно управлять не целым портом, регистром, а отдельными битами!"
 


Значит нужно заглянуть на стр. 5 курса в руководство по Си и прочитать раздел:

1.3.9. Поразрядные операции
1.3.10. Логические операции

Вот еще в задаче 4:

code text
  1. low_result=(temp & 0x00FF);
  2.  
  3. // уничтожили старшие 8 бит и
  4. // получили младший байт результата


pokos > Чтобы из всего регистра выделить единственный бит.
 


pokos - тебе как "старослужащему" - ДВА за неправильный ответ и ввод в заблуждение "новобранцев" :-)

code text
  1. (TIFR & 0x02)


Означает: Обнулить все биты регистра TIFR за исключением бита_1

После этой операции значение в скобках будет равно 0 или 2

Что бы "выделить этот бит" (как сказал pokos) нужно сделать сдвиг
того что в скобках вправо, чтоб этот бит попал в позицию бит_0

code text
  1. ((TIFR & 0x02) >> 1)


После этой операции значение во внешних скобках будет равно 0 или 1 и это есть значение бит_1 в регистре TIFR


Radiotehnik > 0x02h
 


x - латинская буква, только h не надо! Это ты сам дописал, в курсе так - 0x02

Не для компилятора есть такая форма записи 02h или 02H

h это первая буква англ. слова означающего 16-тиричн.


Radiotehnik > в задаче №8 нога 22 - это AGND (земля опорного напряжения АЦП? так?). А если мне АЦП не нужен, можно этот вывод не заземлять?
 


нужно заземлять и питание на АЦП нужно подавать даже если он не используется.


Radiotehnik >
А максимальный входной ток чему равен? Что-то я не нашёл.
 


По моему 40-50 мА, старайся не пропускать ток через ногу более 20 мА, и помоему есть ограничение на суммарное потребление всего порта - ищи в ДШ.


Radiotehnik> зачем в начале программы перечислять используемые функции, мы же ведь их потом всё равно описываем.
 


Рассказано в задачах 1 и 4
Это сообщение редактировалось 05.07.2005 в 14:29

termostat

аксакал

Radiotehnik > в задаче №8 нога 22 - это AGND (земля опорного напряжения АЦП? так?). А если мне АЦП не нужен, можно этот вывод не заземлять?
 


нужно заземлять и питание на АЦП нужно подавать даже если он не используется.


Radiotehnik >
А максимальный входной ток чему равен? Что-то я не нашёл.
 


По моему 40-50 мА, старайся не пропускать ток через ногу более 20 мА, и помоему есть ограничение на суммарное потребление всего порта - ищи в ДШ.


Radiotehnik> зачем в начале программы перечислять используемые функции, мы же ведь их потом всё равно описываем.
 


Рассказано в задачах 1 и 4

termostat

аксакал

pokos> Это с каких пор биты TIFR стали обнуляться при чтении?
 


Я написал выражение на Си в котором не только чтение
регистра, а вопрос изначально был про - &

Обнуление битов прочитаного из TIFR происходит не при его чтении!

А при выполнении этого: & 0x02

за исключением бита_1 - его значение не меняется.

речь идет о результате всей операции, т.е. о том что будет в скобках.

Значение в регистре МК TIFR не меняется, так как нет операции записи в регистр.

code text
  1. (TIFR & 0x02)



pokos> Враки. Чтобы выделить, ничего сдвигать не надо.
 


Я понимаю так: "выделить бит" означает получить его значение.
Для этого нужен сдвиг если это не бит_0.

pokos> Более того, while будет правильно работать без всякого сдвига.
Ещё раз поясняю, в данном случае в этом нет никакой необходимости.
 


Конечно будет работать без здвига, поэтому этого сдвига и НЕТ в задаче 1 курса. Только и бит_1 там не выделяется.

А while будет правильно работать потому что "истино" это не ноль. Поэтому число 2 нас устроит и выделять бит нет необходимости.

termostat

аксакал


pokos> Всётки, мне кажется, что обнуление регистра и прочитанного из регистра - существенно разные вещи.
 


Да ты прав - это разные вещи.

pokos> А это кто написал:

"(TIFR & 0x02)
Означает: Обнулить все биты регистра TIFR за исключением бита_1"???
 


Я написал. Хотел описать процесс вычисления значения в скобках.

Вот так будет однозначней:

чтобы вычислить значение в скобках нужно "Обнулить все биты в числе прочитанном из регистра TIFR, а бит_1 не менять"



termostat

аксакал

Yuran >
решил проитегрить всё на одной плате
 


Наконец то "достаточно одной платы". Надеюсь она будет достаточно узкая чтоб твои ракеты были ближе к классике. Можно компоненты с двух сторон разместить.

Yuran >
и вывести через клёмники
 


По моему клемники не удобно и места много занимают. Лучше припаяные провода вывести с подробными метками-наклейками - не перепутаешь. Соединять с ответными проводами скруткой - это очень надежно.

Yuran >
кто посоветует полевые транзисторы с изолированным затвором, желательно для поверхностного монтажа ампер на 30-50
 


мосфеты: IRLxxxx на irf.ru или на rel.ru





А с изолированым затвором это по моему биполярные - IGBT, или не только?

termostat

аксакал

А не хочешь готовой "осью" воспользоваться?

1) FreeRTOS.org

2) или крякнутой SALVO




поддержка SALVO встроена в компилятор ICC.

3) или uCOS - в 16-й будке помню лежала:

log ru_embedded16

pass sobaka

на Yahoo! Russia


А вот кстати DP1203 у меня на макетке под управлением ATmega64 - "ног" завались! И запаял его 30 ватным паяльником на самодельную плату.

dp1203_mega64.jpg (скачать) [1072x577, 100 кБ]
 
 
Это сообщение редактировалось 06.07.2005 в 10:30

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru