Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Помогите разобраться с led

Страниц (2): [1] 2 »
 

1. sound - 26 Ноября, 2008 - 01:38:48 - перейти к сообщению
Всем Привет!
Подскажите пожалуйста как я могу менять яркость светодиода при помощи микроконтроллера Atmega8?
Спасибо за помощь!
2. sound - 26 Ноября, 2008 - 10:32:17 - перейти к сообщению
И ещё вопрос, как мне правильно настроить фьюзы, чтобы МК работал от встроенного генератора? Какой фьюз надо поставить что бы МК потом можно было перезаписывать?
3. Белый Волк - 26 Ноября, 2008 - 14:10:55 - перейти к сообщению
1. Яркостью светодиода можно управлять через ШИМ (Широтно-Импульсная Модуляция/PWM - Pulse Width Modulation), который реализован в ATmega8 аппаратно. Если выводы аппаратного ШИМ заняты, либо светодиодов значительное количество - ШИМ можно реализовать программно, используя прерывания.

2. В datasheet для ATmega8, в разделе Calibrated Internal RC Oscillator, есть таблица:
4. бот_м_16 - 26 Ноября, 2008 - 17:54:51 - перейти к сообщению
Мега 8 работает изначально на внутренем RC-генераторе (1Mhz)
Прошивать через последовательный программатор можно всег да кроие тех cлучиев когда Вы случайно "испортили" spien
5. sound - 26 Ноября, 2008 - 19:35:22 - перейти к сообщению
Если я правильно вас понял, я могу при прошивке не какие фъюзы не ставить?
6. gramozeka - 27 Ноября, 2008 - 03:25:36 - перейти к сообщению
главное, чтобы при програмировании, не стояла галочка 'прошивать фусы' по умолчанию работает внутренний генератор. вот.
7. sound - 27 Ноября, 2008 - 13:06:10 - перейти к сообщению
Я сейчас делаю как у меня на картинке(Картинка прикреплена), правильно?
Шью я его вот с этими настройками, ниже программа которую я пытаюсь зашить.
CODE:

#include <mega8.h> //Включаем библиотеку для работы с микроконтроллером ATMega8
#include <delay.h> //Включаем библиотеку для организации задержек
void main(void)
{
PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF; //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В
while (1) //Организовываем бесконечный цикл
{
PORTD.0=1; //Включаем светодиод на 0 выходе порта D
delay_ms(500); //Делаем задержку на 500 миллисекунд
PORTD.0=0; //Выключаем светодиод на 0 выходе порта D
delay_ms(500); //Делаем задержку на 500 миллисекунд
};
}

Программа взята из обучалки.
8. sound - 27 Ноября, 2008 - 13:28:10 - перейти к сообщению
Что я делаю не так у меня при программирование появляются сообщение, и когда они появляются я жму No, и после этого продолжается программирование.
Помогите разобраться, а то не как не могу понять в чём тут дело.
9. sound - 27 Ноября, 2008 - 17:06:49 - перейти к сообщению
Всем спасибо разобрался=)
10. DiNoZawR - 25 Декабря, 2008 - 01:32:52 - перейти к сообщению
Прошу прощения.
Если не трудно,подскажите, где можно узнать подробнее про Широтно-Импульсную Модуляцию. Желательно попроще.
Или здесь напишите. Просто недавно начал всем этим увлекаться с нуля.
Спасибо.
(Добавление)
Хочу добавить. Мне нужно определять расстояние с помощью ИК диода и фототранзистра. Что для этого нужно (ну помимо самих деталей) и как МК настроить (она еще и двигателями управляет)?
11. бот_м_16 - 25 Декабря, 2008 - 20:48:26 - перейти к сообщению
1)Про ШИМ(и нетолько) читать в Курсе по AVR avr123.nm.ru
2)фототранзистор->ацп только дальность не очень
12. Белый Волк - 25 Декабря, 2008 - 23:35:38 - перейти к сообщению
Максимальная частота, с которой любой прибор может реагировать на входной управляющий сигнал - конечна. Если подавать на вход прибора импульсы, частота которых много выше максимальной частоты реакции прибора, он не будет успевать реагировать на них, что (в некотором приближении) равносильно подаче на вход прибора постоянного напряжения определённого уровня.
13. Белый Волк - 25 Декабря, 2008 - 23:42:37 - перейти к сообщению
На приведённом рисунке график зависимости напряжения на входе некоторого прибора от времени.
(Добавление)
Уровень напряжения, о котором идёт речь, будет равен площади импульса, поделённой на период:

(Длительность импульса) * (Амплитуда) / (Период)

Для однозначности используют отношение периода импульса к его длительности. Эта величина называется Скважностью и она полностью характеризует уровень напряжения, моделируемый при помощи ШИМ:

(Скважность) = (Период) / (Длительность импульса)

В англоязычной литературе чаще используют понятие Коэффициента заполнения, который обратно пропорционален скважности:

(Коэффициент заполнения) = (1) / (Скважность)

Из приведённых соотношений видно, что уровень напряжения тем ниже, чем меньше длительность импульса (либо больше длина паузы, либо больше скважность, либо меньше коэффициент заполнения).
(Добавление)
Реализация ШИМ в микроконтроллере может быть программной, либо аппаратной (производитель микроконтроллера заложил в него возможность использования ШИМ, не используя основные вычислительные мощности).

В программном ШИМ, Вы сами следите (в программе) за состоянием счётчиков/таймеров и устанавливаете уровень логической единицы, либо нуля в нужный момент на выбранном выводе.

Аппаратный ШИМ нуждается со стороны программы только в инициализации (задании скважности, либо коэффициента заполнения), после чего микроконтроллер может исполнять программу дальше, а сигнал ШИМ будет поступать на выделенный производителем для этой цели вывод. Подробнее об аппаратном ШИМе можно узнать в datasheet микроконтроллера, по ключу PWM.
14. Белый Волк - 26 Декабря, 2008 - 20:46:02 - перейти к сообщению
Если Вас интересует конкретный уровень напряжения, который Вы хотите моделировать, необходимо помнить, что уровень логического нуля, для цифровых микросхем на основе кремния, составляет примерно 0.5-0.7 В, а уровень логической единицы "(напряжение питания) - 0.5-0.7 В". Данные величины существенны при подсчёте уровня напряжения.
15. DiNoZawR - 26 Декабря, 2008 - 23:33:05 - перейти к сообщению
Спасибо