Например TDA7294

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





Текущее время: Чт апр 18, 2024 18:20:16

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


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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Прием смс по USART и сохранение
СообщениеДобавлено: Пн май 08, 2017 21:50:15 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Добрый день! И с большими праздниками!!!

Попробовал написать маааленькую программу, которая бы принимала строку по прерыванию по USART и записывала ее в RAM. Проверку записи выполняю в основном теле программы. Кристалл ATtiny2313. Симулирую в Протеусе.
1) Что такое непонятные символы по приему, чередующиеся с отправленными?
Строгое появление символов не зависит от скорости набора на клавиатуре.
https://yadi.sk/i/iqytb96G3Hs9mu
Порт отражает не те данные, что записаны. Или не то записывает. Или не туда смотрю...

Сам, собственно, урезанный Код:
.DSEG
RX_Count: .byte 1

.CSEG
; ***** INTERRUPT VECTORS ************************************************
rjmp reset
rjmp RX_OK ;URXCaddr = 0x0007 ; USART, Rx Complete

Main:
sei
NOP ; Любой произвольный код главной программы

rcall long_delay

;После чего спокойно выполняем любой другой код.
;??????? Проверка факта записи в RAM????????????????????????????????
clr ZH
ldi ZL,RamStart
ldi temp3,8 ;Проверка 8 символов
v:
ld temp5,Z+
out PortB,temp5 ;вывод в порт

rcall long_delay

dec temp3 ;Is temp3 zero?
brne v ;if not, read next byte.

rjmp Main

RX_OK: ;ISR по приему
clr XH
ldi XL,RamStart ;Адрес RAM куда складываем строку

lds temp,RX_Count ;Скопируем смещение
add XL,temp ;Прибавляем смещение к адресу RAM
;clr temp2
;adc XH,temp2

cbi UCSRB, RXCIE ;Clear Interrupts

in temp2,UDR

st X,temp2
inc temp
sts RX_Count,temp

sbi UCSRB, RXCIE

reti

Где ошибка порылась?
Возможно ли на 2313 реализовать буфер для приема по USART?

Благодарен за ответы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прием смс по USART и сохранение
СообщениеДобавлено: Вт май 09, 2017 02:36:15 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Поглядите в ДШ размещение таблицы векторов прерываний.
Нет инициализации указателя стека.
В обработчике прерываний нет сохранения и восстановления используемых регистров.

Это так, на вскидку.

Протеус наверняка кучу сообщений выдал о ненормальной работы программы МК.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прием смс по USART и сохранение
СообщениеДобавлено: Пт май 12, 2017 16:54:55 
Встал на лапы
Аватар пользователя

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Протеус ошибки не выдавал, т.к. все объявлено и инициализировано.
Ошибку, наконец-то, могу описать.
В первую ячейку RamStart всегда вписывается порядковый номер принятого символа. Например:
1. передаю символ d, порт отражает 1 в младшем разряде 0000 0001
2. следом передаю символ a, порт отражает 2 в младшем разряде 0000 0010 потом d и потом a
3. следом передаю символ f, порт отражает 3 в младшем разряде 0000 0011 потом d и потом a и потом f ...
Понимаю, что решение - чтение по адресу RamStart+1, но интересно где в алгоритме ошибка.
Алгоритм прилагаю.
Спасибо за ответы.

Добавлено after 1 hour 29 minutes 24 seconds:
Уточняю.
Идет не перебор принятых символов, а теряется первый символ, вместо которого записывается количество принятых байт (значение переменной RX_Count). Т.е. теряется первый принятый символ - байт.

Решено. Работает, как написал :). Введу определение адреса перед выделением памяти.
Всем спасибо.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

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


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

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


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

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


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