Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.11.2008, 19:52
|
|
Временная регистрация
Регистрация: 06.04.2008
Сообщений: 54
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Маленький вопрос по программированию в ПРОТЕУСе
Савсем недавно стал изучать микроконтроллеры, интересно стало. Задался для себя задачей для начала сделать какой нить простенький проект в протеусе (помигать диодами да вывести число на монитор), но не очень то получилось.
Вот собрал такую штуку на ATMega8 (дисплей 7seg-mpx2-ca-blue)
Написал такую программку в CV AVR, чтобы для начала хотябы помигать
Код:
|
#include ‹mega8.h›
void main(void)
{
DDRD = 0xFF;
DDRC = 0x00;
while(1)
{
PORTD = PORTC;
}
} |
Скомпилировалась нормально, без ошибок (мего сложная =xD). Потом хотел прошить его но протеус выдал такое
Объясните, что я сделал не так. И еще просьба объяснить в пару фраз как подлючается МК к ЛСД и как вывести на него число в 10ом формате (в принципе я видел как подключают его а вывод можно сделать через функцию которая бы принимала бы бинарное потом конвертировала в 10ое и далее как стринг его на моник, но это в теории как сделать на практике пока хз). И можно ли вместе батарейки сделать просто как нибудь подвести питание
(в TERMINALS нашел POWER но как это работает так и недопер).
Файлы проекта и прошивку прикрепил если кому не сложно объясните ошибки(если можно с кодом особенно по ЛСД).
Делал в Proteus 7.2 SP6 (build 536
Благодарю, что дочитали до конца =)
Прикрепленный файл: 147050.rar
|
|
|
|
08.11.2008, 20:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Ты пишеш под авр,а компилируем под пики?
На счет протеуса прочти ветку ЧАВО по протеусу,очень помогает.
|
|
|
|
08.11.2008, 21:35
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Поменяй название темы, на более информативное ...
__________________
Осторожно , злой кот
|
|
|
|
08.11.2008, 22:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Это все равно мигать не будет. Нету повода
|
|
|
|
08.11.2008, 22:07
|
|
Временная регистрация
Регистрация: 06.04.2008
Сообщений: 54
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от CERGEI1982
|
Ты пишеш под авр,а компилируем под пики?
|
В смысле?
Я пытался 2 способами:
1) Source - Add.. Выбирал .asm и компилятор MPASM
2) В МК Program File - выбирал хекс
... результаты аналогичны...
Сообщение от CERGEI1982
|
На счет протеуса прочти ветку ЧАВО по протеусу,очень помогает.
|
А разве это не здесь? Вроде предложение выделить Протеусу отдельный подфорум так и осталось лишь предложением... А ФАК по нему уже читал и не раз, но там нету нужного.
А насчет поменять название... на какое? что нить типо помагите нубу... я просто умнее не придумал
|
|
|
|
08.11.2008, 22:24
|
|
Временная регистрация
Регистрация: 06.04.2008
Сообщений: 54
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Лано, с прошивкой разобрался (источник надо было тока в МК указать и в сорцах удалить так работает), разобрался с шиной питания.
Осталось самое сложное это ЛСД, и еще они (aka диоды)не мигают, но с этим можно разобратцо. Хватит насмерахаца, подскажите как сделать.
|
|
|
|
08.11.2008, 23:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от lolodin
|
помигать диодами да вывести число на монитор, но не очень то получилось.
|
Начни по-порядку - с краткого курса по AVR например:
http://avr123.nm.ru
устройство AVR и его портов
http://avr123.nm.ru/02.htm
и задача-упражнение № 1
http://avr123.nm.ru/06.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
08.11.2008, 23:19
|
|
Гражданин KAZUS.RU
Регистрация: 24.06.2005
Сообщений: 535
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
|
По данному коду ничего мегать не должно.
DDRD = 0xFF; //установить порт D как выход
DDRC = 0x00; //установить порт C как вход
PORTD = PORTC; //Подать на выход порта D значение PORTC, что само по себе непонятно.
Для того, чтобы мигать нужно установить выход порта, т.е. выдать 1. Выдержать некую паузу. Сбросить выход того же порта, т.е. выдать 0.
Например в CodeVision это может быть выглядеть так:
PORTD.0 = 1; //установить выход 0 порта D
delay_ms(500); // Пауза 500мс
PORTD.0 = 0; //установить выход 0 порта D
delay_ms(30); // Пауза 500мс
При этом порт D, должен быть установлен, как выход
PORTD = 0xFF;
Здесь установлены как выходы все линии порта D. Используется в данном случае линия 0.
|
|
|
|
08.11.2008, 23:29
|
|
Гражданин KAZUS.RU
Регистрация: 24.06.2005
Сообщений: 535
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
|
Я глянул на вашу схему, похоже вы собираетесь мигать коммутируя кнопку на входе порта С. Вход считывается оператором PIN.
В CodeVision, например, это можно написть PINC.0 - вход нулевого пина порта C.
Только когда вы это прошьете в МК, то результат будет отличаться от ожидаемого из-за дребезга. Где-то это уже обсуждалось. Предотваращается он программно и конденсаторами. Поищите на форуме.
Еще здесь есть ветка по литературе. Там много информации для изучения.
|
|
|
|
08.11.2008, 23:35
|
|
Временная регистрация
Регистрация: 06.04.2008
Сообщений: 54
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Ваш курс я изучал целый месяц с полного нуля =), распечатал его целиком, он у меня постоянно перед глазами это моя библия.
Изменил программу поумнее, но на порте Д все равно 1 не пояляеца чтобы я не делал
Код:
|
#include ‹mega8.h›
void main(void)
{
PORTC = 0xFF; //вкл. подтяжку
DDRC = 0x00; //вход
PORTD = 0x00; //для порядка
DDRD = 0xFF; //выход
while (PINC == 0) //проверка состояния кнопки
{
}
while (PINC == 1)
{
while(1)
{
PORTD.0 = 1;
PORTD.1 = 1;
}
}
} |
Щас попробую с дилеем, всем спс что откликнулись.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:48.
|
|