|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:44 am
|
Страница 1 от 1
|
[ 12 мнения ] |
|
| Автор |
Съобщение |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 I2C MSSP PIC16F87xx
Колеги, 3 дена се боря както опълченците на Шипка с MSSP модула на PIC16FXX професорите ( вече роня крокодилски сълзи  ) Искам да чета/пиша буфер от 32 или 64 байта в 24LC515, обаче не ще и не ще пущината ... Пробвам с драйверите на CCS, обаче те работят коректно само ако пиша/чета по един байт, като ги пусна на буфер правят каквото си искат. Имам едни мои драйвери, които съм си писал преди 2-3 години и са работили коректно досега с друг MSSP модул и с I2C модула на I80552, както и с Neuron професор:
Ако само пиша буфер, от време на време работи, ако само чета в буфер, също работи от време на време, ако обаче запиша буфер, след което чета буфер, зависва на проверката на SSPIF в I2CWait(); когато записвам адреса чрез I2CWriteAddr();
Някой има ли нещо пробвано и работещо за буфери с MSSP модула щото ми иде да метна щангата през прозореца ...
|
| Чет Юли 07, 2005 11:16 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Погледна ли в пдф-а на чипа с който работиш. Имам неприятен опит с една 24ка дето се оказа че буфера и е 16 байта точно при този производител а работих с пдф на друга фирма там беще 32 или повече,вецхе нямам спомени. Производителите си позволяват такива волности с големината на буфера
|
| Чет Юли 07, 2005 11:44 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Същия проблем при мене преди година....доста си играх....накрая му бих шута на тоя MSSP  С драйвърите на CCS работи точно както казваш, по един байт...а от време на време даже и не работи. Накрая си го написах софтуерно 
|
| Чет Юли 07, 2005 11:47 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Буфера си точно 64 байта дълъг, но и 8 байта да се опитам да трансферирам се държи по същия начин. Когато обаче работят два MSSP модула, единия Master, другия Slave, или когато Master е I80552, a Slave MSSP модула работи на 100 KHz та пушек се вдига, един път не ще да забие. Софтуерно като го правя работи, обаче трябва да тръгне хардуерно, защото губя много време ако е софтуерно, а процесора е много натоварен и с други задачи. Ако само чета произволно дълъг буфер с MSSP модула всичко си работи нормално, дори и на 400kHz, обаче като се комбинира четене/запис работата се усира.
|
| Чет Юли 07, 2005 11:54 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Някои производители пишат, че след команда за запис чипът не отговаря около 5 милисекунди, та е добре след записа, ако искаш да четеш нещо, първо да го полираш дали е готов.
|
| Чет Юли 07, 2005 4:40 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Ако аз имах такъв проблем щях да сваля с логическия анализатор трансфера с паметта и оттам щях да изясня какъв точно е проблема и като знам проблема вече да ми е по лесно да определя къде бърка пика.
|
| Чет Юли 07, 2005 4:50 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
След като се стартира процеса на запис, можеш да се опитваш да започнеш нов трансфер като записваш адрес в коя да е i2c памет, но тъй като е заета, ще връща NACK, това го правя в цикъл ( т.е. това е полирането ). Когато отговори, изпращам адреса за четене и правя верификация.
Логически анализатор, дори не съм виждал през живота си таквоз животно, та камо ли в къщи да имам такова  Вместо туй чудо съм използвал 4-ри канален запомнящ осцилоскоп, върши чудесна работа.
И аз, като МикроЧип, работя на тъмно, и пускам от време на време work around-и ( така ли се пишеше ? ), т.е. метода на пробите и грешките е безотказен
Оказва се, че MSSP модула се усира в следващия код: от който няма излизане. Като го преработих така:
т.е. докато 24LC515 е заета със записа, след опита за записа на адрес правя преинициализация на MSSP модула, при което проблема се реши. Даже изпробвах 24LC515 и на 1 MHz ( а я дават, че не може да работи на 1 MHz ) и пак си работи животното....
П.П. Добре, че не си изхвърлих сутринта щангата.
|
| Чет Юли 07, 2005 5:45 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Абе аз така тънко да питам, що ползваш тия загубени драйвери. То си има регистри, мааай вътре като бял човек. Аз на С-то за Пикове библиотеките за хардуера не ползвам. Само неприятности, баси. Е не знам как е при CCS, ама на MPLABC18 са пълна скръб. Или сам си пиша или направо в регистрите, кво да му се глезя.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Чет Юли 07, 2005 7:48 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Аз съм пробвал CCS и функциите за SPI. След като се борих няколко дена с тях като прасе с тиква, ги зае*ах. И както каза Цецо, с директен достъп до регистрите си реших проблема за 1 час.
|
| Чет Юли 07, 2005 7:58 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: I2C MSSP PIC16F87xx
Ами нал Ви казах, че като не поиска да заработи с моите подпрограми ( драйвери ), реших да опитам с тези на CCS, като си помислих че от 1999г. е изтекла много вода и може и да са си ги оправили, обаче надежда всяка оставете  От CCS библиотеките почти нищо не използвам, защото все имат някакви странични ефекти. Преди време се борих с printf на CCS, исках да разпечатам число с плаваща запетая като string, оказа се че разпечатва коректно само "определен част" от float числата. Накрая си написах собствена printf и се оправи работата ...
В крайна сметка и аз пиша директно по регистрите.
Хубавото е, че моят I2C Мастер тръгна и на 1 MHz, обаче ся забелязвам други проблеми с PIC16F87xx , прехвърля се шум при едновременна работа от I2C шината към PWM модула и обратно ( крачетата са съседни ), трябва едновременно да работят, а пистите са от къси по-къси, кондензатори бол, сложих и 100nF, 1uF, 10uF директно на пиновете на захранванията на PIC16F87xx & 24LC515, ефект нулев, продължават шумилките.
|
| Чет Юли 07, 2005 8:16 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
е, е, е ... стига бе . от крче на краче ....гледа ли го с осцилоскоп ? Д а не ти кляка по захранване . въпреки кондензите, или кофти маса ...... Пробвал ли си да пуснесш писта м-у двете крачета, на земя, и от двее страни естествено ..... чак така да се смущават ..... хмммм
|
| Чет Юли 07, 2005 9:02 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Утре ще го гледам на скопа, захранването, по-добро от това здраве му кажи, няма калпава маса, това за пистата не разбрах какво искаш да кажеш
Като работи I2C-то на 50 kHz няма шум, обаче това не ме устройва, устройва ме 400 kHz и нагоре; при 400 kHz шума осезателно се усеща като неритмично бучене, чувам го на телефонна слушалка, тъй като от PWM модула се синтезира звук.
|
| Чет Юли 07, 2005 9:21 pm |
|
|
|
Страница 1 от 1
|
[ 12 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|