С чего начать программировать микроконтроллеры?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?

"Язык Си для МК" прочитать и сделать как там написано.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Хорошо... я читаю, но этого еще не дошел... :oops:
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

Stalker46 писал(а):Хорошо... я читаю, но этого еще не дошел... :oops:

Ну с этого там страница начинается !

до чегод вы дошли ? До заголовка чтоль.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?

А если они будут загораться поочереди, с тактовой частотой, это вас не устроит?:shock:
2. У меня есть матрица светодиодная 8х8. Всего получается 64 светодиода. для этого подойдет МК Мега 16.

Для этого и мега 8 подойдёт.
А у 16 Меги все порты уже забиты на светодиоды.

А зачем подключать каждый светодиод отдельно?:shock: Существует динамическая индикация (Вот тут можно немного почитать, как это сделать: http://radiokot.ru/articles/21/ . Внимательно посмотри схему, как это подключается). Для этого вполне можно задействовать примерно 16 - 18 выводов на все светодиоды.
(мне толком не сказали правильный ответ, можно ли перенастроить в процессе написания программы, назначения портов...)

Теоретически можно, но как это на практике получится, хз. То, что подсоединино к выводу (когда он в режиме выхода), может шунтировать вывод, когда он в режиме входа.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »


Сейчас попробовал, получилось.
А оставшиеся 6 выводов дисплея для чего нужны?
Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Подскажите такую штуку:
Нужно вывести на LCD значение переменной x.
Например:
int x;
x=1;
lcd_gotoxy(0,0);
lcd_putsf("%d", x); // Прочитал, что для того, чтобы вывести значение переменной, нужна команда %d
Но на последней строке получается ошибка, и пишет, что типа очень много аргументов в функции call...
А как нужно?
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »


Отлично !

SeregaT писал(а):Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?

Они разные. Некоторые вот так:
http://kazus.ru/forum/topic_10496-0-asc-40.html
Для других больше проводников надо.
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

SeregaT писал(а):lcd_putsf("%d", x);
А как нужно?

Да прям как там и написано:

Смотрите:
Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Вот Директива
#define
Я прописал, что
#define A (#define A (
{ while (PINC.0==0); //


PORTA.1=1; //
PORTA.2=1; //


while (PINC.1==0); //

PORTA.0=1; //
PORTA.1=1; //
PORTA.3=1; //
PORTA.4=1; //
PORTA.5=1; //
}
)

это как бы фрагмент программы.
В поле кода написал А, и ничего не вышло. Эта директива же заменяет некоторые единицы языка Си на идентификаторы.
В данном случае идентификатор у меня А. Что нетак?
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

посмотрите как дефайнить в "Язык Си для МК" или в примерах CVAVR
в Help
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

ikarab писал(а):Смотрите:
Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB

Что-то не могу найти того, что мне надо (по поводу вывода переменной).
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

сделал также, но ни получается.
он выдает ошибку на следующую строку.

Вот как я делаю:

#define deystvie (PORTA.1=1; //
PORTA.2=1; //


while (PINC.1==0); //

PORTA.0=1; //
PORTA.1=1; //
PORTA.3=1; //
PORTA.4=1; //
PORTA.5=1; //)




в поле кода ввожу

deystvie; //
но компил. выдает ошибку
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

SeregaT писал(а):не могу найти того, что мне надо (по поводу вывода переменной).

Подумайте - какого размера ваша переменная. Сколько в ней символов.
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Ну например 1 символ
А что такое USART? Надо ли мне это для работы с LCD?
P.S. Всёравно никак не могу значение переменной вывести. Всегда выдаёт ошибку: Error: F:\AVR\AVR-projects\CVA\LCD2\LCD2.c(131): too many arguments in function call
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Вот примерный код:
#include <mega16>
#include <delay>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd>

// Declare your global variables here

void main(void)
{
// LCD module initialization
lcd_init(8);

while (1)
{
int a, b;
a=4;
b=++a;
lcd_putsf("b = %d", b);
};
}

Пожалуйста, приведите пример, как вывести значение переменной b на LCD? (в моём примере ошибка: too many arguments in function call )
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

voltage=read_adc(0)
sprintf(lcd_buffer,"U=%i.%01dV", voltage/10, voltage%10);
lcd_clear();
lcd_puts(lcd_buffer);

это из одного из моих первых проектов :), по поводу что можно по другому (меньше объем кода) не критикуйте, знаю. зато так понятно новичку
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

А как назначать этот sprintf?
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

в каком смысле назначить?
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Аватара пользователя
SeregaT
Генеральный секретарь МЯУ
Сообщения: 18849
Зарегистрирован: Пн сен 03, 2007 18:24:27
Откуда: Россия. Омск.
Контактная информация:

Сообщение SeregaT »

Да просто пишет ошибку: Error: c(45): undefined symbol 'sprintf'
И на lcd_buffer то-же ругается: Error: c(47): undefined symbol 'lcd_buffer'
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

Код: Выделить всё

#include <lcd> 
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Ответить

Вернуться в «Теория»