@ru_electronics

Страница 296 из 718
Dr
23.05.2017
09:19:23
Konstantin
23.05.2017
09:22:30
Мы про ардуину говорим сейчас, да? :)

ОлегЪ
23.05.2017
09:23:21
Мы про ардуину говорим сейчас, да? :)
некоторые расийские плк имеют авр на борту в качестве проца и даже работают при этом

Google
Konstantin
23.05.2017
09:24:47
Ладно, я не вижу смысла спорить. Для меня это - дичь и нркмания. Даже если принять во внимание специфику плк.

Petr
23.05.2017
09:25:51
Это те же самые FBD и LAD
Фиксик писал емнип что нынче текстово больше пишут

ОлегЪ
23.05.2017
09:42:26
Фиксик писал емнип что нынче текстово больше пишут
как ни странно, но текстово большие проекты проще вести, причем FBD можно конвертировать в текст STL, а вот обратно далеко не всегда

Нехис
23.05.2017
09:45:15
Омг, это что за дичь? Реально вот так и программировать, мышкой? ?
Ну есть нормальные визуальные языки типа LabVIEW. Очень годная среда. В крайнем случае никто не мешает ебошить на сишных вставках и подключать внешние либы.

Roman
23.05.2017
13:30:32
ну жесть конечно) ладно, мысли такие: если есть таймер - читай по таймеру и через него же шли в порт. если таймера нету, может есть отлов события изменения на ноге и в нем же слать. ну и было бы не плохо дать название этой дичи)) кстати, если не любишь код, помимо этой штуки есть ещё пара таких же диких штуковин с графическим программированием, но там аля ассемблер. ну то есть тот же асм только в графических блоках. будет интересно скажу тебе название.

Roman
23.05.2017
13:31:55
Иван
23.05.2017
13:32:15
Я люблю деньги! :))

Roman
23.05.2017
13:32:30
кто ж их не любит)

Alexandre
24.05.2017
09:41:09
Фиксик писал емнип что нынче текстово больше пишут
Фиксик неизлечимо болен сименсом, его брать за "основу всего" по меньшей мере странно

Человек -
24.05.2017
13:40:48
Я еще вернусь)0))

Google
Serg
25.05.2017
14:48:44
Обнаружил в одном проекте такую функцию отправки байта по SPI

SPI_I2S_SendData(SPIx, data); // Зависнуть тут не может, потому что SPI всё равно отработает посылку while (SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_BSY)); // В силу особенностей организации SPI на STM32, нельзя только писать, // после любой записи нужно прочитать, дополнительного времени это не требует return SPI_I2S_ReceiveData(SPIx);

Что за такая особенность SPI в STM32, что нельзя только писать?

metaclass
25.05.2017
14:59:45
потому что SPI двухнаправленный

он когда пишет, одновременно и читает

поэтому входной буфер получает данные от слейва, даже если тот ничего писать не хочет

и буфер нужно зачистить, прочитав его.

Serg
25.05.2017
15:06:49
почему ни в одном примере SPI об этом ни слова?

metaclass
25.05.2017
15:07:28
я так понимаю, что если не включать разрешение прерывания и не проверять флаг переполнения - это ни на что не повлияет

а

хотя если попытаться потом читать

то будет прочитан первый байт, а не тот который пришел на самом деле

т.е. если сначала write-only: записать и не прочесть SPI_DR, а потом послать FF и попытаться прочитать ответ - то придет не то, что слейв записал во второй раз

а то что записал в первый.

Each iteration consists of sending a byte, waiting for the receiver to complete, and then receiving a byte. In the case of the write-only routine, an internal buffer is used to catch and discard a received byte. Similarly, the read-only routine transmits a sequence of 0xff (effectively idle) bytes while receiving.

https://www.cs.indiana.edu/~geobrown/book.pdf это отсюда цитата

хотя вот в reference manual написано, что это касается только slave

An overrun condition occurs when the master device has sent data bytes and the slave device has not cleared the RXNE bit resulting from the previous data byte transmitted.

In this case, the receiver buffer contents will not be updated with the newly received data from the master device. A read from the SPI_DR register returns this byte. All other subsequently transmitted bytes are lost.

Serg
25.05.2017
15:15:16
Вот из примеров SPL:

Google
Serg
25.05.2017
15:15:27
void SPIx_IRQHANDLER(void) { #ifdef SPI_SLAVE /* SPI in Slave Receiver mode--------------------------------------- */ if (SPI_I2S_GetITStatus(SPIx, SPI_I2S_IT_RXNE) == SET) { RxBuffer[Rx_Idx++] = SPI_I2S_ReceiveData(SPIx); } #endif #ifdef SPI_MASTER /* SPI in Master Tramitter mode--------------------------------------- */ if (SPI_I2S_GetITStatus(SPIx, SPI_I2S_IT_TXE) == SET) { if (CmdStatus == 0x00) { /* Send Transaction code */ SPI_I2S_SendData(SPIx, CmdTransmitted); CmdStatus = 0x01; } else { if (Tx_Idx < GetVar_NbrOfData()) { /* Send Transaction data */ SPI_I2S_SendData(SPIx, TxBuffer[Tx_Idx++]); } else { /* Disable the Tx buffer empty interrupt */ SPI_I2S_ITConfig(SPIx, SPI_I2S_IT_TXE, DISABLE); } } } #endif /* SPI_SLAVE */ }

В #ifdef SPI_MASTER только отправляется, ничего принудительно не принимается

metaclass
25.05.2017
15:19:00
да, похоже, что мастера overrun не касается

по крайней мере упоминаний про это я найти не могу

Serg
25.05.2017
15:21:44
А в каких случаях нужно вызывать SPI_I2S_ClearFlag(..) ?

В примере выше не вызывается

metaclass
25.05.2017
15:25:39
* @param SPI_I2S_FLAG: specifies the SPI flag to clear. * This function clears only CRCERR flag.

только при проверке CRC

остальные флаги очищаются чтением SPI_DR и/или SPI_SR

http://www.disca.upv.es/aperles/arm_cortex_m3/curset/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/html/group___s_p_i___group5.html#ga3aabd9e2437e213056c0ed9bdfa1a724

https://electronics.stackexchange.com/questions/193820/spi-wrong-received-data вот тут кстати, про чтение

надо проверить как этот SPI вообще на приход новых данных при наличии данных в буфере, в режиме мастера реагирует

kaktys
25.05.2017
17:33:49
cp2104 в qfn никто сам не паял? Спаял вроде все верно, но даже усб не распознает её вообще, как будто нет

777Andrej
25.05.2017
17:43:23
Значит видать не пропай

Какая то реакция должна быть у юсби

Dr
25.05.2017
17:51:37
kaktys
25.05.2017
18:04:44
Значит видать не пропай
Питание везде есть, как и 3в на выходе её встроенного регуля

777Andrej
25.05.2017
18:05:21
Питание везде есть, как и 3в на выходе её встроенного регуля
Я про контакты юсби которые идут до микры

kaktys
25.05.2017
18:16:46
Всё прозвонил

Vagiz
25.05.2017
18:20:55
а пад под чипом тоже запаян к земле? или это не обязательно ?

Google
kaktys
25.05.2017
18:28:08
Написано что опционально

Странно

На выходе внутреннего регулятора 3.1в вместо 3.45 по даташыту

Konstantin
25.05.2017
19:27:36
cp2104 в qfn никто сам не паял? Спаял вроде все верно, но даже усб не распознает её вообще, как будто нет
Я паял руками cp2102. Десяток, а может и два. Что называется - с полпинка взлетает. На удивление беспроблемный чип :)

Serg
25.05.2017
19:36:13
потому что это основы spi
а примеры значит нерабочие?

Konstantin
25.05.2017
19:41:21
А я вот три 2104 и все молчат
Значит со схемой косяк. Я бы в эту сторону копал.

kaktys
25.05.2017
19:46:16
Serg
26.05.2017
11:00:42
Поделитесь реализацией двунаправленного обмена на STM32 по SPI на прерываниях.

Двунаправленная имеется ввиду дал запрос - получил ответ.

Не одновременно

Не на прерываних все работает

С прерываниями ересь какая-то

Дмитрий
26.05.2017
11:43:20
есть же официальные примеры от STM в их библиотеках

Serg
26.05.2017
11:43:59
они или без прерываний, или только на прием или передачу

Дмитрий
26.05.2017
11:45:15
Кстати, прием и передача происходит одновременно всегда

Serg
26.05.2017
11:46:00
Примера на прерываних не нашел

Дмитрий
26.05.2017
11:46:04
какую библиотеку используете Cube или SPL? Какой МК?

Serg
26.05.2017
11:46:14
SPL, STM32F2

Andrey
26.05.2017
11:55:13
Поищи еще библиотеки от Tilen Majerle

Google
Andrey
26.05.2017
11:55:20
Там ваще толковые примеры

Я на них учусь

Дмитрий
26.05.2017
11:58:01
Есть из Челябинска? Надо сделать заказ в Элитане, а сумма заказа не большая. Кто-нибудь хочет присоедениться?

Ruslan
26.05.2017
11:58:41
там разве есть минимум?

Дмитрий
26.05.2017
11:59:02
SPL, STM32F2
STM32F2xx_StdPeriph_Lib_V1.1.0/Project/STM32F2xx_StdPeriph_Examples/SPI/SPI_TwoBoards/DataExchangeInterrupt/

там разве есть минимум?
нет, но меня жаба душит, когда за доставку надо отдать столько же сколько товар стоит.

Страница 296 из 718