roboforum.ru

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

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение regenerator » 31 май 2008, 14:20

Приветствую.
Недавно начал изучать МК. Пока научился только мигать светодиодами. Использую CodeVisionAVR. Есть такой вопрос:
Как помигать диодом 800раз? Неужели для этого нужно 800 раз прописывать delay_ms? Или нужно использовать цикл? Если не трудно приведите пример кода.
Лучший способ запомнить что нибудь — постараться это забыть.
regenerator
 
Сообщения: 50
Зарегистрирован: 28 май 2008, 21:56
Откуда: планета Земля
прог. языки: Паскаль, Си.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 31 май 2008, 15:07

regenerator писал(а):Неужели для этого нужно 800 раз прописывать delay_ms? Или нужно использовать цикл?


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

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение regenerator » 31 май 2008, 15:24

avr123.nm.ru писал(а):Читайте плиз ! http://avr123.nm.ru/05.htm "Си для МК" цикл while или for

Попробовал я как-то раз почитать курс. Значение каждого второго слова мне неизвестно :( . Толку то читать.
Ещё такой вопрос
В паскале:

program 123
var a,b:real;
begin
if a>b then
begin
оператор;
оператор;
end;
end.

А как это в Си будет?
Лучший способ запомнить что нибудь — постараться это забыть.
regenerator
 
Сообщения: 50
Зарегистрирован: 28 май 2008, 21:56
Откуда: планета Земля
прог. языки: Паскаль, Си.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 31 май 2008, 15:50

regenerator писал(а):
avr123.nm.ru писал(а):Читайте плиз ! http://avr123.nm.ru/05.htm "Си для МК" цикл while или for

Попробовал я как-то раз почитать курс. Значение каждого второго слова мне неизвестно :( . Толку то читать.


Какие КОНКРЕТНО слова вам не известны

http://avr123.nm.ru/05.htm
6) while(){}; условный цикл ( цикл с условием ) - используйте если вам
нужно выполнять какой то код программы пока выполняется (существует,
справедливо, не ноль) некоторое условие-выражение ...


А там:

http://avr123.nm.ru/05.htm
Книга - Язык программирования Си
Брайан В. Керниган, Деннис М. Ритчи

3.5 Циклы while и for
3.6 Цикл do-while


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

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение regenerator » 31 май 2008, 16:34

К примеру так часто встречающеяся слова ШИМ и регистр.
Насчёт цикла - всё вроде понял, спасибо.
Помигать 800 раз:

Код: Выделить всёРазвернуть
#include <90s2313.h>
char i;
void main(void)
{
DDRB=0xff;
for (i=0;i<800;i+=1)
{
PORTB.1=1;
delay_ms(700);
PORTB.1=0;
delay_ms(350);
}
}

Правильно?
Лучший способ запомнить что нибудь — постараться это забыть.
regenerator
 
Сообщения: 50
Зарегистрирован: 28 май 2008, 21:56
Откуда: планета Земля
прог. языки: Паскаль, Си.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 31 май 2008, 17:38

regenerator писал(а):К примеру так часто встречающеяся слова ШИМ и регистр.


А в начале каждой страницы есть форма: посик GOOGLE по курсу. Вот результат:

Регистр (Register) MK AVR - это набор из 8 бит т.е. 1 байт.
avr123.nm.ru/03.htm

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

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Fox89 » 01 июн 2008, 09:48

regenerator писал(а):К примеру так часто встречающеяся слова ШИМ и регистр.
Насчёт цикла - всё вроде понял, спасибо.
Помигать 800 раз:

Код: Выделить всёРазвернуть
#include <90s2313.h>
char i;
void main(void)
{
DDRB=0xff;
for (i=0;i<800;i+=1)
{
PORTB.1=1;
delay_ms(700);
PORTB.1=0;
delay_ms(350);
}
}

Правильно?

всё правильно, но желательно для установки бита в значение 1 использовать конструкцию:
PORTB|=(1<<i);
где i номер включаемого бита
А для обнуления бита конутрукцию:
PORTB&=~(1<<i);
это связано с тем, что на язык Си есть строгий стандарт, а запись REGISTER.BIT нестандартная, которую понимает только CodeVision. Тоесть если ты попробуешь скормить свой код другому компилятору он у тебя на первой же записи PORTB.0 выдаст ошибку. А если ты будешь использовать конструкции что я написал - то такой ошибки не будет
Fox89
 
Сообщения: 57
Зарегистрирован: 11 ноя 2007, 20:12
Откуда: урал

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Drunya » 01 июн 2008, 10:06

Код: Выделить всёРазвернуть
...
char i;
...

Правильно?

Не совсем. У тебя значение i не дойдет до 800, только до 255. Вместо char i пиши int i. Почитай про типы переменных и тебе станет ясно. А еще в микроконтроллерах лучше использовать целочисленные типы unsigned ...

Успехов!:)
Глюк по-немецки означает "счастье"...
Аватара пользователя
Drunya
 
Сообщения: 196
Зарегистрирован: 05 июн 2007, 12:20
Откуда: Киев
прог. языки: C/C++, ASSEMBLER

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 01 июн 2008, 10:31

Drunya писал(а):пиши int i. Почитай про типы переменных и тебе станет ясно.


Типы переменных, данных в Си - http://avr123.nm.ru/05a.htm - и их диапазоны в компиляторе.

http://avr123.nm.ru/05a.htm
unsigned int - хранит числа от 0 до 65535 (слово == 2 байта)
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение regenerator » 02 июн 2008, 12:26

Всем спасибо за ответы! С программой всё ясно.
Начал читать краткий курс. Дошёл до седьмой страницы.
avr123.nm.ru, есть вопросы по прерываниям:
Что может вызвать прерывание? Где их использовать?
Лучший способ запомнить что нибудь — постараться это забыть.
regenerator
 
Сообщения: 50
Зарегистрирован: 28 май 2008, 21:56
Откуда: планета Земля
прог. языки: Паскаль, Си.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение EdGull » 02 июн 2008, 12:44

прерывание может вызвать, то под что это прерывание заточено.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение MiBBiM » 02 июн 2008, 12:51

Читать внимательнее надо, regenerator.
1 и 2. Что может вызвать прерывание и где их использовать. Ответ: стр.3;выдержка:
В МК AVR и других, прерывания могут возникать по многим событиям:

- изменение уровня на некоторых ножках МК
- "1" или "0" на некоторых ножках МК
- переполнение таймеров
- насчитывание таймером определенного значения
- завершение АЦП преобразования
- изменение уровня на выходе компаратора
- события в USART
- еще от кучи всего...

В общем снова читайте ДатаШит ...

Для ATmega16 прерывания перечислены
в таблице 18 "Reset ana Interrupt Vectors"
....
Я сделал для вас
проект демонстрирующий механизм прерываний в AVR(далее следует описание)
...
Практическое применение прерываний будет
рассмотрено в задачах - упражнениях курса(далее ссылка).

А воопще avr123 создал прекрасную книгу для начинающих. Первое ощущение - кричащие цвета, однако, уже начиная со 2-ой страницы, "цветастость" помогает заострить внимание на важных вещах. Так что за мануал спасибо товарищу avr123.
P.S. Я извиняюсь, но мне кажется, что "ни кто" пишеться слитно.
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 02 июн 2008, 13:46

MiBBiM писал(а):Я сделал для вас проект демонстрирующий механизм прерываний в AVR(далее следует описание)

... и архивчик приложен с проектом готовым для симуляции - две кнопочки управляют прерываниями INTx

MiBBiM писал(а):за мануал спасибо товарищу avr123

Рад если помогло в чём-то.

Добавлено спустя 2 минуты 36 секунд:
regenerator писал(а):Начал читать краткий курс. Дошёл до седьмой страницы.


Обрати внимание на начало первой страницы курса ! Это важно ИМХО

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

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение regenerator » 03 июн 2008, 11:19

Всем спасибо за ответы! По программе и по прерываниям понятно. Курс дочитал. Теперь задания выполнять буду. Ещё такой вопрос:
Допустим мне надо инвертировать все биты регистра PORTB. Это будет так:

Код: Выделить всёРазвернуть
void main(void)
{
~PORTB;
}

или так:
Код: Выделить всёРазвернуть
void main(void)
{
!PORTB;
}

?
И ещё: USART это интерфейс RC232?
Лучший способ запомнить что нибудь — постараться это забыть.
regenerator
 
Сообщения: 50
Зарегистрирован: 28 май 2008, 21:56
Откуда: планета Земля
прог. языки: Паскаль, Си.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 03 июн 2008, 11:25

regenerator писал(а):Всем спасибо за ответы! По программе и по прерываниям понятно. Курс дочитал. Теперь задания выполнять буду. Ещё такой вопрос:
Допустим мне надо инвертировать все биты регистра PORTB. Это будет так:

1) ~PORTB;

2) !PORTB;


Внимательно читай стр. 5 "Си для МК" ВНАЧАЛЕ !

1) Нужен еще оператор присваивания =

2) читай логические операции.

regenerator писал(а):USART это интерфейс RC232 ?


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

Пред.След.

Вернуться в Микроконтроллеры

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

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