Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
С чего начать программировать микроконтроллеры?
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]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- Реклама
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Как что? Дописывать свой (из сгенерированного можно лишнее удалить).Stalker46 писал(а):Не понимаю, что делать с сгенерированным кодом
Я там настройку портов вообще не трогаю. Порты назначаю прямо в процессе написания кода.Можно ли в процессе написания кода изменить назначения портов?(ввод - вывод).
Папка проекта/EXE/Прошивка.hexКуда файл компилируется?
Находим вот это:Когда я все сделал в настройках контролера, надо сгенерировать код. я его сгенерировал, там надо что то сохранить три раза, и появляется в окне сгенерированный код. что с ним делать?
И пишем свой код (я обычно убираю всё, что написано до этого, и пишу своё).while (1)
{
// Place your code here
};
А разве они не входят в комплект CodeVisionAVR или на сайте производителя? Или я что-то не так понял?Народ, научите писать заголовочные файлы на код. На CodeVisionAVR.
Ассемблер наверное получше будет (в плане надёжности и быстродействия), но там заморочек куча. Даже чтобы прописать задержку, на Си просто пишешь сколько миллисекунд и всё, а на ассемблере для этого нужно еще кучу расчётов сделать. В общем, на ассемблере нужно вручную прописывать действие каждого такта, считать количество импульсов и т.д. Тоесть ассемблер работает напрямую с железом.Какой язык лучше для программирования - СИ или ассемблер? Прошу ответить на этот вопрос профессионалов...
Такой вот вопрос. Я сделал несколько входов, входы соединил с общим проводом через резисторы 10 Ком (чтобы не реагировали на помехи). Но всёравно, срабатывает даже если я не замыкаю вход на +5 В, а просто тыкаю в него какойнить железякой? Ведь резисторы между общим проводом и входом должны избавить от этого, а что-то нифига.
Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
у Пиков вроде есть зашитные диоды соединенные с +питанием, вот и выходит двойная зашита резистор от слабого тока спасает а диод от высокого напряжения/статики, думаю у Авр тоже самое естьSeregaT писал(а): Когда я настраивал на то, чтобы входы ждали лог 0, и ставил резисторы между входом и +5 В, то такого вроде небыло...
- Реклама
Диоды есть - это тестер подтвердит 
Но это не касается вопроса...
А по поводу помех - осцилл должен подсказать их уровень. Дело в том, что 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 раз.
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
ни кто не знает как в MPLAB 8.2 настроить чтоб хекс файл генерировался при компилировании и сохранялся в туже папку где и Си код? В более старых версиях вроде так и было а теперь Export делать приходится, бесит когда много исправлений делаю
Последний раз редактировалось therian Вс мар 22, 2009 17:54:02, всего редактировалось 1 раз.
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
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.
Правильно ли?
Не умеешь - не берись, но не взявшись не научишься...
А может эти защитные диоды еще включить надо? Или всётаки нужно настроить порт на вход заранее? Я не настраивал, а просто где выход, писал PORTD.1, а где выход - PINB.1.
Диоды - настраивать явно не надо.
P.S. Прошлый каммент дополнил.
P.S. Прошлый каммент дополнил.
to Stalker46 так прошейте в железку и увидите
, неохота прошивать протеус вам в лапы 
Последний раз редактировалось sema Вс мар 22, 2009 18:01:03, всего редактировалось 1 раз.
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Почти правильно.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; // выключаем шестой светодиод
};
}
порт на вывод настроен? в DDRD единички записаны? как проверяли?Stalker46 писал(а):Не получилось![]()
что делать, что я не так сделал?
Помогите плиз, вверху код...
Последний раз редактировалось sema Вс мар 22, 2009 18:07:22, всего редактировалось 1 раз.
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- Сообщения: 1682
- Зарегистрирован: Чт окт 20, 2005 12:46:34
ну там же написано "// Place your code here" наверно не просто так.Stalker46 писал(а):Не получилось![]()
что делать, что я не так сделал?
а у вас код вовсе не где просят не в while и даже не в maine вроде...
еще одно в Си после } ; (точку с запятой) ставить не нужно, (исключение будут структуры, ну и классы уже в с++) хотя она ничего и не делает и игнорируется
Последний раз редактировалось therian Вс мар 22, 2009 18:16:05, всего редактировалось 2 раза.
Тоесть мне нужно на подтяжку к 0 поставить сопротивления поменьше?NiTr0 писал(а):Диоды - настраивать явно не надо.
P.S. Прошлый каммент дополнил.
Кстати, вот этот момент можно подробнее разъяснить? Как я понял, это нужно только для того, чтобы светодиоды подключить? Тоесть если этого не делать, то там будут просто слабые сигналы (типа для передачи данных)? Просто светодиоды без этого еле светят, а вот релюшки (через транзисторы) отлично включаются...sema писал(а): порт на вывод настроен? в DDRD единички записаны? как проверяли?
А почему бы и не работать?SeregaT писал(а):Вот будет ли это всё работать, если к входам подсоединить провода по несколько метров?
Можно еще RC-фильтры на вход повешать, если не критично время реакции...
Да просто я подумал, что может сработать еще до замыканий контактов (ну типа на ёмкость провода отреагирует или помеху какую примет...NiTr0 писал(а): А почему бы и не работать?
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36


