roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 23:56

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вопросы начинающего по книге Мортона
СообщениеДобавлено: 03 фев 2007, 17:33 
Не в сети

Зарегистрирован: 03 фев 2007, 17:22
Сообщения: 10
Откуда: АР Крым. Севастополь
Доброго дня!

Придеться продублировать сообщение на этом форуме, так как на другом решить мою проблемы пока так и не смогли.

Начал изучение с книги "Мортон Д. - Микроконтроллеры AVR. Вводный курс."
Впечатление от этой книги было крайне положительное, пока не остановился на одном простом месте, на котором окончательно запутался..
Собственно, причина:

Во вложении простейшая схема(из книги), на которой вывод PB0 отвечает за включение/выключение светодиода, а вход PD0 - за проверку нажатия кнопки. На PD0 устанавливается подтяжка. С PB0 вроде бы все понятно: если подана лог.1, то светодиод не горит, если же на PB0 подать лог.0, то идет ток и светодиод загорается. А вот как быть с PD0 и кнопкой? В книге поданы, на мой взгляд, два абсолютно противоположных примера, хотя автор говорит, что они действуют одинаково.
Вот ключевые фрагменты примеров.
Первый:

Start:
sbis PinD, 0    ; Проверяем, нажата ли кнопка
rjmp LEDoff
sbi PortB, 0    ; Включаем СИД
rjmp Start

LEDoff:
cbi PortB, 0    ; Выключаем СИД
rjmp Start

Прочтя этот код я уже несколько удивлен: почему СИД в этой программе включается и выключается с точностью до наоборот моим предположениям?
Второй пример, по-моему, противоречит первому. Он делает то же самое, что и первый, но не использует блоки условий. Вот он:

Start:
in temp, PinD    ; Считываем состояние кнопки
out PortB, temp    ; Изменяем состояние СИД
rjmp Start

Я не понимаю как отражается нажатие кнопки на вход PD0. Почему когда кнопка не нажата на входе PD0 должна быть лог.1, ведь в этот момент ножка ни к чему не подключена? Сначала думал, что это из-за подтяжки, но симулятор в AVR Studio показывает, что там 0.

В общем, эта проблема не дает мне перейти к практике. Помогите разобраться.

Заранее благодарен.


Вложения:
Комментарий к файлу: Схема
circ.JPG
circ.JPG [ 15.16 КиБ | Просмотров: 2338 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 18:09 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Я тебе советую мой курс и контроллер ATmega16  (ну минимум Мега8)

Книга эта не единственная - книги по АВР есть в курсе. И конечно я советую тебе Си как простой путь для начинающего.

Советую  от PD0 поставить резистор 300 Ом - это не даст сжеч ножку при ошибках в программе.

RESET - нужно заземлить конденсатором 0.01-0.1 мкФ  и соединить резистором 10 ком с питанием.


Последний раз редактировалось avr123.nm.ru 03 фев 2007, 18:17, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы начинающего по книге Мортона
СообщениеДобавлено: 03 фев 2007, 18:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Производитель снял этот мк с производства

http://www.atmel.com/dyn/products/produ ... rt_id=1992

AT90S1200 Not recommended for new design: replaced by ATtiny2313


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы начинающего по книге Мортона
СообщениеДобавлено: 03 фев 2007, 18:22 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кристиан писал(а):
Я не понимаю как отражается нажатие кнопки на вход PD0. Почему когда кнопка не нажата на входе PD0 должна быть лог.1, ведь в этот момент ножка ни к чему не подключена?

Сначала думал, что это из-за подтяжки, но симулятор в AVR Studio показывает, что там 0.


Используйте нормальный симулятор VMLAB  -  вот  
http://avr123.nm.ru/img/11_full.png

Именно подтяжка создает высокий уровень  
на выходе при отпущеной кнопке.

Возможные состояния ножки МК - таблица - avr123.nm.ru/02.htm

При нажатии кнопки на PD0  будет  лог "0"

Как МК определяет уровень на ножке рассказано на:
avr123.nm.ru/02.htm


Последний раз редактировалось avr123.nm.ru 03 фев 2007, 18:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы начинающего по книге Мортона
СообщениеДобавлено: 03 фев 2007, 18:30 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кристиан писал(а):
Первый:

Start:
sbis PinD, 0    ; Проверяем, нажата ли кнопка
; если на PD0  есть "1" то перескочить через следующ инструкцию

rjmp LEDoff

sbi PortB, 0    ; Включаем СИД

rjmp Start  ; начать сначала

LEDoff:
cbi PortB, 0    ; Выключаем СИД
rjmp Start

Прочтя этот код я уже несколько удивлен: почему СИД в этой программе включается и выключается с точностью до наоборот моим предположениям?


т.е. при отпущеной кнопке светодиод не должен  гореть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросы начинающего по книге Мортона
СообщениеДобавлено: 03 фев 2007, 18:36 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кристиан писал(а):
Почему когда кнопка не нажата на входе PD0 должна быть лог.1, ведь в этот момент ножка ни к чему не подключена?


она подключена подтяжкой - т.е. как бы резистором 40 ком к питанию МК  -  вот подробней  avr123.nm.ru/02.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 19:16 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
на правах начинающих посоветуюю чтото посвежее взять
мортон - 2002 год, это не современно.

также курс 123avr может очень сильно помочь! там ответы на все глупые вопросы которые возникнут=)

AVR студия для начинающего не то что требуется.
CodeVisionAVR или WinAVR гораздо удобней для начала
также, что важно, много проектов для начинающих доступны именно для этих компиляторов.


вобще рекомендую обзавестись несколькими книжками
потому что сам уже заметил у всех авторов свой подход

ассемблер это конечно хорошо но лучше начинать с СИ
гораздо практичней  и доступней для понимания

также присоединяюсь к совету 123авр что лучше сразу взять "нормальный" контроллер с аппаратными UART, ШИМами и АЦП - ЦАП

сам на  эти грабли наступил, хотел чё попроще и стал 2313 штудировать. потом когда дошло дела до реальных прототипов понял что зря не начал с меги.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 20:25 
Не в сети

Зарегистрирован: 03 фев 2007, 17:22
Сообщения: 10
Откуда: АР Крым. Севастополь
Спасибо за ответы.

Как раз ATmega16 и выбрал для начала, просто пример был для AT90S1200.

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

arvr123.nm.ru, твой курс я почитываю, но хочу изучать МК параллельно вместе с книгой Мортона.

Цитата:
Start:
sbis PinD, 0    ; Проверяем, нажата ли кнопка
; если на PD0  есть "1" то перескочить через следующ инструкцию

rjmp LEDoff

sbi PortB, 0    ; Включаем СИД

rjmp Start  ; начать сначала

LEDoff:
cbi PortB, 0    ; Выключаем СИД
rjmp Start

Почему в этой программе включение диода производится инструкцией sbi PortB, 0? Ведь если установить PB0 в "1", тогда не будет разности потенциалов, соответственно и тока. Выключение диода получается тогда тоже с точностью до наоборот.

Я так понял, что автор в нескольких раз ошибся, а потом и ошиблись переводчики этой книги, написав неправильные комментарии. Или все-таки нет? :)
Помогите в этом разобраться, чтобы я мог двигаться дальше.

Знаю, книга не новая, но до того как я наткнулся на эти неточности мне она казалась интересной и понятной.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 21:22 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кристиан писал(а):
Почему в этой программе включение диода производится инструкцией sbi PortB, 0?

Ведь если установить PB0 в "1", тогда не будет разности потенциалов, соответственно и тока. Выключение диода получается тогда тоже с точностью до наоборот.

Я так понял, что автор в нескольких раз ошибся, а потом и ошиблись переводчики этой книги, написав неправильные комментарии. Или все-таки нет? :)


Молодецю Ты сам в это разобрался.  Я специально не стал этого писать выше а повторил то что было в комментариях.

Если ты сам это понял то теперь врядли забудешь.  (макаренко типа)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 21:56 
Не в сети

Зарегистрирован: 03 фев 2007, 17:22
Сообщения: 10
Откуда: АР Крым. Севастополь
Тогда все проясняется. Вопрос решен.
Спасибо, avr123.nm.ru.

Теперь вот думаю переходить к практике. Для начала проверить эту схему на живом МК.
Так как я раньше никогда не занимался цифровой электроникой, по мои прикидкам необходимо купить следующее оборудование:

1) Паяльник
Читал, что нужен на 25-30 Ватт. Особая ли разница между этими 25 и 30?
Некоторые паяльники имеют возможность подключать заземление. Так вот, стоит ли искать именно такой?

2) Макетная плата
В магазинах есть много разных моделей, все по размеру примерно одинаковые. Подойдет любая?

3) Микроконтроллер
Решил брать ATmega16
+ сокет под него

4) Кварц
Насколько я понял, он обязателен для создания программатора для меги. Какой брать?

Вроде бы из ключевых элементов ничего не забыл...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2007, 22:20 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кристиан писал(а):
Паяльник

Макетная плата

ATmega16 + сокет под него


Там все ЭТО описано - avr123.nm.ru/06.htm

Кристиан писал(а):
Кварц

Насколько я понял, он обязателен для создания программатора для меги.

Какой брать?



для программирования кварц не обязателен.

все что нужно для прошивки МК на стр.  avr123.nm.ru/07.htm

=====

А кварц лучше брать  7.3728 MHz  (или 3.6864 MHz  или  14.7456 MHz)
из таблицы:  "Examples of UBRR Settings for Commonly Used Oscillator Frequencies"

Такая чатота кварцев позволяет работать на
стандартных компьютерных скоростях COM.

Советую сделать адаптер для связи с ПК по - avr123.nm.ru/z4.htm - на этой же странице сказано что ПК это прекрасный инструмент для отладки.

=========

Для быстрого старта на Меге16 в CVAVR и VMLAB есть мой шаблон

http://avr123.nm.ru/codevisionavr_vmlab.rar

о нём написано на http://avr123.nm.ru/04.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2007, 16:53 
Не в сети

Зарегистрирован: 03 фев 2007, 17:22
Сообщения: 10
Откуда: АР Крым. Севастополь
Еще такой вопрос: зачем в программаторе(даже самом простом) используют стабилизатор 78L05 ? Это действительно оправдано?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2007, 17:37 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
в самом простом не используется=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2007, 18:15 
Не в сети

Зарегистрирован: 03 фев 2007, 17:22
Сообщения: 10
Откуда: АР Крым. Севастополь
Ну а для чего он тогда нужен, если без него можно обойтись?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2007, 18:32 
Не в сети
Аватара пользователя

Зарегистрирован: 28 мар 2006, 17:28
Сообщения: 486
Откуда: Пенза
Вы же пишете что читали курс???
Там на седьмой странице (кажется давно не читал) описан простейший (и по-этому безглючный) програматор я сам им пользуюсь в нем только четыре резистора и нет ни каких стабилизаторов :wink:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO