Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.06.2009, 21:26
|
|
Прохожий
Регистрация: 10.06.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
программа для микроконтроллера (подскажите что в ней не так)
Через несколько дней защита диплома 8O ... А продемонстрировать работу своего макета я не могу (
сделан он на ATMEGA32) ...а нужно то всего написать маленькую тестовую програмку на Си для проверки
работоспособности устройства на прием данных анализирующая работу компаратора.
Аналоговый компаратор сравнивает напряжения на двух выводах микроконтроллера. Результатом сравнения
будет логическое значение, которое может быть прочитано из программы.
При изменении состояния компаратора генерируется прерывание, по которому происходит включение и
выключение светодиода.
... вроде что-то осилила... (я в этом как-то не сильна совсем)
Код:
|
#include ‹avr/io.h› //подключаем заголовочный файл io.h
#include ‹util/delay.h› //Включаем библиотеку для организации задержек
#include ‹avr/interrupt.h›
#define SET_B(x)|= (1‹‹x)
#define CLR_B(x)&=~(1‹‹x)
#define INV_B(x)^=(1‹‹x)
ISR(ANA_COMP_vect)
{
PORTD INV_B(7);
_delay_ms(20);
}
void main(void)
{
PORTD=0x00; //Выставляем все выходы порта D на 0
DDRD=0xFF; //Делаем порт D, как выход
DDRB=0b11110011; //делаем 2 и 3 вывод как входы
PORTB=0b00000000; // отключаем внутренний подтягивающий резистор
ACSR=0b00001000; //настраиваем компаратор
sei();
while(1);
} |
в общем мое устройство вообще не хочет ничего делать ..я в отчаянии... помогите плиз
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/11062009/5315760.jpg)
|
|
|
|
10.06.2009, 21:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Прерывания у вас не включены похоже. Смотрите
прерывания в AVR учебный курс для начинающих
http://avr123.nm.ru/03.htm
И нет вывода на светодиод уровня на компараторе. У вас в прервании светодиод просто будет переключаться.
Советую скачать симулятор VMLAB (4 Мб всего) и в нем посимулировать работу вашего компаратора и светодиода - http://avr123.nm.ru/z2.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.06.2009, 22:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: программа для микроконтроллера (подскажите что в ней не
Сообщение от _Inna_
|
продимонстрировать
|
-- Прилагается рисунок: --
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.06.2009, 22:31
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
GCC сложноват для начинающих, попробуйте в CVAVR, всё должно получиться.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
10.06.2009, 22:36
|
|
Прохожий
Регистрация: 10.06.2009
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
Прерывания у вас не включены похоже. Смотрите
прерывания в AVR учебный курс для начинающих
http://avr123.nm.ru/03.htm
|
команда
SEI (разрешение прерывания) ... если я все правильно поняла...или что то еще нужно...
Сообщение от avr123-nm-ru
|
И нет вывода на светодиод уровня на компараторе. У вас в прервании светодиод просто будет переключаться.
|
мне и нужно ...чтоб он хотябы просто переключался...ну хоть что-нибудь делал....
|
|
|
|
10.06.2009, 22:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Сообщение от woroba
|
GCC сложноват для начинающих, попробуйте в CVAVR, всё должно получиться.
|
Насколько я понимаю, девушке и не очень нужно осваивать что-либо в полной мере. Нужно просто показать что "у нея внутре лампочка!" (у прибора в смысле).
Сейчас что-нибудь в протеусе сварганю.
|
|
|
|
10.06.2009, 23:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Вроде от двух генераторов частотой 1 Гц работает...
А для чего там
или там какая-то более хитрая задумка? Это же обработчик прерывания и прерывания могут "перекрываться"...
|
|
|
|
10.06.2009, 23:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Ну, задержка в прерывании - это святое... ![Улыбка](images/smilies/icon_smile.gif) Но я уже минут 5 тупо смотрю в текст и не могу найти ошибку, если серьезно. А в схеме - что с чем сравнивается -то ???
Код:
|
#define ACO 5
#define BITTST1(var,bitno) ((var) & (1 ‹‹ (bitno)))
ISR(ANA_COMP_vect)
{
if(BITTST1(ACSR,ACO))
{
PORTD SET_B(7);
}
else
{
PORTD CLR_B(7);
}
} |
[/code]
|
|
|
|
10.06.2009, 23:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Входная переменка сравнивается с выпрямленным значением. Но мне непонятно за сколько зарядится конденскатор в 220 мкф через резистор 100К..
Ну и ещё. Светодиод будет не мигать а слабо светиться - с частотой 50 Гц (если на вход действительно подаётся переменка).
|
|
|
|
10.06.2009, 23:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
в аттаче - "сэмлифицированная" схема, которую можно запускать на демонстрационной версии Proteus, который в свою очередь можно взять с нашего сайта http://www.labcenter.co.uk
Прикрепленный файл: 4536221.zip
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| |