Кто любит RISC в жизни, заходим, не стесняемся.
Пт июн 17, 2022 09:26:27
Ну зачем эта жесть с delay'ями, если 1-wire прекрасно можно в виде конечного автомата сварганить на UART+DMA или TIM+DMA?
И не нужно будет две ноги тратить: у UART есть режим полудуплекса по одному проводу, с таймером еще проще (CC2 в режиме захвата вешается на ту же ногу, что и CC1 в режиме ШИМа).
Пт июн 17, 2022 11:10:54
ТС хочет на ногодрыге.
Остальные варианты уже сколько раз предлагались =]
Пт июн 17, 2022 13:01:16
ТС хочет на ногодрыге.
А потом еще удивляется, чего это его на других форумах забанили!
Да за это и забанили: за извращения в самой жестокой форме!
Пт июн 17, 2022 18:52:16
Не за это меня забанили.А за то что я пошутил что за 100 доларов сделаю работу с таймером AVR.А модератор просил 400 это за что за поффисионализм?А насчёт USART-DMA 1_Wire.Куплю переходник и буду эксперементировать на железке.А сейчас с 22.12 .2021 я без работы.На Украине туго.
Пт июн 17, 2022 18:59:13
Да какая разница - на ногодрыге или не на ногодрыге? Главное - попробовать, что-то сделать, получить результат. А потом уже можно и совершенствовать, переносить на уарт например. Пусть автор хоть как-то сделает уже, поймет как это работает, а там видно будет.
Сб июн 18, 2022 03:16:51
ivan dimir, будете тут разводить срач - и тут забанят. Про политику идите в другие разделы трепаться.
ЗЫ: Срач потчистил.
Сб июн 18, 2022 12:23:38
ivan dimir писал(а):А насчёт USART-DMA 1_Wire.Куплю переходник и буду эксперементировать на железке.
О каком переходнике речь?
DS18B20 возможно подключить к USART и производить обмен через DMA.
http://purebasic.mybb.ru/viewtopic.php?id=574Что сейчас есть из железа?
Есть STM32 (какие), ST-Link, DS18B20, резисторы, конденсаторы, провода, паяльник и т. д.?
При отсутствии всего перечисленного, можете использовать протеус если комп мощный (симуляция STM32 затратна по ресурсам).
Сб июн 18, 2022 15:08:37
Ну есть stm32f103c8t .stm32f411?.и stm32f407vet а протеус какой лучше использовать ?Хочется железо поберечь.
Добавлено after 2 minutes 56 seconds:ivan dimir, будете тут разводить срач - и тут забанят. Про политику идите в другие разделы трепаться.
ЗЫ: Срач потчистил.
Извините на этом сайте я вне политики. Интересуют только знания.
Сб июн 18, 2022 18:15:20
ivan dimir писал(а):протеус какой лучше использовать
Текущую версию.
Для симуляции STM32 нужен мощный комп (в первую очередь, производительный процессор и быстрая оперативная память), иначе симуляция в реальном времени будет невозможной.
ivan dimir писал(а):Хочется железо поберечь.
В смысле чтобы не вывести из строя или не перетирать флеш? В последнем случае, отладка в ОЗУ поможет.
Сб июн 18, 2022 20:49:53
Ну зачем эта жесть с delay'ями, если 1-wire прекрасно можно в виде конечного автомата сварганить на UART+DMA или TIM+DMA?
И не нужно будет две ноги тратить: у UART есть режим полудуплекса по одному проводу, с таймером еще проще (CC2 в режиме захвата вешается на ту же ногу, что и CC1 в режиме ШИМа).
Так TIM+DMA?Или UART+DMA?
В CubeIDE отладка на таких платках проблематично.А какие требования системные ОС?И какой протеус?
Сб июн 18, 2022 21:23:44
Так TIM+DMA?Или UART+DMA?
В CubeIDE отладка на таких платках проблематично.А какие требования системные ОС?И какой протеус?
Отвечаю последовательно.
И TIMx+DMA, и UART1+DMA не потребуют задействования двух ног. Про другие UART'ы мне лень читать - есть ли там полудуплексный режим.
На калокуб мне насрать, сам знаешь. И презираю использующих это говнище.
Требований к ОС никаких нет. Можешь даже на игровой приставке все это делать, если тебе слишком сложно в линуксе или бсд работать.
Протеус - без понятия, что это за УГ. Слышал неоднократно, но ни разу не видел. Думаю, тебе лучше с этим куском УГ не связываться.
Вс июн 19, 2022 05:11:33
Ну как не требует USART-DMA TIM-DMA требует по две ноги RX TX я так понимаю.Ну если я не правильно понял то вы выскажите правильную информацию.Да и примеров по USART-DMA и TIM-DMA мало .А вообще на 1-wire ds18b20 USART-DMA и TIM-DMA это разные программы. Или одна ?
Вс июн 19, 2022 09:33:27
Нет, неправильно понимаешь. А ссылку на реализацию с таймером я ещё в самом начале давал.
Вс июн 19, 2022 17:00:08
У меня вопрос от аматора к вам профи а могли бы вы в кратце на пальцах объяснить принцып USART-DMA 1-wire. Прицип таймера как он работает .Как он реализует протокол 1-Wire ?.Я чужие исходники плохо умею читать.
Вс июн 19, 2022 18:16:07
На уарте пусть тебе расскажет тот, кто на нем делал. Я делал на таймере, ссылку в самом начале давал. Принцип элементарный: сначала ты "послание" зашифровываешь побитно и в каждый элемент массива uint8_t складываешь значения регистра CC1 таймера, на котором делаешь это дело. Из регистра CC2 будешь забирать захваченные данные. Таймер одновременно как бы генерирует шим на CC1 и захватывает сигнал на CC2. После передачи разбираешь данные, которые через DMA приплыли из регистра CC2, да дешифруешь.
Естественно, мультиплексор соединяет CC1 и CC2 на одной ноге.
Вс июн 19, 2022 19:08:30
Так ты настраиваешь таймер в режиме захвата? Это один вход в режиме захвата?
Вс июн 19, 2022 19:36:41
Я же говорю: CC1 в режиме ШИМ, CC2 — в режиме захвата. Оба — на одной и той же ноге.
Вот же:
- Код:
void DS18_pinsetup(){
TIM1->CR1 = 0;
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_TIM1EN | RCC_APB2ENR_AFIOEN;
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
pin_set(GPIOA, 1<<8); // 1 @ line
// PA8 as opendrain output
GPIOA->CRH = (GPIOA->CRH & ~(GPIO_CRH_MODE8 | GPIO_CRH_CNF8)) |
CRH(8, CNF_ODOUTPUT | MODE_FAST);
TIM1->PSC = 71; // 1MHz
// CC1 is output (PWM mode 1, active->inactive, enable preload), CC2 is input @TI1
TIM1->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1PE |
TIM_CCMR1_CC2S_1;
// enable CC1 & CC2, CC1 active low
TIM1->CCER = TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC1P;
TIM1->DIER = 0; // disable IRQ & DMA events
// main output enable
TIM1->BDTR = TIM_BDTR_MOE;
// T1Ch2: per->mem, T1Ch1: mem->per; 16bit->8bit,
DMA1_Channel2->CCR = DMA_CCR_MINC | DMA_CCR_PSIZE_0 | DMA_CCR_TCIE | DMA_CCR_DIR;
DMA1_Channel3->CCR = DMA_CCR_MINC | DMA_CCR_PSIZE_0 | DMA_CCR_TCIE;
DMA1_Channel2->CPAR = (uint32_t)&TIM1->CCR1;
DMA1_Channel3->CPAR = (uint32_t)&TIM1->CCR2;
TIM1->CR1 = TIM_CR1_URS; // only ARR overflow generates interrupt
NVIC_EnableIRQ(TIM1_UP_IRQn); // last interrupt to turn timer off
NVIC_EnableIRQ(DMA1_Channel2_IRQn);
dsstate = DS18_SLEEP;
}
Вс июн 19, 2022 20:07:53
Я так и понял а как вы задержки делаете.Функция инициализации и ресета?
Пн июн 20, 2022 09:18:09
Ну я же ссылку дал. Неужто трудно открыть код? Все идет внутри конечного автомата. Вот:
- Код:
case DS18_DETDONE:
if(TIM1->CCR2 > RESET_BARRIER) DS18_startmeas(Tms);
else dsstate = DS18_ERROR;
break;
Пн июн 20, 2022 13:48:51
Eddy_Em писал(а):Ну я же ссылку дал. Неужто трудно открыть код?
Он же написал
ivan dimir писал(а):Я чужие исходники плохо умею читать.
Можно делать хоть 1500 ссылок на исходники но будет ли результат?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.