roboforum.ru

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

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

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

libricon » 12 мар 2006, 15:43

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

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

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

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

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

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

компилятор ICC

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

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;//останавливаем таймер
}

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

libricon » 12 мар 2006, 20:13

так... а можешь в кратсе описать работу компаратора?

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

avr123.nm.ru » 12 мар 2006, 22:43

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

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


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

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

Johnny Bravo » 13 мар 2006, 13:01

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

libricon » 13 мар 2006, 19:53

уже распечатал, смотрю.....

avr123.nm.ru » 14 мар 2006, 16:34

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


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

Johnny Bravo » 14 мар 2006, 18:15

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

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

Alexder1 » 27 май 2006, 17:54

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

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

avr123.nm.ru » 29 май 2006, 10:19

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

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

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

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

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

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


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

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

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

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

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

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

Vooon » 30 май 2006, 16:10

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

 .def tmp = r16

 ldi tmp, 16
 out PORTB, tmp

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

 PORTB = 16;

Johnny Bravo » 30 май 2006, 19:40

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


Rambler\'s Top100 Mail.ru counter