Отговори на тема  [ 12 мнения ] 
Използване на RS232 и I2C 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение Използване на RS232 и I2C
Здравейте,
Искам да си направя една малка схемичка която да чете данни от I2C EEPROM и/или I2C RTC и да ги изпраща по сериен канал към PC. Възможно ли е да се използва USART модула и SSP модула на един PIC16F917 заедно, или единия от протоколите трябва да го реализирам софтуерно?
Благодаря на всички отговорили предварително :)


Пон Мар 31, 2008 1:50 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
На някои (доста) от пиковете SSP и UART ползваха един и същи пин. Ако твоя не е от тях - проблеми няма. Но дори и да е от тях - може да се ползва мултиплексор и да се превключват перифериите - забраняваш едната, разрешваш другата, превкючваш пина... и после наобратно. :evil: Дървено. Ама ако няма друг начин...


Пон Мар 31, 2008 2:01 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение 
Уви от тях е. Използва RC6 и 7. И аз си мислех да забранявам перифиерия но разполагам в момента с MAX232, а той няма вход за разрешаване/забраняване. Освен софтуерно друго не успях да измисля :(


Пон Мар 31, 2008 3:30 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Е, не, имам предвид мултиплексор от рода на 4053. Но по-добрия начин е да смениш контролера


Пон Мар 31, 2008 3:59 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение 
Ахам, разбирам, но за да го използвам ми трябват още поне 1 краче. Мисля че ще може да жертвам. Интересно ми е дали има друго решение на въпроса? Мерси за идеята.


Пон Мар 31, 2008 4:27 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
Ако не правиш нищо друго жизненоважно с процесора слагай софтурен УАРТ или софтуерен И2Ц! Той ПИКа е мощен, дори е двете да са софтуерни :)
То всъщност ако не правиш нищо друго дори не ти трябва и ПИК де, само един МАХ, но тогава ще трябва малко програмиране в РС-то.


Пон Мар 31, 2008 4:27 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение 
Смятам и други работи да прави :) Като ги измисля ще споделя. Сега нямам много време че хем съм болен хем и една статия дописвам, но от сряда.... :):):)


Пон Мар 31, 2008 4:52 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Окт 11, 2006 8:19 pm
Мнения: 373
Местоположение: София/Edinburgh, UK
Мнение 
Ако ползваш CCS може да ползваш I2C модула, а за серийната връзка да избереш друи 2 пина и така компилатора сам генерира софтуерни функции за RS232 комуникация. На скоро завърших едно такова устройство :)

_________________
Българският портал за РОБОТИКА


Пон Мар 31, 2008 9:54 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение 
А така няма ли да стане? С два диода си правя логическо И. С едно допълнително краче на контролера, свързано едновременно към логическото "И" и адресните крачета на ЕЕПРОМа. При нула на това краче забранявам всякакви данни към RSa, а в същото време адреас на ЕПРОМа е с "1" на адресните крачета.


Прикачени файлове:
shema rs232.JPG
shema rs232.JPG [ 35.98 KiB | Прегледано 4039 пъти ]
Пон Мар 31, 2008 10:41 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
В началото си помислих че си объркал цялата схема, ама пък викам точно ти да я объркаш нещо не се връзва. После се загледах и видях каква е идеята. Като идея е добре, обаче практическата полза за съжаление е много малка, после ще кажа защо.
Цитат:
При нула на това краче забранявам всякакви данни към RSa, а в същото време адреас на ЕПРОМа е с "1" на адресните крачета.

Помисли пак! ;)
Номера като гледам е да вадиш данните от еепрома и директно към макса. По принцип става, обаче ще трябва да попреработиш схемата за енейбъл и то така че да не се променя айдъл стейта на 232, който е лог.1, и като бърникаш в еепрома да не се променя лог.1 за макса.
Като пращаш байт по 232 трябва да видиш как да пращаш по един старт бит и по един стоп бит накрая. Като гледам може с енейбъла RC4 да стане старта, а стопа, да изчакаш малко накрая да има "1" поне 1 бит време.
Не разбрах R1IN за какво е свързан, ако да записваш данни в еепрома, как ще му пращаш клок а и както са накъсо ако предаваш данни и PC-то реши да праща данни ще има малко къси съединения хиххихи. Може и това,ама пак ти трябва да пишеш бая. Има и една техническа грешка, че R1IN е откъм РС страната.
Сещам се една идея, че еепрома може просто да му спреш клока не се сещам в 1 или 0 , така че да няма старт кондишън, така може и да не му ползваш адресните крачета. Така че може още по-хард, с някаква схема с транзистор и кондезатор да гледаш дали има клок към еепрома и да забранява макса. Така не ти е нужен RC4 :) ама старт битовете....:cry:

Така че ако дръпнем чертата - като сложим постоянното превключване I2C <-> UART имаш достатъчно софтуерно внимание, колкото да си имаш изцяло софтуерно И2Ц отделно. Поне според мене. Освен това ще стане доста по-бързо за писане. Като си иамш отделно И2Ц сигурно ще искаш да закачиш още устройства, като часовници и датчици, и тогава 2 крака са си съвсем ефективни , защото имаш бая устройства само на 2 крака. От друга страна,като си имаш хардуерен уарт изцяло по прекъсвания, ти не се занимаваш софтуерно изобщо. получаваш прекъсване, ако дойде байт от РС-то , получаваш прекъсване и че уарта ти е пратил байта, който си му казал и че можеш да пращаш още. Така имаш сигурна двупосочна комуникация, както и по-бърза. И2Ц-то е по-добре да е софтуерно, отколкото уарта, тъй като е по-бързо (400кХц) и ще отделяш по-кратко време в софтуера за него. Е при равни други условия.
Айде успех с ПИКовете !!!

едит: сега виждам данните от ПС-то отиват на RX на пика , не че ще ги пращаш на еепрома директно


Вто Апр 01, 2008 11:45 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Изведнъж се почувствах много тъп, съзерцавайки тази схема :oops: TX как стига до max-a ? :oops:
Все едно де, моето мнение все пак е да си потърсиш контролер, на който UART и SSP не са застъпени. Това с мултиплексора съм го ползвам, признавам, но когато наистина няма друг избор. Например 4550 с USB, UART и SPI едновременно


Вто Апр 01, 2008 4:07 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Яну 26, 2007 5:05 pm
Мнения: 310
Местоположение: из България
Мнение 
setoy написа:
Изведнъж се почувствах много тъп, съзерцавайки тази схема


Недей, аз снощи в бързината да я направя преди да си легна малко много съм я оцвъкал :(

Станиславе, прав си спор няма че в моя случай най-добре ще си да е с софтуерно I2C и хардуерно USART.
Просто ми беше интересно какво се прави в такъв случай. Особено пък ако имаш нужда и от SPI.
Най-вероятно ще го направя с софтуерен I2C както stanleyhacker съветва :)

Ще видим какво ще стане.
Иначе с диодите схемата трябваше да изглежда нещо като тази по-долу.


Прикачени файлове:
2shema rs232.JPG
2shema rs232.JPG [ 36.7 KiB | Прегледано 4023 пъти ]
Вто Апр 01, 2008 6:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 12 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни