adnega
Свой-
Постов
3 606 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент adnega
-
Инкрементирующийся define
adnega ответил Alt.F4 тема в Программирование
Компилируется даже без предупреждений. Единственное, в {} не должно быть i++. Лучше new_i++, а в самом конце i = new_i. Иначе автомат выстрелит очередью. -
Инкрементирующийся define
adnega ответил Alt.F4 тема в Программирование
Так получится? int j = 0; if(0){} else if((j++) && (i == j)) { // do 1 i++; } else if((j++) && (i == j)) { // do 2 i++; } ... else if((j++) && (i == j)) { // do N i++; } #define NEXT else if((j++) && (i==j)) if(0){} NEXT { } NEXT { } -
Посоветуйте в выборе осциллографа
adnega ответил Hexel тема в В помощь начинающему
Приближаю еще сильнее (не забываем, что это все фрагменты самой первой осциллограммы). Большинство цифровых осциллографов имеют возможность установки аккумулятора. -
Посоветуйте в выборе осциллографа
adnega ответил Hexel тема в В помощь начинающему
Например, высота экрана моего осциллографа 120мм (а это очень много!). При 8 битах это 256 уровней, что дает нам размер одного уровня менее 0.5мм. Не понимаю, что там (в 0.5мм) можно рассмотреть в аналоге? В аналоге, по-моему, главное преимущество не разрешение, а: 1. Частота кадров 2. Послесвечение. Но в цифровике можно делать так: захватываем интересный (непериодический) кусок -> приближаем интересный кусок. -
CAN роутер для UART
adnega ответил Михаил1977 тема в Предлагаю работу
Прошу скинуть ТЗ на adnega(a)mail.ru -
Жук
adnega ответил MolotovTheBest тема в Схемотехника
Довольно борзо для человека, не знакомого с УК РФ: Так обидишь модератора - а он сообщит куда надо )) -
Сейчас не получается воссоздать ошибку. Раньше точно помню, что замыкал MISO на 3.3В и получал 0xFE. Допускаю: 1. тогда я где-то нокосячил; 2. сейчас использую простой проект (LTDC, SDRAM, SPIx), а тогда - куча SPI (кнопки и светодиоды на сдвиговых регистрах, цифровой микрофон, I2S-кодек), таймеры (DS18B20, импульсы тестирования усилителей), UART (GSM, console), SDIO (uSD-карта), I2C (радио RDA5807). Все это густо разбавлено DMA.
-
Короче, проверил все с SPI1 по SPI5. Ошибка, увы, не воспроизводится. Читаю-пишу так BYTE spi_send_byte(const BYTE data) { BYTE spib; while((SPI3->SR & (1 << SPI_SR_TXE)) == 0); SPI3->DR = data; while((SPI3->SR & (1 << SPI_SR_RXNE)) == 0); spib = SPI3->DR; return spib; } Вопрос определений. Под "резистором 0 Ом" можно понимать: перемычку, резистор, кусок провода, печатную дорожку и т.п. Я покупаю такие; в счете написано "резисторы".
-
Короче, пытаюсь воспроизвести ошибку - не получается. Перепробовал SPI1, SPI4, SPI5. Точные номер SPI и номера пинов не помню. Хотел же тогда на электроникс запостить, но поленился описывать глюк. Итого: ошибку воспроизвести не могу; если кто сообщит номер SPI и номера пинов (и каналов DMA опционально), то могу попробовать на макете.
-
Давно то было. Допускаю, что примерно так было //--------------------------------------------------------------------------- // LED & BUTTON //--------------------------------------------------------------------------- SPI_NSS_bit = 1; for(i = 0; i < 3; i++) __NOP(); SPI_OE_bit = 0; SPI_NSS_bit = 0; SPI2->CR2 = (0 << SPI_CR2_RXNEIE) | (0 << SPI_CR2_TXDMAEN) | (0 << SPI_CR2_RXDMAEN) | (1 << SPI_CR2_SSOE); DMA1_Stream4->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (1 << DMA_SCR_DIR) | (0 << DMA_SCR_EN); DMA1_Stream3->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (0 << DMA_SCR_DIR) | (0 << DMA_SCR_EN); DMA1->LIFCR = (0x3D << 22); DMA1->HIFCR = (0x3D << 0); for(i = 0; i < 10; i++) __NOP(); DMA1_Stream3->PAR = (DWORD)&SPI2->DR; DMA1_Stream3->M0AR = (DWORD)spi_rx; DMA1_Stream3->NDTR = SPI_SIZE; DMA1_Stream3->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (0 << DMA_SCR_DIR) | (1 << DMA_SCR_EN); DMA1_Stream4->PAR = (DWORD)&SPI2->DR; DMA1_Stream4->M0AR = (DWORD)spi_tx; DMA1_Stream4->NDTR = SPI_SIZE; DMA1_Stream4->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (1 << DMA_SCR_DIR) | (1 << DMA_SCR_EN); for(i = 0; i < 10; i++) __NOP(); SPI2->CR2 = (0 << SPI_CR2_RXNEIE) | (1 << SPI_CR2_TXDMAEN) | (1 << SPI_CR2_RXDMAEN) | (1 << SPI_CR2_SSOE); Это рабочий код, т.к. использует SPI2 и DMA1. Нерабочий был, вроде, на SPI4 и DMA2. Отправка работала корректно, а прием 2 байт давал нулевой младший бит (вроде только в первом принимаемом байте, а не в каждом).
-
Я особо и не копал. Посмотрел эррату, Интернет - все тихо. Значит проблема у меня. Решил ее по-другому - без копания и костылей. Сейчас оказывается, что не только у меня. Посмотрим на решение. Была бы у вас stm32f429i-disco, могли бы сами проверить и предложить решение.
-
Дык, это была всего-лишь иллюстрация странного поведения. Затем русским-по-белому говорилось о жесткой единице. Подтверждаю, что сам сталкивался на stm32f429i-disco с аналогичной ситуацией. Сначала получал от слейва левый "нолик", затем довел ситуацию до предела - подключил MISO к 3.3В, а считывалось 0xFE. Перешел на другой порт и другие пины - и слейв прекрасно заработал. В эррате не нашел сей глюк, для себя отметил, может, экземпляр МК с дефектом. Похоже, что нет.
-
С чего вы вообще взяли некое устройство? В #7 и #15 сообщениях сказано "на MISO жестко стоит единица".
-
На пине микроконтроллера с AF SPI_MISO логическая единица, а приемник стабильно принимает байт с нулем в младшем разряде. Чего еще не понятно? Нигде этого не читал, сам с этим столкнулся и долго бодался. Было на каком-то SPI, на каком-то пине, (подробностей не помню, т.к. 2 года прошло) перешел на другие пины и другой номер SPI - чудеса пропали.
-
На выводе MISO лог 1, которая получается подключением к шине 3.3В. В регистре данных SPI принимаем 0xFE, т.е. младший бит равен нулю. Откуда?
-
Дык, вам же говорят, что висит резистор. Ноль ом.
-
Хоть бы в эррате упомянули.
-
Мост Ethernet-CAN
adnega ответил spf тема в Controller Area Network (CAN)
Я довольно быстро сделал WiFi-CAN на основе ESP8266 (модуль ESP-01) и STM32. Гонять маленькие кадры CAN по Ethernet/WiFi не очень, т.к. возникают вопросы с буферизацией, таймаутами. Но мой протокол CAN не особо к этому чувствителен. Если интересно - могу безвозмездно поделиться. Планирую в будущем сделать проект WiFi-CAN свободным. -
Видел такое, вроде, на SPI4 на PE2-PE6.
-
Аналог Atmel AT89C55WD
adnega ответил mark.sam тема в Все остальные микроконтроллеры
Разумеется, делать молотилку чисел на 51-ядре в 2016 году глупо. Но бывают некоторые аппаратные мега-решения, где нужно изначально как-то что-то проинициализировать, т.е. тупо записать-прочитать несколько 8-битных регистров. Вот сюда можно и нужно внедрить 51-ядро. -
При таких запросах радио подойдет. Но надежнее и проще проводного решения нет и не будет.
-
Выбор PIR датчика
adnega ответил Alt.F4 тема в В помощь начинающему
А спец-микросхема biss0001 не такая уж и дорогая. -
В первую очередь нужна документация. Хорошая документация. Cortex-M4F он и в Африке... Для елочных гирлянд не годится, а для серьезной аппаратуры последний год наблюдаю осторожную потребность иметь аналог на отечественной комплектухе. Вот бы ПЛИС уровня EPM3032 отечественную поиметь...
-
ST не везде разрешат впихнуть. Больше волнует вопрос наличия и качества документации. Есть ссылочка на документацию? Сейчас делаем на миландровском K1986BE92QI, но как-то быстро таймеры закончились. Да и по функционалу таймеры там не ахти в сравнении с тем же ST. В качестве замены я бы с удовольствием рассмотрел кандидата.