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

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

Сообщение Arlleex »

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

Сообщение sema »

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

Сообщение SeregaT »

Stalker46 писал(а):SeregaT, ваша программа выдает 12 ошибок как и моя...

Моя программа прошита в МК и мигает светодиодами ;)
Просто сотри весь код полностью и скопируй туда мой.
Кстати
#include mega8(точка h)
#include delay (точка h)
Почему-то в ответах на форуме вот эта (точка h) не отображается.
Это надо учесть.
Последний раз редактировалось SeregaT Вс мар 22, 2009 18:46:31, всего редактировалось 2 раза.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Сделал, ни работает, давай в личке пообщаемся, а то примут за флудеров... :( а я без радиоКота как без лап)))))
Не умеешь - не берись, но не взявшись не научишься...
therian
Говорящий с текстолитом
Сообщения: 1682
Зарегистрирован: Чт окт 20, 2005 12:46:34
Контактная информация:

Сообщение therian »

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

Сообщение SeregaT »

therian писал(а):странный у вас какой то Си синтакс лишние семи-колоны

Это Вы про мой код?
в #include название файла без .h , вроде только в С++ так можно

Это какой-то косяк форума. В ответе пишешь с h, а когда отправляешь, то там уже без h.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Вот мой код. Пробую компилировать, выдает вот эту ошибку. Что это такое и что мне делать?


#include <mega16>
#include <delay>

// Declare your global variables here

void main(void)
{
// Declare your local variables here


PORTD=0x3F;
DDRD=0x3F;

ACSR=0x80;
SFIOR=0x00;

while (1)
{
PORTD.0=1; // зажигаем первый светодиод
delay_ms(1000); // ждем секунду
PORTD.0=0; // выключаем первый светодиод
delay_ms(100); // ждем
PORTD.1=1; // зажигаем второй светодиод
delay_ms(1000); // ждем секунду
PORTD.1=0; // выключаем второй светодиод
delay_ms(100); // ждем
PORTD.2=1; // зажигаем третий светодиод
delay_ms(1000); // ждем секунду
PORTD.2=0; // выключаем третий светодиод
delay_ms(100); // ждем
PORTD.3=1; // зажигаем четвертый светодиод
delay_ms(1000); // ждем секунду
PORTD.3=0; // выключаем четвертый светодиод
delay_ms(100); // ждем
PORTD.4=1; // зажигаем пятый светодиод
delay_ms(1000); // ждем секунду
PORTD.4=0; // выключаем пятый светодиод
delay_ms(100); // ждем
PORTD.5=1; // зажигаем шестой светодиод
delay_ms(1000); // ждем секунду
PORTD.5=0; // выключаем шестой светодиод

};
}
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
NiTr0
Друг Кота
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua
Контактная информация:

Сообщение NiTr0 »

Искать другой компилятор - этот битый :)
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

SeregaT писал(а):...Но всёравно, срабатывает даже если я не замыкаю вход на +5 В, а просто тыкаю в него какойнить железякой...

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

Сообщение SeregaT »

Кстати, заметил, что если запитываю МК от USB разъёма компа, то срабатывает от помех значительно реже (надо ещё потыкать отвёрткой несколько раз, чтобы сработало). А если запитываю от зарядника с выходом USB, то срабатывает с первого раза практически всегда. Это наверное потому, что комп заземлён? (а зарядник может какие-то наводки даёт).
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Заработала!!!
А вот собсно вопрос:

Какие в сгенерированном коде надо оставлять записи, кроме

PORTD=0x3F;
DDRD=0x3F;

ACSR=0x80;
SFIOR=0x00;
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Как думаете, после языка Си легко освоить Ассемблер?

Я хоче пока что на Си освоиться...
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

SeregaT писал(а):...Это наверное потому, что комп заземлён? (а зарядник может какие-то наводки даёт).

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

Сообщение SeregaT »

Stalker46 писал(а):Как думаете, после языка Си легко освоить Ассемблер?

Не думаю. Хотя в принципи там не сложно, просто гемору много.
Какие в сгенерированном коде надо оставлять записи, кроме

PORTD=0x3F;
DDRD=0x3F;

ACSR=0x80;
SFIOR=0x00

Ну это зависит от того, что нужно от программы.
Для светодиодов и
ACSR=0x80;
SFIOR=0x00

не нужно.
А я обычно вообще всё убираю.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение SeregaT »

Вот тут по ассемблеру неплохо написано.
http://radiokot.ru/start/mcu_fpga/avr/
Доступно и для начала хватит поуши.
Но лично мне на Си показалось гораздо удобнее.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

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

Сообщение ikarab »

Stalker46 писал(а): А где такое можно найти о Ассемблере ?

Адрес вытекает из вашего вопроса

ASMhelpAVR.narod.ru
"Ассемблер для AVR" - там же и библиотеку найдете с массой книги по АСМУ для AVR.

Вот архив скачайте - Архив примеров программ на ассемблере ASM для AVR из AVRstudio и VMLAB Очень хорошо написаны !

Stalker46 писал(а): Кто может пояснить, что за в порту А там есть биты Р...

Русский даташит на Atmega - он там же где АСМ помощь.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

а где АСМ помощь?
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Вот еще:

Как это вы назначаете назначение портов в процессе написания программы?


Это и есть
PORTD.1=0 - то есть мы в процессе написания программы дали порту D... А что мы ему дали? Где тут его назначение (ввод или вывод)?
Не умеешь - не берись, но не взявшись не научишься...
Ответить

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