roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 май 2025, 10:55

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Программирование на си для Avr
СообщениеДобавлено: 12 мар 2006, 15:43 
Не в сети

Зарегистрирован: 09 июн 2005, 19:49
Сообщения: 303
Здраствуйте,
вот собрал все что надо, схему спаял, вроде компилятор работате нормально.

есть проблема, я сам умю проргаммировать на си и си++ , но у меня проблемы с программирование конкректно для авр, т.е я не могу найти учебника, или справочника, где бы было расписано , че за команда и для чего нужна. есть примеры кода, но в одном порт для вывода обнулятеся OxFFFF а в другом 0x0000 .

работу таймера вообще понимаю. че за

TCCR1B = 0x00;          // Stop Timer1
       
TCNT1H = 0x00;          // Clear Timer1
TCNT1L = 0x00;

как запустить таймер, как он изменяется , как вообще с ним работать?

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

компилятор ICC

РС! авр123 , не шли меня в свой курс, от цветного текста и частых повторений у меня болит голова, и создается впечатление что я уволень, каторый ничего не понимает


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

Зарегистрирован: 26 фев 2006, 15:21
Сообщения: 400
Откуда: Омск
Насчет того, что где-то что-то обнуляеся,- немогу сказать(ни вижу ни первого ни второго кода).
А про таймеры скажу немного.
TCCR1B = 0x00;          // Stop Timer1
Это регистр, который управляет таймером (запуск и остановка)
если он очищен (0), то таймер остановлен. Если в него записать, например, 1,- то он будет тикать с частотой генератора. Но можно и с делителем.

В регистр TCNT1 можно записать число, с которого он начинает считать. Зачастую его просто обнуляют перед стартом.
Также из него можно считать чило, до которого сейчас досчитал Т/С1.

Для примера приведу решение задержки с использованием т/с1:

void delay(unsigned int t)
{
TCNT1=0;//начало счета с нуля
TCCR1B=1;//запускаем таймер с частотой такт ген
while(TCNT1<=t)// сравниваемтекущее значение таймера с требуемым
{}
TCCR1B=0;//останавливаем таймер
}

З.Ы. Для расширения кругозора Таймер и Счетчик разные понятия. Счетчик считает внешние тактовые импульсы, а Таймер  от внутреннего генератора.


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

Зарегистрирован: 09 июн 2005, 19:49
Сообщения: 303
так... а можешь в кратсе описать работу компаратора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование на си для Avr
СообщениеДобавлено: 12 мар 2006, 22:43 
Не в сети
отсылающий читать курс
Аватара пользователя

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

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


посмотри раздел форума - микроконтроллеры.

и попробуй мой курс - AVR для начинающих.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 мар 2006, 13:01 
Не в сети

Зарегистрирован: 26 фев 2006, 15:21
Сообщения: 400
Откуда: Омск
Аналоговый компаратор  сравнивает входные  напряжение на  положительном входе AIN0 и отрицательном входе AIN1. Когда напряжение на положительном входе больше напряжения на отрицательном, устанавливается бит ACO (Analog Comparator Output) регистра ACSR.
В краце это все.  :)
Более подробно узнать о назначении регистра ACSR можно, например, в дэйтешите а контроллер.


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

Зарегистрирован: 09 июн 2005, 19:49
Сообщения: 303
уже распечатал, смотрю.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 мар 2006, 16:34 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Johnny Bravo писал(а):
Аналоговый компаратор  сравнивает входные  напряжение на  положительном входе AIN0 и отрицательном входе AIN1. Когда напряжение на положительном входе больше напряжения на отрицательном, устанавливается бит ACO (Analog Comparator Output) регистра ACSR.


причем увидеть "осцилограмму" состояния этого бита - т.е. выхода компаратора - можно только в симуляторе VMLAB - см. http://avr123.nm.ru/04.htm


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

Зарегистрирован: 26 фев 2006, 15:21
Сообщения: 400
Откуда: Омск
А если к одном из портов подключить ряд светодиодов и пульнуть туды весь ентот регистр... :D

avr123.nm.ru писал(а):
Ребята! ТВОРЧЕСТВО включайте...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 май 2006, 17:54 
Не в сети

Зарегистрирован: 25 май 2006, 17:39
Сообщения: 83
Откуда: Мончегорск
Дабы не плодить новую тему...

Внимательно изучаю курсы avr123.nm.ru!!! Но для закрепления материала, можно еще раз об регистрах... что это такое я понял. Но не совсем понял, т.е. для каждого бита регистра есть свое название? Или свой адрес? Запутался немного!
И еще - реально ли программу написанную на ассемблере переделать под С, т.е. не переписывать а конвертировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 май 2006, 10:19 
Не в сети
отсылающий читать курс
Аватара пользователя

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

Внимательно изучаю курсы avr123.nm.ru!!!

Но для закрепления материала, можно еще раз об регистрах... что это такое я понял.

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

Запутался немного!

И еще - реально ли программу написанную на ассемблере переделать под С, т.е. не переписывать а конвертировать?


Ну если внимательно! то почему же ты не видел рассказа о регистрах ?

http://avr123.nm.ru/03.htm

там вроде однозначно написано все и картинка регистра есть.

============

Прог для конвертации асм в Си я не видел.

Конвертировать советую так - по АСМ востановить алгоритм и затем алгоритм записать на Си.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 май 2006, 16:10 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
В принципе некоторые команды легко можно перевести в Си
пример:

 .def tmp = r16

 ldi tmp, 16
 out PORTB, tmp

эквивалентно:

 PORTB = 16;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 май 2006, 19:40 
Не в сети

Зарегистрирован: 26 фев 2006, 15:21
Сообщения: 400
Откуда: Омск
Так, в плэй офф. Некоторые команды конечно можно, нокак быть с условиями скажем и т.д. Одна си - мэни асм. Лучший вариант - знать и то и другое. Я к примеру пишу на с, ОЧЕНЬ часто анализирую асм в поисках решений, но НЕ перевариваю его (асм) одновременно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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