Возможно, автор правил ошибки, поэтому была выложена следующая версия.
брал в основном тут http://kazus.ru/forums/showthread.php?t=8902
А я не фильтруя всё что нашлось в папке казус.ру (поиск по параметру 384) упаковал в архив.
раз протеус не использует многопоточность, а использовал OpenCL (не OpenGL) то установив видеокарту радеон за 150 дол можно было бы получить скорость в 5-10 больше чем у core i3.
Всем привет! В очередной раз требуется помощь. В учебных целях делаю проект на протеус с использованием IAR AVR, в котором присутсвует ATmega2561 и терминал, подключенный по RS232. Пробую выводить на терминал букву"А", но ничего не происходит.
Листинг:
Спойлер
#include <ioavr.h>
#include <stdio.h>
void main(void)
{
long int i;
//..........инициализация UART.................
UBRR1H = 0;
UBRR1L = 95; //скорость связи 9600 бод
UCSR1B = (1<<RXEN1)|(1<<TXEN1); //Разрешение работы передатчика и приемника
UCSR1C = (3<<UCSZ10); //Установка формата посылки: 8 бит данных, без паритета
while(1)
{
//...........работа.......
while (!( UCSR1A & (1<<UDRE1))); //Ожидание освобождения буфера передатчика
/* Помещение данных в буфер, отправка данных */
UDR1 = ('A');
for (i=0; i<9000; i++)
{
}
}
}
На реальном контроллере прошивка работала. В протеусе вроде как все параметры соблюдаю (скорость и тп). Видно, что RX и TX моргают. Еще заметил, что если сменить скорость в терминале на более низкую, то выводится символ треугольника. В чем может быть проблема? Прошивку хочу написать именно в IAR. Все файлы прикладываю.
Скриншот схемы в Proteus для наглядности:Спойлер
Выставить в свойствах МК частоту напротив Clock Frequency, а не как у Вас, в прочих свойствах и отключить фьюз деления частоты на 8 - CLKDIV8. И все работает.
a_skr писал(а):Выставить в свойствах МК частоту напротив Clock Frequency, а не как у Вас, в прочих свойствах и отключить фьюз деления частоты на 8 - CLKDIV8. И все работает.
огромное Вам спасибо! А по поводу того, что частота оказалось в прочих свойствах я сам в недоумении..
А еще такой вопрос: как сделать, чтобы символы в терминале каждый раз печатались с новой строки?
Здравствуйте, я новичок в микроэлектронике, но разбираться в ней меня очень увлекает. По работе меня подрядили на создание простого устройства-терморегулятора с таймером, пока не буду вдаваться в подробности, но начал я с 1wire датчика ds18b20, как мне кажется хорошо разобрался с datasheet'ом, написал программу в codevision, но столкнулся в эмуляции в PROTEUS с проблемой на самом же первом шаге-инициализации устройства.
Этой процедурой у меня должно вызываться инициализация и появляться отклик от датчика.
void wire_init(void){
DDRD.0=1;
PORTD.0=0;
delay_us(1000);
DDRD.0=0;
PORTD.0=1;
delay_us(320);
}
Но, судя по осцилографу протеуса, накакого отклика нет!
Делей на опускание контроллером линии, поставил 1000мкс, но пробовал многие значения от 480мкс. А потом по осцилографу просто смотрел отклик. Что я делаю не так? Дело то вообще элементарное!
Спасибо.
MINSK42 писал(а):Делей на опускание контроллером линии, поставил 1000мкс, но пробовал многие значения от 480мкс. А потом по осцилографу просто смотрел отклик. Что я делаю не так? Дело то вообще элементарное!
А Вы проект выложите, тогда и будет ясно, что не так. 1000 мкс, конечно много, не знаю как в жизни, но в Proteus при настройках по умолчанию при значении задержки более ~900 мксек будут проблемы. А судя по осциллограмме у Вас задержка более 1 мсек. Возможно частота установлена неверно... короче, нужен проект.
MINSK42 писал(а):Делей на опускание контроллером линии, поставил 1000мкс, но пробовал многие значения от 480мкс. А потом по осцилографу просто смотрел отклик. Что я делаю не так? Дело то вообще элементарное!
А Вы проект выложите, тогда и будет ясно, что не так. 1000 мкс, конечно много, не знаю как в жизни, но в Proteus при настройках по умолчанию при значении задержки более ~900 мксек будут проблемы. А судя по осциллограмме у Вас задержка более 1 мсек. Возможно частота установлена неверно... короче, нужен проект.