Перейти к содержанию

crazz

Рекомендуемые сообщения

все что я нашел, так это http://www.ise.pw.ed...icadc/RS232.png ------- это оно?
Оно, только питание во второй схеме можно взять +5В с питания контроллера, иначе надо будет выставлять линии управления RTS и DTS порта в "0" чтобы там появилось +12В и схема заработала.
Я думаю будет так: X = PORTC & (1>>5);

Если не ошибаюсь, так ты считаешь только 5-й бит.

чтобы отсечь илшние биты надо сделать операцию AND над считанным значением и маской вроде 0b01111111

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

подскажите как связать два МК? т.е. на одном 10 кнопок а на другом 10 светодиодов.. при нажатии кнопки на одном МК должен соответствующий диод загораться на другом МК..

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Соедини два вывода одного контроллера (и общий провод) и два другого.

На один будешь подавать каждый раз то 1 то 0, а на втором выставлять очередной бит.

Алгоритм такой: Первый контроллер устанавливает на одной линии(назовем её SYNC) 1, и на второй линии(назовем её Data) тоже 1, это будет условием начала передачи данных.

Переход на линии SYNC с 1 на 0 должен рассматриваться вторым контроллером как момент передачи бита, который установлен на линии DATA.

Затем в таком же порядке передаем нужные 10 бит:

1) устанавливаем на линии DATA очередной бит

2) задержка в несколько десятков микросекунд(зависит от длины линии, из-за индуктивности провода и конечной емкости входа контроллера значение на DATA может не успеть установится за время одного маш.цикла!)

3) делаем SYNC = 1

4) задержка в 10 мкс(см. комментарий пункт 2)

5) делаем SYNC = 0

6) задержка 10 мкс и больше, минимальная задержка должна быть не менее (см. пояснение к пункту 2)

и в основном определятся будет необходимым быстродействием передачи

по окончании аналогичным образом передаем "0", который будет как бы свидетельствовать что передача окончена.

Таким образом мы фактически передаем 12 бит: "1dddddddddd0".

Что должен делать второй контроллер:

как только обнаружит на линии SYNC "1" считать с линии DATA значение и ожидать появление 0 на линии SYNC.

Далее, по этому алгоритму считывать до тех пор пока не появится 1, после этого точно так же считать и сохранить 10 бит, считать следующий бит - и если он равен нулю то вывести сохраненные 10 бит на выводы порта, иначе ничего не делать - скорей всего это какой-то сбой.

Дополнительно, можно вставить проверку если во время считывания задержка между битами составит 2-5-10мс и больше - перейти к ожиданию начала передачи, это предотвратит "зависание" при каком-либо сбое.

Первый контроллер может передавать данные при изменении состояния кнопок, либо периодически - например каждые 20..100мс, чтобы в случае чего дать второму контроллеру время синхронизироваться с началом передачи.

п.с. Если надо передавать по одному проводу - можно заменить алгоритм передачи и приема на другой - 1 и 0 кодировать длительностью импульсов. подпрограмма передачи при этом должна будет формировать импульс определенной длительности в зависимости от передаваемого бита, а алгоритм приема - измерять длительность импульса и сравнивать с допустимым интервалом для 1 и для 0.

И не забываем о защите длинных линий - или при помощи резистор+стабилитрон, или при помощи супрессора, иначе во время грозы, или работы рядом с силовыми установками можно очень просто сжечь вход микроконтроллера.

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Alexeyslav спасибо! но мне в железе этого делать не надо! только реализовать в Proteus. Общий выход как обозначен? MCLR или как? Т.е. как я понял на принимающем МК процесс поступления информации можно всё одним циклом реализовать через if и else или надо будет задействовать SPI, I2C или UART?

Ссылка на комментарий
Поделиться на другие сайты

Можно циклом, а можно и через UART - но у новичков почему-то возникают проблемы с его инициализацией и последующей работой...

В протеусе, контроллеры и так соединены по питанию, поэтому общих выводов соединять без надобности. А вообще, общий вывод всегда обозначается как GND на схемах, или "-" вывод питания контроллера(в протеусе выводы питания скрыты).

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Alexeyslav тот, кто мне задал такую задача сказал, что не всё так легко как кажется) т.е. сначала я задолблюсь с 8 кнопками и светодиодами а когда пойму что да как, то намучаюсь с десятью... не можешь поведать что имелось ввиду под этим?

Ссылка на комментарий
Поделиться на другие сайты

Конечно, тут надо ладить с отладчиком. Никогда ничего не работает с первого раза, что-то да забываешь. Главное по шагам делать, всегда убеждаясь что очередной шаг проходит так как нужно. Сначала заставь считывать кнопки в регистр (кнопок 10, значит надо использовать два регистра или ячеек памяти и при передаче уметь сдвигать их синхронно через перенос)

Затем приниматься за передачу данных, или свой способ или используя UART... но с этим задолбишься - вроде все понятно все правильно делаешь, а не работает... и потом только после пары часов лазания по форуму узнаешь что надо сделать какое-то простое действие.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Вообщем нубский вопрос) Нужен мк получается на 11-12 портов, желательно с русским мануалом и примерами. Пишу диплом) Осталось 15 дней вот думаю изучить pic будет намного легче чем atmel! Да и PIC-и говорят дешевле! А мне как раз в плюс для экономической части!

Ссылка на комментарий
Поделиться на другие сайты

Ну это вполне нормально студенты же) Жду ответов) Каждая минута на счету...

Кстати анекдот на эту тему вспомнил:

Спрашивают у профессора наук:

-За сколько, вы выучите китайский язык?

-Ну,думаю за лет 7, 6.

Спрашивают у магистра:

-За сколько вы,выучите китайский?

-За лет5!

Спрашивают в бакалавра:

-за года 3 или даже 2.

Спрашивают у студента:

-А,вы за сколько выучите?

-а когда сдавать?:)

Изменено пользователем glok87
Ссылка на комментарий
Поделиться на другие сайты

Ну один МК выучить несложно чтоб написать програмулину!

Нужен мк получается на 11-12 портов, желательно с русским мануалом
http://www.microchip.ru/files/d-sheets-rus/pic16f62x.pdf

СПС большое а в чем отличается от pic16f627A - тока буквой А? ))) Дело в том что я на Proteus 7.7 буду эмулировать программу!

Ссылка на комментарий
Поделиться на другие сайты

В PROTEUS эмулирую 16F628А! Но где у него там ножка питания о.0 Взял программу для его аналога PIC16F84

Компилирую, все норм! ставлю HEX-файл, запускаю дейсвий нет! Думаю что это из-за питания! я прав?

>>>> Разобрался) землю забыл цепнуть!

Вот по этому делу очень хороший мануал!

Изменено пользователем glok87
Ссылка на комментарий
Поделиться на другие сайты

Это скорей его предшественник, чем аналог... 16F628 более современный, хотя и он уже тоже снят с производства. основное отличие - биты конфигурации и набор переферии. Чтобы заработали многие программы на 628 необходимо произвести ряд действий - по умолчанию у него включены компараторы которых не было в 84-м, и они мешают нормальной работе программ. Так что лучше использовать программы/прошивки с теми контроллерами для которых они предназначены!

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

; описание опеpационных pегистpов
TMR0            EQU     01h
PC              EQU     02h
STATUS          EQU     03h
FSR             EQU     04h
; pегистpы ввода/вывода
CNTRLPORT       EQU     05h
DATAPORT        EQU     06h
; ячейки ОЗУ
SCRATCH         EQU     0Ch
DIGIT           EQU     0Dh
; биты pегистpа STATUS
C               EQU     0h
DC              EQU     1h
Z               EQU     2h
PD              EQU     3h
TO              EQU     4h
RP              EQU     5h
; упpавляющие pегистpы
TRISA           EQU     85h
TRISB           EQU     86h
; слова инициализации для поpтов ввода/вывода
INITA           EQU     B'00000000'
INITB           EQU     B'00000000'

; Рабочая секция

; начало исполняемого кода
       ORG     0
       GOTO    BEGIN
;
       ORG     100h
BEGIN
;Инициализация порта А
       BCF     STATUS,RP    ;Выбор банка 0
       CLRF    CNTRLPORT    ;Очистить регистр CNTRLPORT
       MOVLW   INITA        ;Загpузить B'00000000' в pегистp W
       BSF     STATUS,RP    ;Выбор банка 1
       MOVWF   TRISA        ;Все разряды порта А установить как выходы
;Инициализация порта В
       BCF     STATUS,RP    ;Выбор банка 0
       CLRF    DATAPORT     ;Очистить регистр DATAPORT
       MOVLW   INITB        ;Загpузить B'00000000' в pегистp W
       BSF     STATUS,RP    ;Выбор банка 1
       MOVWF   TRISB        ;Все разряды порта В установить как выходы 
;
       BCF     STATUS,RP    ;Выбор банка 0
;
       MOVLW   B'0001101'     ;загpузить 01010101 в pегистp W
       MOVWF   CNTRLPORT        ;записать W в поpт B (DATAPORT)
       GOTO    $               ;зациклиться навсегда

;
END
;

Тут я вывожу на порты! А как считать именно на RA7? Книжка хорошая - операции есть, и как вывести, а как считать нету(((

Alex, Alexeyslav спс за информацию

        MOVWF   TRISA        ;Все разряды порта А 

Здесь выдает еще сообщение

Register in operand not in bank 0. Ensure that bank bits are correct.

Изменено пользователем glok87
Ссылка на комментарий
Поделиться на другие сайты

Это предупреждение, если перед этим ты переключил банк регистров на нужный то все нормально. Предупреждение это возникает если непосредственно перед командой нет переключения банка. если после переключения идут подряд две операции с регистрами с банка отличного от нуля - на второй команде будет такое предупреждение. Тут нужна только внимательность...

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

1) читаем с порта(тут ксати стоит почитать документацию - считать ты можешь только выходные пины, а не защелку порта! т.е. если выходной пин будет принудительно аппаратно занулен, то даже если в защелке порта будет стоять 1 ты считаешь 0 со всеми вытекающими последствиями!)

2) применяешь лог. операцию AND 0b01111111 для установки нуля, либо OR 0b10000000 для установки 1

3) записываешь результат обратно в регистр порта.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

вместе с MPLAB не идет? Да собственно зачем тебе библиотека эта, имена регистров можно и самому определить.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

MPLAB нету к сожалению! Там на примерах от 84 используют! Ладно буду сам писать! Кстати по поводу пиков! чень легко изучаемы! Чувсвую к завтрашнему утру моя простая программка будет готова!

Ссылка на комментарий
Поделиться на другие сайты

Зря ты, скачай MPLab, там же и программу вводить там же и отлаживать можно. А в протеусе удобно отлаживать только когда все уже готово, косяки искать.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...