Отговори на тема  [ 15 мнения ] 
Slave SPI с PIC16F1827 - изисквания за времена. 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Slave SPI с PIC16F1827 - изисквания за времена.
В даташийта на PIC16F1827 на страница 366 и 367 са отбелязани изискванията за времената. Странното е, че въпреки че клока е външен изискването е Clock High и Clock Low периода да са 1 Tcy + 20ns. Това обаче си противоречи малко с изречението
Цитат:
Special care must be taken by the user when the MSSPx clock is much faster than the system clock.


Разбира се аз приемам че Tcy е времето за една инструкция или Tosc * 4, защото навсякъде е иползвано в този смисъл.

Ясно е, че има изисквания за SS сигнала спрямо системния клок, но защо и клок-а? Ето още един цитат:
Цитат:
In SPI Slave mode, the SPI Transmit/Receive Shift register operates asynchronously to the device.


... който ме навежда на мисълта, че в sleep или не все си работи асинхронно и не зависи от системния клок.

Обаче зависи. Пробвах го. Ако пусна SPI с честота 1MHz, и PIC16F1827 работи на 4 МХз всичко е наред (въпреки че не съм точно сигурен за + 20-те наносекунди. на 2 МХз не работи. Изобщо. Връща пълни бози - рандом генератор.

Аз ли не съм допрочел добре или те не са донаписали както трябва?

_________________
PIC SPBRG values calculator


Вто Ное 13, 2012 10:16 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Трябваше да продължиш в другата тема "MSSP на PIC16F1827 и SS пина", за да може написаното евентуално да е полезно и на друг, без да се налага да рови, но както и да е...
Чети ...


Сря Ное 14, 2012 9:48 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Не исках проблемите от другата тема да пречат. Всъщност проблема беше програмен.
Ще опиша по-подробно картинката: Използвам Data изходите за на PORTD на PIC18F45K22 и за SPI2 за да комуникира с PIC16F1827 трябва да съм сигурен че съм вдигнал SS за да не пречи изхода на SPI-то на PIC16 кодато PIC18 праща данни на дисплея. В една от другите теми мислех, че SDO на PIC16F1827 не минава във висок импеданс защото като го свържа на дисплея се появяваха безсмислици. Всъщност проблема беше програмен и го отстраних - не щраках правилно SS.
Колкото до темата с къдравия сигнал на clock-a ... проблема беше в сондата и след подходящо свързване сигнала се вижда че е идеален...
Това:
Цитат:
Чети ...

...предполага, че в даташийта е написано правилно и аз съм прочел грешно, така че ще му ударя още един прочит.

Освен това свалих честотата на SPI на 1 MHz докато съм сигурен че всички останали проблеми са изчистени и след това ще се боря с проблеми с висока честота.

_________________
PIC SPBRG values calculator


Чет Ное 15, 2012 1:56 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Препоръчах ти да четеш по-внимателно документацията, ератата, че и Чичко Гугъл да попиташ, ако трябва.
Щото може да има грешка в документацията, бъг или път грешката да е твоя. В случая, просто е написано малко йезуитски.

Обвързването на външния клок с Tcy го разбирам като обвързване с минималното Tcy. Виж картинката с входния капацитет за който са зададени тези времена.

Що се касае за SPI OPERATION IN SLEEP MODE:

In SPI Master mode, when the Sleep mode is selected, all module clocks are halted and the transmission/reception will remain in that state until the device wakes. After the device returns to Run mode, the module will resume transmitting and receiving data.

Демек, изчакай да свърши transmission/reception и тогаво ходи да спиш, щото по време на сън клока спира.

In SPI Slave mode, the SPI Transmit/Receive Shift register operates asynchronously to the device. This allows the device to be placed in Sleep mode and data to be shifted into the SPI Transmit/Receive Shift register. When all 8 bits have been received, the MSSPx interrupt flag bit will be set and if enabled, will wake the device.

Значи, спи си, като дойде байт - ще те събудя.


Чет Ное 15, 2012 3:47 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
ама говорим за Slave mode. PIC16F1827 със SSP2 в SPI slave режим. Пише че може да работи в sleep. Но на мен не ми трябва в sleep. Искам да разбера има или няма зависимост в слейв режим от клока и ако го накарам да заспи (защото може понеже в слейв режим клока се подава отвън) как така ще зависи от Tcy след като системния клок е спрял... Малко е тъпо.

Сега - относно спането, аз не ща да го приспивам изобщо, но ако това ще помогне да получа байт по-бързо бих го приспал. Тъпо е да го щракам на 32 МХз и да харча ток само заради SPI-to след като ми върши работа 1 МХз. Проблема е обаче, че в даташийта не пише да има разлика между speep и run mode за SPI slave, но пише, че зависи от системния клок и оперира в sleep, когато няма системен клок - като да сипваш уиски с кана, но да можеш да сипваш със скоростта на дозатор само, въпреки че няма такъв...

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

_________________
PIC SPBRG values calculator


Чет Ное 15, 2012 10:48 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
В слейв клока ти е външен и няма значение дали контролера е приспан или не - байтовете си пристигат с една и съща скорост, определена от този клок.

Набляга се на това, че и в слийп режим байтовете си вървят, въпреки, че вътрешния клок е спрян.

Приеми, че хардуерно имаш шифт регистър с външен клок и външни серийни вход и изход. Вътрешни ти са паралелните шини за запис и четене и входовете за тяхното управление и изходите за състоянието (флаговете).


Пет Ное 16, 2012 11:13 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
И аз това казвам. Отде тогава изискването SPI slave clock High time и Low time >= Tcy + 20 ns? - виж страница 366 и 367

_________________
PIC SPBRG values calculator


Пет Ное 16, 2012 9:40 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Е това е очевидно и без да съм ти чел чипа, външния клок го синхронизират по вътрешния,
то без някаква синхринизация няма и как да работи. Стандартна практика, преди да ползват
нещо вътре първо го синхронизират.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Ное 16, 2012 10:21 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
tgi обикновено се вслушвам обаче тук не съм съгласен. Да, синхронизация трябва да има, но не на клока, а на SS сигнала. Както е описано в документацията MSSP е отделна периферия. Шифт регистъра му работи по външния клок. Единствената нужда от синхронизация е когато SR се напълни и рече да копира във SPBUF. това вече трябва да е в синк с вътрешния клок. И пак казвам - в sleep нямаш вътрешен клок. а MSSP в слейв режим работи в sleep. Виж цитата от документацията:

Цитат:
In SPI Slave mode, the SPI Transmit/Receive Shift register operates asynchronously to the device.


Т.е. от 'къв зор им е да го синхронизират след като пишат че е асинхронно?

_________________
PIC SPBRG values calculator


Съб Ное 17, 2012 4:07 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
npelov написа:
Т.е. от 'къв зор им е да го синхронизират след като пишат че е асинхронно?
На границата на двата клок домейна се прави синхронизация. Не е задължително да е на самия външен клок. След като може да работи и приспан, по-вероятно границата е между шифт регистъра и буфера. На това място нищо не трябва да се променя по-бързо от един такт на системния клок.
Предполагам, ако пращаш байтовете с достатъчна пауза между тях, ще работи и с по-бърз външен клок. Ако са непосредствено един след друг, или ще се прехвърлят грешно в буфера, или няма да се установяват правилно флаговете за получени данни или за изтърван байт от непрочетен буфер.
Ама това са хипотези само, при това без значение. След като имаш ограничение в спецификацията, значи го спазваш.


Съб Ное 17, 2012 9:35 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Даже и да не синхронизират серийния клок (възможно макар и не особено вероятно), нали за да
прочетат/напишат шифт регистъра трябва да го цъкнат синхронно спрямо вътрешните клоци.
Инак просто няма да работи, понякога ще го четат баш в момент на преход и т.н. бози.

Та точно кой клок къде синхронизират не знам но и не е интересно в твоя контекст, именно
синхронизацията е причина за тия времена дето им се чудиш :) .

Edit: Писали сме едновременно със 741, горе-долу едно и също но по различен начин та
оставям и моето.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Съб Ное 17, 2012 9:36 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Цитат:
Предполагам, ако пращаш байтовете с достатъчна пауза между тях, ще работи и с по-бърз външен клок.


Това беше и моята логика. За целта на пробата пращах байт на всеки 0.2s. Не става.

Ок. Да кажем, че са имали причина да ограничат външния клок до честотата на вътрешния. Това, което ме интересува е мога ли да пращам байт в sleep mode с голяма скорост... тъй като вътрешен клок няма. Според спецификацията SPI clock high и low трябва да е >= Tcy+20ns -> в sleep режим това е безкрайност + 20ns. т.е. честотата на външния клок трябва да е 0 -> следва че не може да работи в sleep mode. И пак по спецификация казват, че може да работи в sleep. Няма отделни времена за slave в sleep и в run mode.

При такива противоречия си мисля че има грешка в спецификацията. Поправете ме ако бъркам, но според мен е очевидно че спецификацията е непълна или си противоречи.

_________________
PIC SPBRG values calculator


Съб Ное 17, 2012 3:51 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
Не е кой знае каква философия да се направи така, че и двете неща от спецификацията да са верни.
Провери го, за пет минути работа е.


Съб Ное 17, 2012 4:58 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
ще го пробвам. само че ще ми е много трудно да го накарам да заспи точно когато този отсреща праща байт, особено като имам таймер който ще го събуди. Май ще трябва да го пусна на 32 МХз ... добре че харчи само около 5 мА. От друга страна мога да го включа на 32МХз и да го приспивам (и без това при 32 МХз ще си свърши работата 64 пъти по-бързо от 500 кХз... дали е буден или не като идва нещо по СПИ няма да има значение стига честотата да е <= 8 МХз. Може да ръчна OSCTUNE и да вдигна честотата малко над 32 МХз така че да изпълня условието + 20ns.

_________________
PIC SPBRG values calculator


Съб Ное 17, 2012 9:28 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: Slave SPI с PIC16F1827 - изисквания за времена.
npelov написа:
И аз това казвам. Отде тогава изискването SPI slave clock High time и Low time >= Tcy + 20 ns? - виж страница 366 и 367


Ами приеми, че SPI интерфейса като хардуер има такива ограничения за клока, т.е. такава му е максималната тактова честота. Виж колко е максималната честота на клока в мастър режим - май пак толкова. Би могло да се очаква и повече, но ти гарантират до Fosc/4 = 8 MHz max. А тия 20ns са вероятно очакваните rise/fall времена. Пусни по-бърз външен клок и виж какво става. Предполагам, че до определена честота ще работи...

Цитат:
Това, което ме интересува е мога ли да пращам байт в sleep mode с голяма скорост... тъй като вътрешен клок няма. Според спецификацията SPI clock high и low трябва да е >= Tcy+20ns -> в sleep режим това е безкрайност + 20ns. т.е. честотата на външния клок трябва да е 0 -> следва че не може да работи в sleep mode. И пак по спецификация казват, че може да работи в sleep. Няма отделни времена за slave в sleep и в run mode.


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


Пон Ное 19, 2012 2:58 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

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


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

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