|
Виж темите без отговор | Виж активните теми
Дата и час: Пет Авг 21, 2026 9:19 pm
| Автор |
Съобщение |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30755 Местоположение: София
|
 Re: SX1511B ..
Ами кофти са времената, че не са и такива, 90% от ледовете не работят на тия времена  Падна едно мерене и гадане докато докарах някакви при които повечето работят, общо взето 0-та няма значение колко ще е къса, при мен е около 100 nS, 1-цата обаче е по-големият проблем, там границата е малка. Да го правя с прекъсване не става, не мога да го изпълнявам толкова бързо, направо си оставам там, нали се сещаш че ще ми бичи прекъсвания всеки 200 nS да речем, това са ми има няма 10 инструкции, какво да направя по-напред за тия 10 инструкции в прекъсване, те не са и 10 ами с 8 и то ако всички са еднотактови, а има и дву и три ... могат да са на 1,25 uS, тогава е по-добре, ама и тогава започва да става критично. Все пак трябва да взема от някъде тоя бит, т.е. да проверя съответният бит дали е 0 или 1, и то не е 1 ами са 3 щото имам 3 канала и ги ъпдейтвам и трите едновременно ... реално в момента байт по байт ги вземам, въртя ги 8-пъти за д аизвадя всички битове и след това следващия. Това на три променливи, с проверката дали е 0 или 1 и е точно колкото да сложа два NOP-а за да стане 1.20 uS. Е те това успявам да направя :
|
| Чет Юни 29, 2017 3:38 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30755 Местоположение: София
|
 Re: SX1511B ..
Тук всичко е сведено до побитови операции, тия mask_a,b,c са битове от mask. Работата с масива може да се пооптимизира, но в тази реализация няма голям смисъл, но и да се оптимизира не може кой зане колко, горе пойнтерите могат да се пооптимизират.
|
| Чет Юни 29, 2017 3:44 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: SX1511B ..
Аз друго си мислех: Имаш 9 прекъсвания за софтуерните PWM ( ако са ти 8 ). Едното е първото което е едновременно сетване на всички изходи в 1. На база коефициентите на запълване се изчисляват предварително съответните интервали между всяко прекъсване, определя се и редът на изключване. Примерно след еди си колко uS изключва PWM1, после след еди си колко PWM3 и т.н. за всичките 8. Във всяко прекъсване има обработка на някои неща: 1. Прекъсване -(основно синхронизиращо) - сетва всички PWM изходи в 1ца Зарежда брояча на таймера със стойност съобразена със съответния интервал.
2. Прекъсване. Моментално изключване на изхода на PMW който трябва да се изключи, според таблицата със реда на изключване. Зареждане на брояча на таймера за генериране на съответния интервал, според таблицата с интервалите.
3. пак така до 9. вкл. Ако желаеш да няма джиттър, което едва ли е толкова съществено, може прекъсване 1. Да се генерира от друг, free running таймер. Предвид това което си ми казвал, използваш честота 1.34 kHz за аналогови PWM. За 9 mS ще имаш общо 120 прекъсвания. Всяко едно прекъсване не зная колко ще отнеме, но мисля че при тази бързина на процесора може да се получи под 1uS! Все пак има едно сетване на изход, едно на таймер и някой друг флаг да се бутне за последващо прекъсване. Т.е. няма да ресетнеш комуникацията на WS. Съответно на база интервалите, трябва предварително да изчислиш по колко пакета от 24 бита може да изпратиш. Примерно интервал 1 е кратък защото PWM1 e само 1%, това значи че между прекъсвания 1 и 2 може да пратиш примерно само 1 пакет от 24 бита. Пращаш го. Остава ти малко време в което си изчакваш прекъсване 2. Изпълнява се прекъсване 2 и си продължаваш нататък със пращането към WS.
|
| Чет Юни 29, 2017 5:07 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9123 Местоположение: Разград
|
 Re: SX1511B ..
Абе става ама я си представи че имаш два от пвм-ите дето трябва да ги изключиш през период по-малък от периода за обработка и примерно брояча ти премине стойността и направи роловър или някаква такава ситуация. Това дето го предлагаш може да се получи евентуално с CCP ама в случая няма свободно. А и прекъсването трябва да е супер кратичко.
|
| Чет Юни 29, 2017 6:04 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: SX1511B ..
Добре, защо не смениш тактиката? Вместо да използваш PWM, да използваш някакъв комуникационен интерфейс- UART примерно(не съм сигурен дали на всички можеш да спираш стоп битовете, но казвам примерно). Идеята е да си подредиш примерно 8 нива в една променлива и да я подадеш за предване. Примерно разделяш целия диапазон на някакви малки интервали и чрез тях модулираш реалния сигнал. Така вместо да се мъчиш да се вместиш в 100, или там колкото са ns, ще имаш поне 8 пъти повече време. И с една предварително зададена таблица трябва да се получат нещата  Да не говорим, че по-големите контролери имат буфери и можеш да зареждаш няколко стойности за предаване. Сиреч повече време за обработка!
_________________www.elkran.com
|
| Чет Юни 29, 2017 6:46 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: SX1511B ..
@Cekins да може да е така, но може да се направи примерно на 1% да е стъпката, дори повече. Така, че или ще се изключват наведнъж няколко изхода или ще има закъснение (достатъчно). Това което описваш ти е примерно е единият PWM да е примерно 1% а другия примерно 1.05%, мисля, че няма нужда. 
|
| Чет Юни 29, 2017 7:09 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9123 Местоположение: Разград
|
 Re: SX1511B ..
Е хубаво де - сметни си сам какво означава 1%. Понеже процентите не са точни числа нека стане така : при 8 бита PWM имаш 256 стъпки (това вече е точно число) при 1,43 kHz (по горе беше спомената тази честота) ти се получава ~366kHz дискретизираща честота което е 2,73 uS. или при 64MHz пик-че ще има около 43 инструкции прозорец. Не са малко но не са и много, особено при положение че това време няма лесен начин да се синхронизира с клока на цифровите ленти.
|
| Чет Юни 29, 2017 7:31 pm |
|
 |
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 8:04 pm Мнения: 2663 Местоположение: София / Велико Търново
|
 Re: SX1511B ..
Ами Тони казва че инструкцията е 25nS, ако ползва PIC излиза че е на 160MHz, ама явно е друг процесора... В неговия случай са 109 инструкции.
|
| Чет Юни 29, 2017 8:01 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9123 Местоположение: Разград
|
 Re: SX1511B ..
Малко се оплетохме - значи той основния му контролер не е 8 битов пик, така че си правим грешни сметки  Тази сметка за 25nS инструкция и 160 MHz e за 8 битов пик а такъв поне аз не съм срещал. Виж за 24-ка вече може - там идва 80MHz (40 мипс) а такива вече има.
|
| Чет Юни 29, 2017 9:33 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6107
|
 Re: SX1511B ..
_________________ main[-1u]={1};
|
| Чет Юни 29, 2017 9:49 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30755 Местоположение: София
|
 Re: SX1511B ..
Значи с spi, uart i usb проблеми няма, то освен тия 3 канала които рвфрешвам си върви usb комуникация и 2 серийни порта, тия 10 ms не са проблем за нищо друго. Стабилно софтуерни pwm трудно ще станат, ще трябва да е някакъв компромиси. Затова мислех за тоя чип, той върти само pwm нищо друго, но вече го смених с малък пик, също на spi. PWM го ъпдейтвам заедно с лентите, т.е. веднъж на 20 мс, не ми трябва повече, става по spi за нищожно време, все пак са само 48 байта. С пика също няма проблеми за софтуерен pwm, не исках да слагам пик за да не се програмира още нещо, но по добре така. Тоя чип освен че е екзотика, има и кофти корпус, не очаквам да се сменя, но е труден за смяна ако се наложи от обонговец. Иначе проца е силабс 8 битов, 48 mhz, масовите инструкции са 1 и 2 такта. Не мие проблем да сложа и такъв на 75 или 100, имат такива но нямат усб. Можеше са мина на армовете им, обаче усб ме притеснява малко, не сме го ползвали, на 8 битовите е желязно, за 32ките не знам и не ми се рискува в нещо което влиза в серийно производство. Достатъчен го ям с тъпите цифрови ледове, някои партиди мрът за световно, други бачкат вече година и половина. Направих тестер да разпознавам менте диоди ама...
|
| Чет Юни 29, 2017 11:47 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|