Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Хардуерен i2c с CCS
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=18247
Страница 1 от 2

Автор:  ToHu [ Вто Мар 01, 2022 11:21 pm ]
Заглавие:  Хардуерен i2c с CCS

Пускам тук един пикльо 16F721, има вграден i2c, ама нещо се пъни да работи с на CCS-а функциите, та се чудя някой дали го е борил. В софтуерен режим i2c-то си пее, но ако му кажа да използва хардуера,
#use i2c(Master,sda=PIN_B4,scl=PIN_B6,force_hw), и забива още на i2c_start(). На CCS дебъгера май умря, имам Pickit 3, но CCS си търси някакви жабешки dll-ти и няма подкарване, та работя без дебъг. Това което става според мен е че зацикля на 008F
.................... i2c_start();
008D: BSF 03.5
008E: BSF 11.0
008F: BTFSC 11.0
0090: GOTO 08F

Гледам листинга не виждам да сменят адресирането, и това ръчка нейде в OSCCON регистъра, той е на адрес 11 в банка 1, изглежда ми на поредната сбъркана функция на CCS-а, но ако някой го е подкарвал да каже как го е вразумил.

Автор:  Desert Leo [ Сря Мар 02, 2022 10:19 am ]
Заглавие:  Re: Хардуерен i2c с CCS

i2c_init(1); // ?

Автор:  Stoimen [ Сря Мар 02, 2022 2:58 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Ползвал съм i2c със вградените функции на CCS-а, но на 18f452.
Сега пробвах със 16ф721 и 16ф690 - и за двата генерира този неадекватен код.
Пробвах и за 18ф452 и там нещата изглеждат добре.
Код:
0024:  BSF    FC5.0
0026:  BTFSC  FC5.0
0028:  BRA    0026


FC5.0 е SEN: START Condition Enabled/Stretch Enabled bit

Автор:  ToHu [ Сря Мар 02, 2022 4:28 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Desert Leo написа:
i2c_init(1); // ?

Ами и така мисля го пробвах и със скорост го пробвах. За тоя случай е все тая дали ще е хардуерния или не, но в следващият проект вече трябва да е хардуерният, там ще е слейв и софтуерното i2c ще изяде ненужно много ресурс.
Ще го мъча, пък ако не стане ще го напиша, няма да е първия път

Автор:  Desert Leo [ Сря Мар 02, 2022 5:00 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Какво е свързано на i2c-то? Пробвай SMBUS опцията в #use i2c(). Не е лошо да питаш и в CCS форума...

Автор:  ToHu [ Сря Мар 02, 2022 5:10 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

В момента има CAP1293, но той си отговаря чинно, в момента в който махна да го форсва хардуерно започва да си работи. Ще му отделя време ама няма да е сега. Аз друго си мисля, д ане би да е правена библиотеката да поддържа слейв режим, и това i2c_start да не са го донаписали.

Автор:  Desert Leo [ Сря Мар 02, 2022 6:04 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Никога не съм имал проблем с i2c_start().
Изкопах един проект с PIC16F1825 и MMA8652:

#use i2c(master, slow, sda=PIN_C1, scl=PIN_C0, smbus, force_hw)

i2c_init(TRUE);

.................... i2c_start();
030C: MOVLB 04
030D: BSF 16.0
030E: BTFSC 16.0
030F: GOTO 30E

Автор:  ToHu [ Сря Мар 02, 2022 6:40 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Ами ами пробвах същия инит със същите #use но листинга е все същия, 11 е TMR2, 91 обаче е OSCTUNE. В твоя код виждам че проверява на таймер 1 младшия бит, нещо не им е наред в адресите ми се чини.

Автор:  Stoimen [ Сря Мар 02, 2022 6:51 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Дааа за 16F1825 се генерира коректен код.

#use i2c(Master,Fast,sda=PIN_C1,scl=PIN_C0,force_hw)
Код:
....................    i2c_start();            // If the write command is acknowledged,
0017:  MOVLB  04
0018:  BSF    16.0
0019:  BTFSC  16.0
001A:  GOTO   019

Автор:  Desert Leo [ Сря Мар 02, 2022 7:19 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

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

Автор:  ToHu [ Сря Мар 02, 2022 8:38 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

За тоя ще го карам в софтуерен режим, не губя нищо, другата седмица като почна другия проект ще го боря вече по-сериозно, но там е друг чип току виж компилирало вярно.

Автор:  slav4o.com [ Сря Мар 02, 2022 8:49 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Е предполагам не е сложно да се напишат нови функции за хардуерният модул.

Автор:  ToHu [ Сря Мар 02, 2022 9:44 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Да не е, ако не работи на другия точно това ще направя, то не е кой знае какво, за този директно си казвам мързи ме :) То и за този може след това да ги сменя, тука съм подхванал няколко неща на веднъж и гледам да си уплътнявам времето. Зора ми в момента е д аподкарам този тъч чип, защото има чисто механични неща свързани с дизайна които трябва да уточня, те пък са свързани с чипа и по точно рамера и позиция на електродите. Да ама мърфи не спи, подкарах чипа не е притигнал още интерфейса и това през което ще трябва да ловят тия тъч бутони :)
За другия пък проект чакам пдф-и на едни лед рингове, и там дърво.
Та за момент спирам до тук докато не ми дойдат пратчиците, пък сега подхващам ЕРП-то, че 2 години добрите мексиканци не са го пипвали, сега трябва да въведа ред в нещата :)

Автор:  itso.t [ Сря Мар 02, 2022 10:15 pm ]
Заглавие:  Re: Хардуерен i2c с CCS

Прегледах по диагонал инклуд файловете на XC8 за 16F721. И за него, и за 16F720 няма и ред за I2C. За други пикове има.
Да няма някаква бъгавиня в периферията и затова да са го канселирали?

Автор:  ToHu [ Чет Мар 03, 2022 12:55 am ]
Заглавие:  Re: Хардуерен i2c с CCS

Ами знам ли, едва ли. По скоро проблема е в CCS-а, няма да е първия. Преди години, доста мъчих някакъв onewire пак с библиотека на CCS, вече не помня ама имаше някаква простотия в кода, дърво някакво имаше и библиотеката им за LCD контролери, и там забиваше в някакъв while. Случвало ми се е и грешни дефиниции. Може да проверя какво има в дефинициите за 721,ама не е в 17F721.h файла, друг файл имаха някъде по спомен, ама вече не поня и къде. Аз от години използвам основно силабси и почвам да забравям кое къде е в ccs-а

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/