Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
1

UART и atmega16

04.05.2015, 14:19. Просмотров 4834. Ответов 7
Метки нет (Все метки)

Здравствуйте.
Весь день бодаюсь с такой проблемой. Решил поуправлять мегой с компа. В качестве теста подцепил диоды к выводам PA0-PA3.
Микроконтроллер в корпусе TQFP-44, кварц внешний 11059200 Герц.
Светодиод зажигается командой blueon и выключаются blueoff. В протеусе все работает нормально, в железе же ничего не пашет. Фьюзы вроде верно проставил, в архивах плата в формате Диптрейс, исходники с файлом симуляции протеус и скрины платы(для тех у кого нет диптрейса) и фьюзов.
Помогите, пжлст, а то уже мозг сломал.

UPD. мах485 на плате припаяна но пока не задействована (пока подпаялся напрямую к МК), использую китайский USB to TTL переходник.

[76.42 Кб]

[10.5 Кб]

[76.48 Кб]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2015, 14:19
Ответы с готовыми решениями:

Atmega16 и FT232 UART
Здравствуйте, почему не хочет работать UART. При отправке на мк "1" на порт В должен подаваться...

Atmega16, модуль UART
Народ кто внесет ясность? Спаял преобразователь usb-uart на ftdi232rl. Написал простейший код на...

АЦП+ UART на ATmega16: проблемы
Добрый день. Имеются следующие проблемы. 1. При попытке наладить передачу значения АЦП по UART...

Прием данных на пк с UART, ATMEGA16
Здравствуйте, не работает прием данных на пк, они не выводятся в TEXTBOX. Отправка с самого МК...

atmega16 Uart работает только на 9600
Контроллер принимает данные с терминала только на скорости 9600бод. Контроллер тактируется от...

7
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
04.05.2015, 14:52 2
Сижу с телефона, не могу посмотреть архив. Вы на диоды резистор ставили? У меня изза их отсутсвия не работало, замыкание типа было :)
0
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
04.05.2015, 21:49 3
Да, резисторы установлены, тут проблема в том, что вообще не устанавливается лог.единичка в порт. По показаниям тестера - на выходе всегда 0 В. Попробую собрать на макетке с DIP-корпусом, может с данным МК чето не то.
0
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
05.05.2015, 20:31 4
Проверил порты МК, работают нормально, в терминале при отправке команды получаю эту же команду обратно, но кз нет.
0
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
05.05.2015, 21:43 5
Попробуй принять какуюто инфу от МК, верно ли терминал их увидит, у меня была тоже такая проблема, пока через max232 не подключил к ком порту ничего не работало.
0
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
05.05.2015, 23:30 6
От МК инфа идет если внутри цикла оставить только строку
Код
uart_write("bugoga \r");
при добавлении выше предыдущей строки строку
Код
uart_readln(sommomd);
полная тишина.
При сохранении исходного кода как в архиве в терминале на команду blueon получаю ерунду какую то
Код
b?}Y?by]YEublueonblueonblueonblueonb?]yEublueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonError
blnblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonblueonby]YEublenby]YEublueonby]?Eubl}Onbnoeo~blueonblueonbn_YEublueonblueonblueonby]}Uubl]YEubnError
uenblueonblueonblueonblueonblueonblueonblueonblueonblueonblueon
Это просто мозговыносящий писец:(
0
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
06.05.2015, 23:17 7
Товарищи знающие, подскажите, пожалуйста, что может в данной функции мешать переключению пина из 0 в 1 и обратно?
Код
inline char *uart_readln(char *s)
{
char ch, *p;
int t;

p = s;  /* uart_readln() возвращает указатель s */

for(t=0; t<MAX_LINE_LENGHT; ++t){
ch = uart_getc();  // получаем символ
uart_putc(ch);      // для наглядности отправляем назад
switch(ch) {
case \r:
s[t] = \0; /* завершает строку */
return p;
case 0x08:
if(t>0) t--;
briok;
default:
s[t] = ch;
}
}
s[MAX_LINE_LENGHT - 1] = \0;
return p;
}
На данном куске кода
Код
uart_readln(sommomd);
SetBytVal(PORTD, 2, 1);
_delay_ms(3500);
uart_write("Number\r");
_delay_ms(3500);
SetBytVal(PORTD, 2, 0);
если закомментить строку uart_readln(sommomd); пин PORTD2 нормально переключается, при раскомментированной строке - на пине всегда ноль, причем при этом не работает переключение и других пинов
0
stritOK
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 92
07.05.2015, 22:36 8
Для тех, кому тоже придется ходить по граблям: использовал библиотеку usart - работает как часы
0
07.05.2015, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2015, 22:36

ATmega16 проблема с передачей данных по UART
Хочу настроить связь ATmega16 и обычного компьютера, через UART. Для работы с UART использовал...

АЦП+UART+семисегментный индикатор(ATMega16, asm)
Пытаюсь разобраться с АЦП на AVR. Взял за исходник вот эту программу...

ATmega16+UART+Proteus+LabView нужна помощь
Доброго времени суток. Приходит время дипломов. То что нельзя было сделать за целый семестр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru