roboforum.ru

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

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

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

=DeaD= » 24 авг 2008, 01:41

regenerator писал(а):Не понял зачем ~= перед if ?

это математический жаргон :) ~= означает эквивалентность.

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

regenerator » 24 авг 2008, 02:38

Что будет с переменной "a", если:
Код: Выделить всёРазвернуть
unsigned long int a;
a=0;
while (1)
{a=-4500;}

?

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

avr123.nm.ru » 24 авг 2008, 10:52

regenerator писал(а):Что будет с переменной "a" ?

наверно она будет содержать:
(максимальное число хранимое в unsigned long int) - 4500 + 1
и потом уменьшаться на 4500 каждый раз и иногда опять уходя в огромное число.

=== Скачайте ШАБЛОН для быстрого старта на первой страничке топика и проверьте быстренько что будет в симуляторе - на 5 минут делов то !

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

=DeaD= » 24 авг 2008, 11:21

2avr123: там "=-", а не "-=" вроде...

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

avr123.nm.ru » 24 авг 2008, 11:27

=DeaD= писал(а):2avr123: там "=-", а не "-=" вроде...

Ну тогда наверно будет всегда: (максимальное число хранимое в unsigned long int) - 4500 + 1

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

regenerator » 24 авг 2008, 12:14

А можно сделать так, чтоб МК выполнял две задачи одновременно?
Например, первая функция каждую секунду прибавляет к "a" единицу:
Код: Выделить всёРазвернуть
while (1)
{
delay_ms(1000);
a++;
}

А вторая прибавляет к "a" четыре и сохраняет результат в "b":
Код: Выделить всёРазвернуть
while (1)
{
b=a+4;
}

Естественно значение "b" должно, как и a, каждую секунду расти на единицу.

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

avr123.nm.ru » 24 авг 2008, 12:23

Сделать в одном while

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

regenerator » 24 авг 2008, 12:40

Нет. Так нельзя.
Нужно, чтоб вторая функция делала "b=a+4;" с частотой процессора, ну или близкой к ней. В общем как минимум в 1000 раз быстрее.

Добавлено спустя 1 минуту 47 секунд:
Я понимаю, что в этом нет никакого смысла, но это только пример.

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

=DeaD= » 24 авг 2008, 12:55

2regenerator: А не проще ли курс какой-нибудь про МК почитать или хотя-бы даташит к МК, чтобы понять его возможности? А то знания в режиме да-нет-ки получать - не самый эффективный способ. Отдельно освойте какие возможности в самом МК содержатся, а дальше понятно что можно программно многозадачность сделать, но только эффективность её будет так себе, да и ресурсов сожрёт.

По поводу параллельных действий - есть таймеры и прерывания по таймеру.

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

regenerator » 24 авг 2008, 13:07

Вот мой код. Это таймер на 7 сегментных индикаторах.
Первый while (1) таймер, второй дешифратор.
Ясно дело не пашет. Второй цикл(дешифратора) не начинается.
Помогите, пожалуйста.
Вложения
cd.c
(2.81 КиБ) Скачиваний: 201

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

=DeaD= » 24 авг 2008, 13:23

Посмотрите http://easyelectronics.ru/avr-uchebnyj- ... jmery.html и аналогичные источники полезной информации по AVR в рунете.

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

regenerator » 24 авг 2008, 14:52

Дак я же на Си пишу. Причём тут асемблер.
Я Си то ели понимаю.

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

avr123.nm.ru » 24 авг 2008, 16:34

regenerator писал(а):Я Си то ели понимаю.

А начало топика читали ?

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

regenerator » 24 авг 2008, 16:57

Если вы имеете виду ваш курс, то я его прочитал.
Мало что понял и полностью запутался.

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

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

=DeaD= » 24 авг 2008, 17:31

А даташит пробовали читать? И вообще МК какой-то уже выбрали? Потому что то, что вы сейчас спрашиваете в коде может быть прописано уже только под конкретный МК.


Rambler\'s Top100 Mail.ru counter