С чего начать программировать микроконтроллеры?
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Реклама
это регистр отвечающий за настройку линий портов на ввод\вывод
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Моя программа прошита в МК и мигает светодиодамиStalker46 писал(а):SeregaT, ваша программа выдает 12 ошибок как и моя...
Просто сотри весь код полностью и скопируй туда мой.
Кстати
#include mega8(точка h)
#include delay (точка h)
Почему-то в ответах на форуме вот эта (точка h) не отображается.
Это надо учесть.
Последний раз редактировалось SeregaT Вс мар 22, 2009 18:46:31, всего редактировалось 2 раза.
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
странный у вас какой то Си синтакс лишние семи-колоны
в #include название файла без .h , вроде только в С++ так можно
в #include название файла без .h , вроде только в С++ так можно
- Реклама
Это Вы про мой код?therian писал(а):странный у вас какой то Си синтакс лишние семи-колоны
Это какой-то косяк форума. В ответе пишешь с h, а когда отправляешь, то там уже без h.в #include название файла без .h , вроде только в С++ так можно
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Вот мой код. Пробую компилировать, выдает вот эту ошибку. Что это такое и что мне делать?
#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; // выключаем шестой светодиод
};
}
#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; // выключаем шестой светодиод
};
}
Не умеешь - не берись, но не взявшись не научишься...
Искать другой компилятор - этот битый 
- Сообщения: 3459
- Зарегистрирован: Ср сен 27, 2006 16:18:57
Вполне нормальное явление. Когда Вы тыкаете на вход железкой, то подключаете емкость своего тела, которая заряжена от наводок непонятно как. Возникает короткая импульсная помеха, которую ловит микроконтроллер.SeregaT писал(а):...Но всёравно, срабатывает даже если я не замыкаю вход на +5 В, а просто тыкаю в него какойнить железякой...
Чтобы этого не было, надо использовать RC цепочки. Тем более, что если будете использовать длинные провода, то на них вообще, чёрти что может наводиться. Сделайте, как в присоединённом файле. И для каждого датчика свой отдельный "земляной" провод. А ещё лучше витую пару.
- Вложения
-
- RC.gif
- (3.2 КБ) 434 скачивания
Кстати, заметил, что если запитываю МК от USB разъёма компа, то срабатывает от помех значительно реже (надо ещё потыкать отвёрткой несколько раз, чтобы сработало). А если запитываю от зарядника с выходом USB, то срабатывает с первого раза практически всегда. Это наверное потому, что комп заземлён? (а зарядник может какие-то наводки даёт).
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 3459
- Зарегистрирован: Ср сен 27, 2006 16:18:57
Не думаю. Хотя в принципи там не сложно, просто гемору много.Stalker46 писал(а):Как думаете, после языка Си легко освоить Ассемблер?
Ну это зависит от того, что нужно от программы.Какие в сгенерированном коде надо оставлять записи, кроме
PORTD=0x3F;
DDRD=0x3F;
ACSR=0x80;
SFIOR=0x00
Для светодиодов и
ACSR=0x80;
SFIOR=0x00
не нужно.
А я обычно вообще всё убираю.
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Вот тут по ассемблеру неплохо написано.
http://radiokot.ru/start/mcu_fpga/avr/
Доступно и для начала хватит поуши.
Но лично мне на Си показалось гораздо удобнее.
http://radiokot.ru/start/mcu_fpga/avr/
Доступно и для начала хватит поуши.
Но лично мне на Си показалось гораздо удобнее.
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Адрес вытекает из вашего вопросаStalker46 писал(а): А где такое можно найти о Ассемблере ?
ASMhelpAVR.narod.ru
"Ассемблер для AVR" - там же и библиотеку найдете с массой книги по АСМУ для AVR.
Вот архив скачайте - Архив примеров программ на ассемблере ASM для AVR из AVRstudio и VMLAB Очень хорошо написаны !
Русский даташит на Atmega - он там же где АСМ помощь.Stalker46 писал(а): Кто может пояснить, что за в порту А там есть биты Р...
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36


