немогу настроить работу USART на прием

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv

Сообщение Lestat »

МК:АТtiny2313
кварц: 7,3728 Мгц
скорость USART:9600 bps

вот програма, пример с Datasheet, отсылаю с компа байт, но МК мне в ответ ничего не присыллает:

Код: Выделить всё

.cseg
.org 0

          ldi Temp,0b11111111   ;настройка портов
          out DDRB,Temp
          
      rcall   init ;инициализация УСАРТ
begin:

      rcall  Receive ;прийом по УСАРТ
      dec temp ;декрементировать значения региста в которой было записано принятое по УСАРТ
      rcall transmiter ; отправить по УСАРТ значение регистра temp
      rjmp begin

transmiter:
	   sbis UCSRA,UDRE
	   rjmp transmiter
	   out UDR,temp
             ret
             
Receive: sbis UCSRA,RXC
	 rjmp Receive
	 in r16, UDR
	 ret

init:
     ldi temp1,0
     ldi temp,47
     out UBRRH,temp1
     out UBRRL,temp
     ldi temp, (1<<RXEN)|(1<<TXEN)
     out UCSRB,temp
     ldi temp,(1<<USBS)|(3<<UCSZ0)
     out UCSRC,temp
     ret
что я делаю не так?
если код переписать чтобы МК только отсылал в комп даные то он ето делает.
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

потому, что ты в UDR ничего не пишешь, что он отправлять на комп должен??

Код: Выделить всё

      rcall  Receive ;прийом по УСАРТ 
      dec temp ;декрементировать значения региста в которой было записано принятое по УСАРТ 
вот в этом месте записываешь, своё "temp" в UDR

Код: Выделить всё

      rcall transmiter ; отправить по УСАРТ значение регистра temp 
      rjmp begin
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv

Сообщение Lestat »

Mozart писал(а):потому, что ты в UDR ничего не пишешь, что он отправлять на комп должен??
а разве здесь в UDR я не пишу Temp?

Код: Выделить всё

    transmiter: 
      sbis UCSRA,UDRE 
      rjmp transmiter 
      out UDR,temp 
             ret

Код: Выделить всё

out UDR,temp 
!!!
если прога будет иметь вот такой исходник

Код: Выделить всё

...
begin: 
      ldi temp,0b00000001
      rcall transmiter ; отправить по УСАРТ значение регистра temp 
      rjmp begin
...
(поменял только "блок" begin)
то МК будет отсылать в сом порт 01, и я в терминале на компютере вижу что он мне присылает, тоесть проблема гдето в приеме а не в передаче.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

тогда вопрос в другом, а ты уверен в том, что действительно МК получает твои данные с компа? ткнись осцилом на ножку RxC
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv

Сообщение Lestat »

Благодарю за помощь, разобрался в чем была проблема, оказалось совсем не в программном коде, а в жылезе, розем сом порта отходил, теперь когда нужно что-то отправить МК нужно придерживать сом розем:).
Тема закрита.
П.С. или тему можно переименовать в "Как отправлять и принимать по USART в ATtiny2313", думаю как раз подойдет тем кому лень открыть даташыт:), таким как я:)
Контактная информация:
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»