Например TDA7294

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





Текущее время: Вт апр 16, 2024 23:28:04

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


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



Начать новую тему Ответить на тему  [ Сообщений: 35 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Чт окт 19, 2017 22:39:11 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
КРАМ
спасибо за совет про пины, я совсем не догадался про такое решение. Попробую обязательно. По К-шине,- нет, протокол ISO-14230 аналог UART (во всяком случае анализатор в режиме UART его читает), фиксированная скорость в 10400, уровни +12 и 0 в.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Вс окт 22, 2017 16:22:15 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
Поступил по совету Крама, сделал светодиодную индикацию, светодиод гаснет, когда приемник принимает нужное число. Так вот, при этом, если это число сделать равным '1000 0010' (0x82, что и должно прийти), индикации приема нет. А если выставить его равным '0000 0010' (как показывает анализатор), то светодиод гаснет, показывая что приходит именно число '0000 0010' (0x02) При этом в Протеусе все работает. В каком направлении двигаться дальше? Попробовать поменять контроллер? Кстати, пробовал с внешним кварцем на 4.433619, результат тот же.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пн окт 23, 2017 16:38:15 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
Сегодня попробовал другой контроллер (покупал в другом магазине, чтобы не попались из одной партии). Результат тот же. 0x02 вместо 0x82. У кого есть мысли на этот счет, очень прошу помочь.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пн окт 23, 2017 16:47:59 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21790
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Последний вариант кода выложите (где эхо-приемник)


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пн окт 23, 2017 16:56:46 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
вот то, что есть сейчас. Комментарии могут быть некорректны, так как много чего изменял. и еще, здесь идет отправка и прием числа 0x02, а вообще изначально было 0x82

Код:
; контроллер - PIC16F628A
#include "p16f628a.inc"
 __CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; конфигурация контроллера
; объявление регистров
 Reg_3 equ h'0023'
 DATA_OUT equ h'0010'
 DATA_IN equ h'0020'
 ERR equ h'0021'
 COUNT equ h'0022'
 Reg_1 equ h'0011'
 Reg_2 equ h'0012'
 org 0000h
 goto START ; вектор сброса
 
 org 0004h
 retfie ; вектор прерывания
 
 ;основная программа инициализации контроллера
START
 clrw ; сброс W
 bcf STATUS,RP0
 bcf STATUS,RP1 ; переход в банк 0
 movwf INTCON ; запрет всех прерываний
 movwf PIR1; сброс всех флагов прерываний
 bsf STATUS,RP0 ; переход в банк 1
 movwf PIE1 ; запрет прерываний от периферии
 bcf STATUS,RP0 ; переход в банк 0
 
; отключение неиспользуемых модулей
 movlw 07h
 movwf CMCON ; отключение модуля компараторов
 
 clrf T2CON ; отключение таймера 2
 
 clrf CCP1CON ; отключение ШИМ
 
 bsf STATUS,RP0 ; банк 1
 clrf VRCON ; отключение источника опорного напряжения
 
 bcf OPTION_REG,T0CS ;обнуляем бит T0CS, что соответствует тактированию TMR0 от внутреннего сигнала
 
 bcf STATUS,RP0 ;0-й банк       
 clrf T1CON; отключение таймера 1
 
; настройка модуля USART
 bsf STATUS,RP0 ; банк 1
 movlw b'11111110' ;
 movwf TRISB
 movlw b'00011001'
 movwf SPBRG ; 24. скорость обмена - 10400
 
 movlw b'10000111'
 movwf TXSTA ; внутреннее тактирование, 8 разрядная передача, !передача разрешена, асинхронный режим, высокоскоростной режим
 

 
 bcf STATUS,RP0 ; банк 0
 movlw b'11111111'
 movwf PORTB
 movlw b'10111000'
 movwf RCSTA ; USART вкл, 8 разрядный прием, прием запрещен
 bsf STATUS,RP0 ; банк 1
 bsf OPTION_REG,NOT_RBPU ; вкл. подтяжку
 bsf TXSTA,TXEN ; вкл. передачи
 bcf STATUS,RP0 ; банк 0

; основной цикл
MAIN
 call DELAY
;подпрограмма отправки запроса
 movlw b'00000010' ;
 movwf DATA_OUT ;
 call DELAY
 call TRANSFER ; передача 0x82
 call DELAY
 call RECIEVE
 goto MAIN
 
 ; подпрограмма приема запроса
RECIEVE
 clrf COUNT
 clrf ERR ; обнуление признака ошибки
 btfss PIR1,RCIF ; пришел ли символ?
  goto RECIEVE ; если нет то повторная проверка
 btfss RCSTA,FERR ; была ли ошибка кадрирования?
  goto CHECK_OERR ; если нет, то проверка переполнения
 movlw -1 ; иначе фиксирование ошибки
CHECK_OERR
 btfss RCSTA,OERR ; было ли переполнение?
  goto EXIT ; если нет, то завершение обработки ошибок
 decf ERR,f ; иначе фиксация ошибки
 decf ERR,f
 bcf RCSTA,CREN
 bsf RCSTA,CREN ; и сброс логики приемника
EXIT
 movf RCREG,w
 movwf DATA_IN
IN
 bcf STATUS,Z ; проверка 82
 movlw b'00000010'
 subwf DATA_IN, w
 btfss STATUS,Z
  bsf PORTB,RB0
 btfss STATUS,Z
  return
 
 call DELAY_2
 bcf PORTB,RB0
 return
 
 
 
 
 
 
DELAY
; Задержка 100 000 машинных циклов
; Длительность задержки 100 миллисекунд
; Частота задающего генератора 4 МГц

            movlw       .221
            movwf       Reg_1
            movlw       .130
            movwf       Reg_2
            decfsz      Reg_1,F
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            nop
            nop
 return
 
; подпрограмма передачи данных по USART
TRANSFER
 btfss PIR1,TXIF ; пуст ли буфер передатчика?
  goto TRANSFER ; если нет, то повторная проверка
 call DELAY
 movf DATA_OUT,w ; иначе считывание значения и копирование в буфер передатчика
 movwf TXREG
 return
 
DELAY_2
 ; Задержка 10 000 000 машинных циклов
; Длительность задержки 10 секунд
; Частота задающего генератора 4 МГц

            movlw       .223
            movwf       Reg_1
            movlw       .187
            movwf       Reg_2
            movlw       .51
            movwf       Reg_3
            decfsz      Reg_1,F
            goto        $-1
            decfsz      Reg_2,F
            goto        $-3
            decfsz      Reg_3,F
            goto        $-5
            nop
            nop
 return
 

 end


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Ср окт 25, 2017 21:23:01 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
вот скриншот полученной посылки. Отправляется 0101 0010
Изображение

Добавлено after 3 hours 43 minutes 33 seconds:
Победил свою проблему. Если кому интересно, загвоздка была в том, что для передачи использовал переменную DATA_OUT, которую разместил в ячейке 0x10. В то время как в 0 банке регистры общего назначения начинаются с ячейки 0x20


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Ср ноя 01, 2017 21:11:20 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Kavinsky, вы не пробовали читать мануал на МыПыАСМ ?
Узнаете много нового , например о директиве EQU и определении переменных...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Ср ноя 01, 2017 22:53:48 
Родился
Аватар пользователя

Зарегистрирован: Пн окт 16, 2017 05:30:58
Сообщений: 15
Откуда: Омск
Рейтинг сообщения: 0
dosikus
Скажу честно, нет. Мануал не читал. Если вам не трудно, в двух словах объясните. Что преступного в том, что я объявляю, допустим, REG1 equ h'0010'? Регистры в файле .INC объявлены точно таким же образом. То есть, как я понимаю (могу ошибаться) так можно присвоить имена хоть всем регистрам общего назначения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Чт ноя 02, 2017 08:03:20 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19
Сообщений: 378
Рейтинг сообщения: 0
Нет ничего преступного в equ, есть очевидные пробелы в знаниях о предметной области. Вот, даже перевод есть:
http://www.microchip.ru/files/d-sheets-rus/mpasm.pdf
Речь-же , по всей видимости, кроме упомянутой equ, шла о директиве cblock :
Код:
cblock 0x20
        name_1, ; name_1 будет иметь адрес 20
        name_2, ; name_2 будет иметь адрес 21
        name_3  ; name_3 будет иметь адрес 22
endc

Т.е. после cblock указывается адрес, откуда начинаются пользовательские данные. У 628-го они начинаются именно с адреса 0x20. Таким образом, ошибиться с адресами, расположив свои данные среди служебных регистров ( как у Вас в данном случае ), будет сложнее. Так-что нужно даташиты нужно до начала работы, в крайнем случае, во время работы, а не до :) ( для 628-го тоже есть на русском: http://www.microchip.ru/files/d-sheets- ... 16f62x.pdf ), ну и на Си переходить, только абстрагировавшись от асм-стиля написания программ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пт ноя 03, 2017 13:46:49 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
EQU и CBLOCK работают с именованными константами. Для GPR и SFR это нормально , адреса их фиксированы.
equ - DEFINE AN ASSEMBLER CONSTANT
cblock - DEFINE A BLOCK OF CONSTANTS
Для переменных есть:
udata что определяет начало секции неинициализированных данных
res резервирует (определяет) память под переменную
set присваивает значение переменной

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

MPASM™ Assembler,
MPLINK™ Object Linker,
MPLIB™ Object Librarian
User’s Guide


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пн ноя 06, 2017 14:29:16 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У микрочипа есть два варианта написания исходника - для абсолютной и относительной адресации.
Оба варианта для своего стиля правильные, а вот смешивать их нельзя - компилятор пошлет подальше.
В одном случае верно применение cblock, в другом целой группы udata (udata_shr, udata_ovr, udata acs).
equ - одинаково применимо в обеих случаях.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Пт ноя 10, 2017 18:23:44 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
BOB51 , будьте любезны предоставить документ где вы вычитали подобную чушь.
Каким боком объявление именованных констант и резервирование переменных может влиять на адресацию кода во флеш. Может вы наконец начнёте читать и только после прочтения писать?
Вы вероятно думаете, что нубы проглотят вашу хрень и будут смотреть вам в рот?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Чт май 05, 2022 16:08:41 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 6
Зарегистрирован: Чт янв 21, 2016 11:34:56
Сообщений: 265
Рейтинг сообщения: 0
Требуется общение по i2c от PiC16F628. У него встроенный usart, можно ли его использовать для этой цели ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Чт май 05, 2022 16:18:33 
Сверлит текстолит когтями

Карма: 20
Рейтинг сообщений: 296
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1219
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Софтуерное I2C в 16F628A работает к каждому пину, использую I2C в CCS, инициализация и вызов находятся в одной строке. USART в данном случае не имеет значения. Как это организуете с выбранным языком программирования и компилятором, зависит от Вас.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: аппаратный UART PIC16F628A
СообщениеДобавлено: Чт май 05, 2022 17:33:04 
Потрогал лапой паяльник
Аватар пользователя

Карма: -6
Рейтинг сообщений: -1
Зарегистрирован: Вс апр 03, 2022 07:01:29
Сообщений: 362
Рейтинг сообщения: 0
I2C подразумевает определенную последовательность фронтов на выводах SDA и SCL для задания состояний start, stop, restart, режим выхода open drain, а так же особый бит ack/noack, и UART это реализовать не может. Поэтому I2C можете реализовать программным способом, дерганием ног с переключением режимов выход/вход


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

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


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

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


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

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


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