реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите разобратся с ICC AVR 7, В 6й версии работало, в 7й - ошибка
Pyku_He_oTTyda
сообщение Dec 26 2005, 05:44
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Что то у меня ничего не получаетсяsad.gif, а никто не помощет исправить исходник, который в первом сообщении лежит?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 27 2005, 09:36
Сообщение #17


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Pyku_He_oTTyda @ Dec 26 2005, 07:44) *
Что то у меня ничего не получаетсяsad.gif, а никто не помощет исправить исходник, который в первом сообщении лежит?


начните с эхотерминала... в обработчике Rx прерывания, отправляем принятый байт обратно:

Код
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0,0%)
void uart0_init(void)
{
UCR  = 0x00; //disable while setting baud rate
UBRR = 0x17; //set baud rate
UCR  = 0x90; //enable
}

void putchar(char c)
{
  UDR = c;
}

#pragma interrupt_handler uart0_rx_isr:8
void uart0_rx_isr(void)
{
//uart has received a character in UDR
  putchar( UDR );
}
Go to the top of the page
 
+Quote Post
Laksus
сообщение Dec 27 2005, 23:13
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



_______________
Цитата
Что то у меня ничего не получаетсяsad.gif, а никто не помощет исправить исходник, который в первом сообщении лежит?
Laksus Дата Dec 25 2005, 21:26

_______________
Во первых вот Прикрепленный файл  uart_ICC7.zip ( 1.45 килобайт ) Кол-во скачиваний: 143
проверенный, т.е. работающий, (AT90S2313, 4.0MHz) исходник,
с оставленными правками.

Во вторых:
Мой предыдущий совет был непроверен. Основывался на примерах ICC.
Но, когда попробовал на макетке, обнаружилось следующее:
-Когда отправлял 2 символа, то проблем нет как с вариантом
{
UDR=c;
}
так и с вариантом
{
while((USR&0x20)==0);
UDR=c;

}

Но, когда вместо двух символов захотел отправить серию из 12 символов:

putchar('R');
putchar('x');
putchar('0');

putchar('1');
putchar('2');
putchar('3');

putchar('4');
putchar('5');
putchar('6');

putchar('7');
putchar('8');
putchar('9');
то в терминале (http://bray.velenje.cx/avr/terminal,9600 baud)
принималось: ...R9R9R9R9R9... . Причем как без while(), так и с while().


Наверное компилятор оптимизировал функцию и while выбросил,
так как она пустая .
Как правильно решить это я не знаю, но по "колхозному" сделал так:

volatile unsigned char temp1;
void putchar(char c)
{
while ((USR & 0x20) == 0)
{
temp1++;
}
; // UDRE, data register empty
UDR = c;
}

После этого в терминале появилось: ...Rx0123456789Rx...,
что и хотелось.
2005 12 27
Александр

PS После того, как написал это, еще немного поигрался со схемкой.
И обнаружил, что в опциях компилятора стояло
"Не использовать регистры R20...R23".
После того, как убрал галочку, получилось нормально и без volatile...temp1.
Хотя это не должно бы влиять.
Но после обратной установки галочки компилирует все равно правильно без
volatile...temp1. В чем была проблема я так и не понял, какие то глюки.
А без
while((USR&0x20)==0);
в терминале, по прежнему, принимаю только первый и последний символы группы.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 28 2005, 05:49
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Спасибо! Вечером буду пробовать разбиратся.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 29 2005, 07:58
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Спасибо Laksus, ваш пример заработал у меня.
Теперь на основании его буду разбиратся со своим, как говорится, где собака порылась.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th August 2025 - 13:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016