С чего начать программировать микроконтроллеры?
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
http://easyelectronics.ru/mb-lebedev-co ... shhij.html книжка М.Б Лебедев “CodeVision AVR пособие для начинающих” очень рекомендую. размер правда 60 метров но оно того стоит. еще почитайте обучалку http://radiokot.ru/start/mcu_fpga/avr/
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18849
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Stalker46 писал(а):Не понимаю, что делать с сгенерированным кодом
Как что? Дописывать свой (из сгенерированного можно лишнее удалить).
Можно ли в процессе написания кода изменить назначения портов?(ввод - вывод).
Я там настройку портов вообще не трогаю. Порты назначаю прямо в процессе написания кода.
Куда файл компилируется?
Папка проекта/EXE/Прошивка.hex
Когда я все сделал в настройках контролера, надо сгенерировать код. я его сгенерировал, там надо что то сохранить три раза, и появляется в окне сгенерированный код. что с ним делать?
Находим вот это:
while (1)
{
// Place your code here
};
И пишем свой код (я обычно убираю всё, что написано до этого, и пишу своё).
Народ, научите писать заголовочные файлы на код. На CodeVisionAVR.
А разве они не входят в комплект CodeVisionAVR или на сайте производителя? Или я что-то не так понял?
Какой язык лучше для программирования - СИ или ассемблер? Прошу ответить на этот вопрос профессионалов...
Ассемблер наверное получше будет (в плане надёжности и быстродействия), но там заморочек куча. Даже чтобы прописать задержку, на Си просто пишешь сколько миллисекунд и всё, а на ассемблере для этого нужно еще кучу расчётов сделать. В общем, на ассемблере нужно вручную прописывать действие каждого такта, считать количество импульсов и т.д. Тоесть ассемблер работает напрямую с железом.
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18849
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Такой вот вопрос. Я сделал несколько входов, входы соединил с общим проводом через резисторы 10 Ком (чтобы не реагировали на помехи). Но всёравно, срабатывает даже если я не замыкаю вход на +5 В, а просто тыкаю в него какойнить железякой? Ведь резисторы между общим проводом и входом должны избавить от этого, а что-то нифига.
Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
-
therian
- Говорящий с текстолитом
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
- Контактная информация:
SeregaT писал(а):Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
у Пиков вроде есть зашитные диоды соединенные с +питанием, вот и выходит двойная зашита резистор от слабого тока спасает а диод от высокого напряжения/статики, думаю у Авр тоже самое есть
- NiTr0
- Друг Кота
- Сообщения: 3051
- Зарегистрирован: Пт авг 10, 2007 12:49:55
- Откуда: kr.ua
- Контактная информация:
Диоды есть - это тестер подтвердит
Но это не касается вопроса...
А по поводу помех - осцилл должен подсказать их уровень. Дело в том, что 0 считается все, что ниже 0.2Vcc (1В), а 1 - все, что выше 0.6Vcc (3В) по шиту - это гарантированные уровни, ито что лежит между ними - может считаться как 0 так и 1...
Исходя из этого - при подтяжке к +5 порог получается в 2 раза выше, чем при подтяжке к 0...
Но это не касается вопроса...
А по поводу помех - осцилл должен подсказать их уровень. Дело в том, что 0 считается все, что ниже 0.2Vcc (1В), а 1 - все, что выше 0.6Vcc (3В) по шиту - это гарантированные уровни, ито что лежит между ними - может считаться как 0 так и 1...
Исходя из этого - при подтяжке к +5 порог получается в 2 раза выше, чем при подтяжке к 0...
Последний раз редактировалось NiTr0 Вс мар 22, 2009 17:55:43, всего редактировалось 1 раз.
-
therian
- Говорящий с текстолитом
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
- Контактная информация:
ни кто не знает как в MPLAB 8.2 настроить чтоб хекс файл генерировался при компилировании и сохранялся в туже папку где и Си код? В более старых версиях вроде так и было а теперь Export делать приходится, бесит когда много исправлений делаю
Последний раз редактировалось therian Вс мар 22, 2009 17:54:02, всего редактировалось 1 раз.
while (1)
{
// Place your code here
};
}
{
#include <mega16>
#include <delay>
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; // выключаем шестой светодиод
};
я сам написал программу, шестью светодиодами управляет шесть портов D.
Правильно ли?
{
// Place your code here
};
}
{
#include <mega16>
#include <delay>
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; // выключаем шестой светодиод
};
я сам написал программу, шестью светодиодами управляет шесть портов D.
Правильно ли?
Не умеешь - не берись, но не взявшись не научишься...
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
to Stalker46 так прошейте в железку и увидите
, неохота прошивать протеус вам в лапы 
Последний раз редактировалось sema Вс мар 22, 2009 18:01:03, всего редактировалось 1 раз.
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18849
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Stalker46 писал(а):я сам написал программу, шестью светодиодами управляет шесть портов D.
Правильно ли?
Почти правильно.
Вот так она работает:
#include <mega8>
#include <delay>
void main(void)
{
PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF; //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В
while (1)
// Place your code here
{
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; // выключаем шестой светодиод
};
}
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
Stalker46 писал(а):Не получилось![]()
что делать, что я не так сделал?
Помогите плиз, вверху код...
порт на вывод настроен? в DDRD единички записаны? как проверяли?
Последний раз редактировалось sema Вс мар 22, 2009 18:07:22, всего редактировалось 1 раз.
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
-
therian
- Говорящий с текстолитом
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
- Контактная информация:
Stalker46 писал(а):Не получилось![]()
что делать, что я не так сделал?
ну там же написано "// Place your code here" наверно не просто так.
а у вас код вовсе не где просят не в while и даже не в maine вроде...
еще одно в Си после } ; (точку с запятой) ставить не нужно, (исключение будут структуры, ну и классы уже в с++) хотя она ничего и не делает и игнорируется
Последний раз редактировалось therian Вс мар 22, 2009 18:16:05, всего редактировалось 2 раза.
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18849
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
sema писал(а):порт на вывод настроен? в DDRD единички записаны? как проверяли?
Кстати, вот этот момент можно подробнее разъяснить? Как я понял, это нужно только для того, чтобы светодиоды подключить? Тоесть если этого не делать, то там будут просто слабые сигналы (типа для передачи данных)? Просто светодиоды без этого еле светят, а вот релюшки (через транзисторы) отлично включаются...