Например TDA7294

Форум РадиоКот • Просмотр темы - проблема с UART attiny2313
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:44:08

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


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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: проблема с UART attiny2313
СообщениеДобавлено: Пт май 09, 2025 17:32:48 
Родился

Зарегистрирован: Пт май 09, 2025 17:03:41
Сообщений: 2
Рейтинг сообщения: 0
Помогите пожалуйста, пишу midi синтезатор и пытаюсь разобраться с UART. Не принимает старший бит(всегда 0). По спецификации каждое сообщение состоит из нескольких байт: ведущий начинается с единицы, остальные с нуля, этот код выводит все подряд, но даже так светодиод моргает если в предыдущих байтах присутствовала единица. Смотрел вход RX - фронты не смазаны, поэтому с аппаратной частью все должно быть ок. Уже раз 10 перепроверил все настройки UART. Тактируется все от 20 МГц кварца, подключил еще сдвиговый регистр со светодиодами для отладки(функция send и регистр led для нее, с ней проблем нет, я проверял)

.include "2313def.inc"

.def temp = r16
.def led = r17

.org 0x0000
rjmp reset

reset:

ldi temp, RAMEND
out spl, temp

sbi DDRD, PD6

ldi temp, (1<<PB0|1<<PB1|1<<PB3) ;PB0 - DO PB1 - sck PB3 - latch
out DDRB, temp

ldi temp, 0
out UBRRH, temp

ldi temp, 39
out UBRRL, temp

ldi temp, (0b00000000)
out UCSRA, temp

ldi temp,(1<<UCSZ1|1<<UCSZ0)
out UCSRC, temp

ldi temp, (1<<RXEN)
out UCSRB, temp

rjmp main

main:
sbic UCSRA, RXC
rcall UART
rjmp main

UART:
in temp, UDR
mov led, temp
;sbrc temp, 7
rcall send
ret

send:
cbi PORTB, PB3


sbrs led, 7
cbi PORTB, PB0
sbrc led, 7
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 6
cbi PORTB, PB0
sbrc led, 6
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 5
cbi PORTB, PB0
sbrc led, 5
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 4
cbi PORTB, PB0
sbrc led, 4
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 3
cbi PORTB, PB0
sbrc led, 3
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 2
cbi PORTB, PB0
sbrc led, 2
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 1
cbi PORTB, PB0
sbrc led, 1
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 0
cbi PORTB, PB0
sbrc led, 0
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1


sbi PORTB, PB3
ret


Upd: Всем спасибо, проблема видимо действительно была из-за скобок!


Последний раз редактировалось %MUSHRUM Сб май 10, 2025 15:40:41, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Пт май 09, 2025 19:47:48 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18741
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
в такой записи
ldi temp, (1<<PB0|1<<PB1|1<<PB3)
в скобки нужно брать каждое выражение. должно быть так:
ldi temp, (1<<PB0)|(1<<PB1)|(1<<PB3)
и ниже
ldi temp,(1<<UCSZ1|1<<UCSZ0)
такая же ошибка.
ldi temp,(1<<UCSZ1)|(1<<UCSZ0)

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Сб май 10, 2025 04:53:05 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 0
Starichok51 Это не ошибки.
%MUSHRUM AT90S2313 и ATtiny2313 похожи, но имеют отличия. Поэтому, нужно инклудить точно. Как вариант...
Спойлер
Код:
.include "tn2313def.inc"
;.include "2313def.inc"

.equ   Fcpu=20000000

.equ   BAUD=31250

.def temp = r16
.def led = r17

.org 0x0000
rjmp reset

reset:

ldi temp, RAMEND
out spl, temp

sbi DDRD, PD6

;   ldi temp, (1<<PB0)|(1<<PB1)|(1<<PB3) ;PB0 - DO PB1 - sck PB3 - latch
ldi temp, (1<<PB0|1<<PB1|1<<PB3) ;PB0 - DO PB1 - sck PB3 - latch
out DDRB, temp

   SBI PORTB, PB3

   LDI   R22,HIGH(Fcpu/16/BAUD-1)
   OUT   UBRRH,R22
   LDI   R22,LOW(Fcpu/16/BAUD-1)
   OUT   UBRRL,R22
;ldi temp, 0
;out UBRRH, temp

;ldi temp, 39
;out UBRRL, temp

;ldi temp, (0b00000000)
;out UCSRA, temp

;ldi temp,(1<<UCSZ1|1<<UCSZ0)
;out UCSRC, temp

ldi temp, (1<<RXEN)
out UCSRB, temp

   IN   R22,UDR   ;псевдочтение для сброса RxC
;rjmp main

main:
   SBIS   UCSRA,RxC
   RJMP   MAIN

   IN   LED,UDR
   RCALL   SEND

   RJMP   MAIN
;sbic UCSRA, RXC
;rcall UART
;rjmp main

;UART:
;in temp, UDR
;mov led, temp
;sbrc temp, 7
;rcall send
;ret

send:
cbi PORTB, PB3

sbrs led, 7
cbi PORTB, PB0
sbrc led, 7
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 6
cbi PORTB, PB0
sbrc led, 6
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 5
cbi PORTB, PB0
sbrc led, 5
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 4
cbi PORTB, PB0
sbrc led, 4
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 3
cbi PORTB, PB0
sbrc led, 3
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 2
cbi PORTB, PB0
sbrc led, 2
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 1
cbi PORTB, PB0
sbrc led, 1
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1

sbrs led, 0
cbi PORTB, PB0
sbrc led, 0
sbi PORTB, PB0

sbi PORTB, PB1
cbi PORTB, PB1


sbi PORTB, PB3
ret
.EXIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Сб май 10, 2025 11:48:38 
Родился

Зарегистрирован: Пт май 09, 2025 17:03:41
Сообщений: 2
Рейтинг сообщения: 0
akl, я проверял def файл, все регистры и биты совпадают. Вернее там некоторых небыло но я, дурак, сначала думал что файл кривой и все поправил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Сб май 10, 2025 11:56:16 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6039
Откуда: Minsk
Рейтинг сообщения: 0
Давненько не брался за АВР, но по-моему, это всё же ошибки. Если скобки не как у Starichok51, то результат м.быть х. зн. какой. Ведь оператор | приоритетней >> Можно прогнать через ассемблер тот и другой вариант и посмотреть - какая константа сгенерируется. Мне лень...

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Сб май 10, 2025 13:40:15 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18741
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
у меня уже была такая ошибка, поэтому я и написал, что это ошибка.
пока я не взял каждую часть выражения в скобки, не работало.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Сб май 10, 2025 13:48:36 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Насчет скобок Starichok51 абсолютно прав.
8)
А вот сами *.inc (и их размещение в папках) зависят от того, какой компилятор ассемблера в проекте АВР студии на вкладке project -> assembler option -> AVR assembler указан avrasm(version 1) или avrasm2(version 2).
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Вс май 11, 2025 04:58:56 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 0
Проверил в студии все 3 записи. Всегда студия занесла в DDRB одно и тоже значение. :)

Код:
   ldi temp,1<<PB0|1<<PB1|1<<PB3 ;PB0 - DO PB1 - sck PB3 - latch
   out DDRB, temp
   ldi temp, (1<<PB0)|(1<<PB1)|(1<<PB3) ;PB0 - DO PB1 - sck PB3 - latch
   out DDRB, temp

ldi temp, (1<<PB0|1<<PB1|1<<PB3) ;PB0 - DO PB1 - sck PB3 - latch
out DDRB, temp


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Вс май 11, 2025 08:01:03 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18741
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
интересно, я сейчас тоже проверил, и тоже получил одинаковые значения.
а как же у меня тогда не работало, пока я не наставил скобок? наставил скобок и заработало.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с UART attiny2313
СообщениеДобавлено: Вс май 11, 2025 11:11:15 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6039
Откуда: Minsk
Рейтинг сообщения: 0
Возможно, от компилятора зависит? Или от набора данных?
Во всяком случае, даже для наглядности и читаемости скобки - полезная вещь, организуют правильную мысль, не напрягая зря мозги: а что там за чем следует.
Я когда-то так в Дельфи лоханулся: не учёл, что or приоритетней операции сравнения и очень удивлялся: куда это моих ifов заносит?
Один умный автор иронично заметил: "Некоторые программисты считают, что мировой запас скобок ограничен и поэтому применяют их крайне редко".

_________________
Изображение


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

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


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

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


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

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


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