roboforum.ru

Технический форум по робототехнике.

Программирование на си для Avr

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

Программирование на си для Avr

Сообщение libricon » 12 мар 2006, 15:43

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

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

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

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

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

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

компилятор ICC

РС! авр123 , не шли меня в свой курс, от цветного текста и частых повторений у меня болит голова, и создается впечатление что я уволень, каторый ничего не понимает
libricon
 
Сообщения: 303
Зарегистрирован: 09 июн 2005, 19:49

Сообщение Johnny Bravo » 12 мар 2006, 16:10

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

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

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

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

З.Ы. Для расширения кругозора Таймер и Счетчик разные понятия. Счетчик считает внешние тактовые импульсы, а Таймер  от внутреннего генератора.
Johnny Bravo
 
Сообщения: 400
Зарегистрирован: 26 фев 2006, 15:21
Откуда: Омск

Сообщение libricon » 12 мар 2006, 20:13

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

Re: Программирование на си для Avr

Сообщение avr123.nm.ru » 12 мар 2006, 22:43

libricon писал(а):у меня проблемы с программирование конкректно для авр, т.е

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


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

и попробуй мой курс - AVR для начинающих.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Johnny Bravo » 13 мар 2006, 13:01

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

Сообщение libricon » 13 мар 2006, 19:53

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

Сообщение avr123.nm.ru » 14 мар 2006, 16:34

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


причем увидеть "осцилограмму" состояния этого бита - т.е. выхода компаратора - можно только в симуляторе VMLAB - см. http://avr123.nm.ru/04.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Johnny Bravo » 14 мар 2006, 18:15

А если к одном из портов подключить ряд светодиодов и пульнуть туды весь ентот регистр... :D

avr123.nm.ru писал(а):Ребята! ТВОРЧЕСТВО включайте...
Johnny Bravo
 
Сообщения: 400
Зарегистрирован: 26 фев 2006, 15:21
Откуда: Омск

Сообщение Alexder1 » 27 май 2006, 17:54

Дабы не плодить новую тему...

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

Сообщение avr123.nm.ru » 29 май 2006, 10:19

Alexder1 писал(а):Дабы не плодить новую тему...

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

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

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

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

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


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

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

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

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

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

Конвертировать советую так - по АСМ востановить алгоритм и затем алгоритм записать на Си.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Vooon » 30 май 2006, 16:10

В принципе некоторые команды легко можно перевести в Си
пример:

 .def tmp = r16

 ldi tmp, 16
 out PORTB, tmp

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

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

Сообщение Johnny Bravo » 30 май 2006, 19:40

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


Вернуться в Новичкам или основы основ роботостроения.

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

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