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

 
 
> Проблема: спящий режим+ USART
Ruslan Konovalov
сообщение Oct 7 2008, 03:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-07-07
Пользователь №: 29 364



Всем добрый день.

Возникла проблема при использовании спящего режима(Idle mode) в Atmega8.
Вот код(не полный):
Код
void main(void)
{
  MCUCR |= (0<<SM2)|(0<<SM1)|(0<<SM0); //Idle mode
  init_Usart();
  __enable_interrupt();

for(;;)
{
   MCUCR |= (1<<SE); //Разрешение спящего режима
   asm("sleep");  //Сон
   Usart_read(); //Читаем строку
   Usart_Send_Str(UsartBuff); //Возвращаем принятое
}
}


Проблема заключается в том, что при использовании спящего режима Usart читает входящие данные нормально, за исключением первого байта.
Я так понимаю он пропускает его из-за того что процессор просыпается и начинает нормально работать в момент прихода 2-го байта.
Как решить эту проблему ?

А что если соеденить ножку RX и INT0 и будить процессор по этому прирыванию ?
Может кто нибудь уже с этим сталкивался ?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Oct 13 2008, 17:43
Сообщение #2


кекс
******

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



Цитата(Ruslan Konovalov @ Oct 7 2008, 06:33) *
А что если соеденить ножку RX и INT0 и будить процессор по этому прирыванию ?
Может кто нибудь уже с этим сталкивался ?

Просыпается от прерывания UART'а и нормально вытаскиваются все данные. Ничего не теряется.
t2313, 90S2313, m8, m48/88/168.
Другие МК с UART'ами у меня не спят.

Цитата(VladimirYU @ Oct 9 2008, 08:11) *
Idle mode enables the MCU to wake up from external triggered interrupts as well as
internal ones like the Timer Overflow and USART Transmit Complete interrupts.

Доки от Атмела, как русский язык по Черономырдину. Ни слова про RXC, является ли оно тем, что выделено, или речь только об интах?

external triggered interrupts as well as internal ones

Написано же - пробуждается как внешними так и внутренними источниками прерываний (т.е. любым прерыванием). Или для тех кто "в танке" надо перечислить каждый источник прерываня для каждого проца?

Цитата(Ruslan Konovalov @ Oct 13 2008, 10:37) *
Вся проблема была в том, что процессор просыпается по прерыванию RXC, но на тот момент
UsartRxOn = 0. И по этому 1-й байт в UsartBuff не заносился.

Еще раз убеждаемся, что по чрезмерно сокращенным огрызкам кода (как в самом первом посте) реальную проблему найти просто невозможно.
Приводить нужно кусочек реального проекта по принципу "как есть", разве только имена переменных поменять для наглядности.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ruslan Konovalov   Проблема: спящий режим+ USART   Oct 7 2008, 03:33
- - Николай Иванович Приходько   Цитата(Ruslan Konovalov @ Oct 7 2008, 07...   Oct 7 2008, 06:36
|- - Ruslan Konovalov   Цитата(Николай Иванович Приходько @ Oct 7 200...   Oct 7 2008, 07:06
- - VladimirYU   Цитата(Ruslan Konovalov @ Oct 7 2008, 07...   Oct 7 2008, 08:07
|- - Ruslan Konovalov   Цитата(VladimirYU @ Oct 7 2008, 11:07) Мн...   Oct 7 2008, 23:53
|- - VladimirYU   Цитата(Ruslan Konovalov @ Oct 8 2008, 03...   Oct 8 2008, 05:01
|- - Ruslan Konovalov   Цитата(VladimirYU @ Oct 8 2008, 08:01) Де...   Oct 9 2008, 01:43
|- - VladimirYU   Цитата(Ruslan Konovalov @ Oct 9 2008, 05...   Oct 9 2008, 05:11
- - Ruslan Konovalov   Спасибо всем, кто откликнулся. Оказалось, что это ...   Oct 9 2008, 12:59
- - GDI   Все же поборите свой стыд и расскажите в чем была ...   Oct 9 2008, 13:11
|- - VladimirYU   Цитата(GDI @ Oct 9 2008, 17:11) Все же по...   Oct 10 2008, 05:19
- - Ruslan Konovalov   Ладно. Было вот так: Кодvoid main(void) {...   Oct 13 2008, 07:37
|- - VladimirYU   [/quote] UCSRB |= (1 << RXCIE);//Разрешаем п...   Oct 13 2008, 09:09
|- - Ruslan Konovalov   Цитата(VladimirYU @ Oct 13 2008, 12:09) U...   Oct 13 2008, 10:11


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:53
Рейтинг@Mail.ru


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