Например TDA7294

Форум РадиоКот • Просмотр темы - принимаю с usart данные и отображаю (tiny2313) в протеусе
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс ноя 23, 2025 09:34:26

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: принимаю с usart данные и отображаю (tiny2313) в протеусе
СообщениеДобавлено: Сб май 09, 2020 22:59:28 
Первый раз сказал Мяу!

Зарегистрирован: Пн окт 20, 2008 16:10:21
Сообщений: 20
Откуда: москва
Рейтинг сообщения: 0
Приветствую, вот пробую научится, принимаю с usart данные и отображаю (tiny2313). в протеусе,
если функция if и switch стоит в прерывании ,все работает,вот этот код работает в симуляторе,, но если переношу ее в main ,в прерывании оставляю только x=UDR; то switch отрабатывает только case 8и9,и PORTD |= (1 <<6) тоже непроисходит, т.е. влючается только PD5. я ничего кроме переноса в меин не меняю .подскажите плиз ,в чем дело, Спасибо!
ISR(USART_RX_vect)
{
x=UDR;
if(x&(1<<7))//включаю D6 если 1 бит=1
{PORTD |= (1 <<6) ;x=x>>4;//получаю первые 4 бита/
switch(x){
case 8:PORTD &= ~(1<<5); //если0х80
break;
case 9:PORTD |= (1<<5);//0x90
break;
case 10:PORTD |= (1<<2);PORTA |=(1<<1); //если 0ха0
break;
case 11:PORTD |= (1<<3);//если 0хв
break;
case 12:PORTD |= (1<<4);//если 0хс
break;};}else{PORTD &= ~((1 <<6)|(1 <<2)|(1 <<3)|(1 <<4));PORTA &= ~(1<<1);};

}
int main(void)
{ io_init();
port_ini();
while(1){PORTB=x;}}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: а не подскажет ли кто нубу
СообщениеДобавлено: Вс май 10, 2020 03:41:29 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 3
Для начала надо научиться форматировать и вставлять код на форум. Как-то для начала, чтобы прочитать можно было:

Спойлер
Код:
ISR(USART_RX_vect) {
  x = UDR;
  if (x & (1 << 7)) //включаю D6 если 1 бит=1
  {
    PORTD |= (1 << 6);
    x = x >> 4; //получаю первые 4 бита/
    switch (x) {
    case 8:
      PORTD &= ~(1 << 5); //если0х80
      break;
    case 9:
      PORTD |= (1 << 5); //0x90
      break;
    case 10:
      PORTD |= (1 << 2);
      PORTA |= (1 << 1); //если 0ха0
      break;
    case 11:
      PORTD |= (1 << 3); //если 0хв
      break;
    case 12:
      PORTD |= (1 << 4); //если 0хс
      break;
    };
  } else {
    PORTD &= ~((1 << 6) | (1 << 2) | (1 << 3) | (1 << 4));
    PORTA &= ~(1 << 1);
  };
}

int main(void) {
  io_init();
  port_ini();
  while (1) {
    PORTB = x;
  }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: а не подскажет ли кто нубу
СообщениеДобавлено: Вс май 10, 2020 03:55:08 
Собутыльник Кота
Аватар пользователя

Карма: 38
Рейтинг сообщений: 268
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2723
Откуда: деревня в Тульской губернии
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ata100, после того, как NStorm отформатировал Ваш код, что-то стало проясняться. Однако, "огласите весь список, пожалуйста" (с). То бишь, приведите весь код, чтобы, например, я убедился, что переменная x объявлена volatile


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y