Страница 282 из 628

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 18, 2012 16:25:11
pyzhman
Вешать можно на любую лапку, все равно там свой протокол.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 18, 2012 21:39:59
Volgol_555
Всем привет. Возможно это было ранее, возможно и глупо, но все же...
Я ещё не достаточно изучил USART, но я так понял что для его реализации нужны только 2 ноги МК (RxD и TxD)? С учетом того, что я делаю проект с последующим наращиванием функций, встал такой вопрос. Могу ли я использовать USART и параллельно подключить нагрузку, но так чтобы ничто друг другу не мешало???
Уточняю: мне нужно подключить LCD дисплей на порты D у Atmega8 и в тоже время пользоваться USART'ом, а это порты D.0 и D.1. Если поставить резисторы в 4.7кОм, на именно эти 2 порта идущие к LCD - это поможет?
Заранее спасибо)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 18, 2012 22:07:26
ploop
Что-то я опять затупил...
Можно как-то сложить знаковое 8-битное число с беззнаковым 16-битным без условных переходов?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 18, 2012 22:10:05
pyzhman
резисторы в 4.7кОм, на именно эти 2 порта идущие к LCD - это поможет?
От чего поможет?
Вообще говоря - нет, поскольку одним выходом вы собираетесь управлять двумя входами. Ясен пень они оба будут ловить инфу. Но! Если продумать как следует, то возможно, что одно другому и не помешает или будет не мешать работать как надо. Все зависит от ваших возможностей.
2ploop: Навскидку: знаковый бит размножить на старший байт и сложить два двухбайтных числа.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 18, 2012 23:46:03
ploop
Типа этого?

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

; r16 - LSB беззнакового 16-битного
; r17 - MSB беззнакового 16-битного
; r18 - знаковое 8-битное
  clr r19
  bst r18,7
  bld r19,0
  neg r19
  add r16,r18
  adc r17,r19

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 04:14:31
BerZerK-ku
Вот что значить асм мышление, я бы о подобном подходе и не подумал :))) :

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

clr r19
sbrc r18, 7
ldi r19,0xFF

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 05:13:36
Alkul
Volgol_555 писал(а):Я ещё не достаточно изучил USART, но я так понял что для его реализации нужны только 2 ноги МК (RxD и TxD)?
Если Вы говорите именно про USART, то, исходя из названия, он может работать как в асинхронном, так и в синхронном режиме.
Для асинхронного режима достаточно двух пинов (выводов) - RxD и TxD, вы правы. А для синхронного режима задействуется третий пин - XCK (вроде, так он называется) для подачи синхроимпульсов.
Volgol_555 писал(а):С учетом того, что я делаю проект с последующим наращиванием функций, встал такой вопрос. Могу ли я использовать USART и параллельно подключить нагрузку, но так чтобы ничто друг другу не мешало???
Уточняю: мне нужно подключить LCD дисплей на порты D у Atmega8 и в тоже время пользоваться USART'ом, а это порты D.0 и D.1.
Я настоятельно не рекомендую так делать. Во-первых, это моветон :) , а во-вторых - под LCD дисплеем Вы понимаете что-то подобное WH1602 (на контроллере HD44780, в общем)?
Если да, то для управления таким дисплеем пины микроконтроллера, как правило, переключаются в режим выходов.
Таким образом, для подачи управляющего сигнала на дисплей Вам будет нужно переключить пин RxD в режим выхода, а это можно сделать, только отключив USART. При этом, скорее всего, потребуются добавочные схемотехнические решения для исключения конфликтов наподобие подачи логических уровней на выходные цепи драйвера преобразования интерфейса USART TTL в RS-485/422/232. И Вы сможете, во-первых, потерять байт(ы), поступившие на USART в то время, когда Вы управляете дисплеем. Во-вторых, из-за отключения USART при этом Вы не сможете организовать отправку данных по USART, используя прерывания по передаче байта.

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

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 06:34:29
ploop
Вот что значить асм мышление, я бы о подобном подходе и не подумал
Угу, просто спать больше надо :)))

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 07:35:56
pyzhman
Типа этого?
Проканало? А то вломы проверять. :oops:

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 07:44:02
ploop
Не знаю, на работе пока, девайс дома :)
Судя по расчетам - должно.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 12:59:01
Volgol_555
Alkul писал(а):
Я понимаю, что у Вас, скорее всего, есть готовые подпрограммы для работы с дисплеем, рассчитанные для подключения дисплея к порту D. Поверьте, гораздо проще будет внести изменения в эти подпрограммы и перенести дисплей на другой порт. Тем более, что изменения не так уж и велики.
Спасибо, я тоже так думал - переделать программу на другой порт, - но мне дозволяется в CodeVisionAVR у Atmega8 выставить LCD на порты B или D. Но мне нужны порты D.0 и D.1 для USART и порты B.6 и B.7 для внешнего кварца, т.е. конфиг портов B и D не подходит. Остается только порты C. Но к нему относится порт С6-reset, поэтому CodeVision не позволяет выполнить подключение к C, но есть С.3, который по идее свободный и можно было бы его поставить вместо С6. Так вот вопрос: как в CodeVision поменять порт С6 c С3 для LCD дисплея. Пробовал в библиотеки залезть, но там ничего конкретного нету(
Вот как в CV проходит инициализация портов для B
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
Как сделать для портов C ?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 13:10:45
ChipKiller
Volgol_555 писал(а):Как сделать для портов C ?
.. заглянуть в datasheet или файл mega8.h в папке inc.

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

#asm
.equ __lcd_port=0x15 ;PORTС
#endasm

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 13:22:53
Volgol_555
ChipKiller писал(а):
Volgol_555 писал(а):Как сделать для портов C ?
.. заглянуть в datasheet или файл mega8.h в папке inc.

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

#asm
.equ __lcd_port=0x15 ;PORTС
#endasm
да, нашел) Остался один вопрос. Можно ли С6 заменить на С3?, скажем переопределить заново? И так чтобы это сработало с LCD дисплеем, т.е. в каком-то смысле его обмануть посылая сигнал не С.6, как это должно быть,а на С3, соответственно туда ногу подключив. При этом сделать наиболее просто не переправляя библиотеки. Если да, то как это можно сделать на Си?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 14:26:50
DJ_Kiridza
pyzhman писал(а):Вешать можно на любую лапку, все равно там свой протокол.
Проблема не в том, чтобы вешать на лапку - это я и сам понимаю, корень вопроса звучал:
"подходит ли USI для работы с DS18B20" ??

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 14:32:39
Gudd-Head
DJ_Kiridza писал(а):"подходит ли USI для работы с DS18B20" ??
Проще с нуля написать 1-Wire, чем колдовать с USI.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 17:23:10
ploop
pyzhman писал(а):
Типа этого?
Проканало? А то вломы проверять. :oops:
Вот так вот:

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

  clr r19
  sbrc r18, 7
    ldi r19,0xFF
  add r16,r18
  adc r17,r19

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 17:29:16
pyzhman

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

sbrc r18, 7
Что за фигня???!!!! Сначала одно, потом другое. Пацан сказал - пацан сделал. Некрасиво как-то получается. :)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 17:52:48
ploop
Дык, я как покороче :)))
Работает главное...

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 18:17:05
pyzhman
Так и говорил бы - покороче, а не морочить голову людям. Расстроил ты меня. Пойду водку пить, вчера мне обещали. :)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 19, 2012 18:21:39
ploop
Кстати первый вариант тоже работает.
Так что много не напивайся :)