-
- переставлять по прерыванию по достижению конца буфера - koyodza(20.07.2010 00:05)
- В stm32 по моему нет такой аппаратной возможности. А может и есть, только сегодня начал с ним разьираться %-)). - Т.Достоевский(20.07.2010 00:11)
- DMA - это не тот модуль, за который стоит браться в первый же день изучения нового МК - koyodza(20.07.2010 15:53)
- Чёта легко както его запустил, аж сам испугалсо ;)). И ПДФы не читал. Может по тому что он у мну овер9000 посчёту. Ну 15ый точнно :)) - Т.Достоевский(21.07.2010 04:53 - 04:57)
- Там есть прерывание по окончанию пересылки блока (счетчик DMA). Потом назначаешь новый адрес, устанавливаешь счетчик и т.д... - Гудвин(20.07.2010 00:14)
- Хотелось бы чтобы передача пошла сразу как только появился первый символ. А потом докидывать. Но по моему это невозможно. А в stm тоже два ДМА указателя? - Т.Достоевский(20.07.2010 00:18)
- PS: СРАЗУ - это означает, что как только ты вывел первый символ в кольцевой буфер посредством putchar(), ты запускаешь DMA для пересылки этого символа. А дальше "как карта ляжет"... - Гудвин(20.07.2010 00:39)
- для запуска ДМА надо заносить количество символов которые передать, вот с этим и проблема. - Т.Достоевский(20.07.2010 00:56)
- Где проблема? Заносишь сначала один символ. Потом по мере заполния/опустошения буфера заносишь в счетчик столько требуется... - Гудвин(20.07.2010 01:07)
- И в чем тогда преимущество? Тогда уж по прерыванию послать проще, чем ДМА перенастраивать каждый раз. - Vladimir Ljaschko(21.07.2010 05:58)
- конечно проще. DMA удобен для пакетной передачи, а не побайтовой. А при скоростях уарта большой необходимости в нём нет - koyodza(21.07.2010 10:00)
- В большинстве случаев правда. Но если скорость побольше, типа 921600, то уже с FIFO или DMA полегче, не такая большая загрузка. - sbb(21.07.2010 13:27)
- Есть еще проблема с printf("Hello number 1"); printf("Hello again! DMA busy? ;)"); - Vladimir Ljaschko(21.07.2010 13:50)
- то понятно, имелись ввиду стандартные применения - koyodza(21.07.2010 13:47)
- В большинстве случаев правда. Но если скорость побольше, типа 921600, то уже с FIFO или DMA полегче, не такая большая загрузка. - sbb(21.07.2010 13:27)
- конечно проще. DMA удобен для пакетной передачи, а не побайтовой. А при скоростях уарта большой необходимости в нём нет - koyodza(21.07.2010 10:00)
- Надо сначала остановить а потом прибавить. Иначе неизвестно сколько га данный момент уже передал. Или йа фсёже гоню и это не так? - Т.Достоевский(20.07.2010 01:11)
- А ты попробуй, потом нам расскажешь :) Походишь по каким-нить грабелькам типа DMA контроллер требует выравнивания на границу 4 байта. Или (смутно помню) koyodza вроде упоминал требования кратности счетчика=2 для DMA в STM. В LPC для DMA еще существуют Гудвин(275 знак., 20.07.2010 01:18)
- я уже и сам смутно помню, кажись проблемы были не с длиной, а с "головой" буфера - koyodza(21.07.2010 10:50)
- А ты попробуй, потом нам расскажешь :) Походишь по каким-нить грабелькам типа DMA контроллер требует выравнивания на границу 4 байта. Или (смутно помню) koyodza вроде упоминал требования кратности счетчика=2 для DMA в STM. В LPC для DMA еще существуют Гудвин(275 знак., 20.07.2010 01:18)
- И в чем тогда преимущество? Тогда уж по прерыванию послать проще, чем ДМА перенастраивать каждый раз. - Vladimir Ljaschko(21.07.2010 05:58)
- Где проблема? Заносишь сначала один символ. Потом по мере заполния/опустошения буфера заносишь в счетчик столько требуется... - Гудвин(20.07.2010 01:07)
- для запуска ДМА надо заносить количество символов которые передать, вот с этим и проблема. - Т.Достоевский(20.07.2010 00:56)
- Вообщем, для отдадки наплюй на всяческие DMA, как уже посоветовали. Лишние грабли там ни к чему. И будет тебе и СРАЗУ, и выведется все, что хотел вывести при вызове функции printf(). Для критичной ко времени отладки лучше "мигать светодиодом". - Гудвин(20.07.2010 00:34)
- PS: СРАЗУ - это означает, что как только ты вывел первый символ в кольцевой буфер посредством putchar(), ты запускаешь DMA для пересылки этого символа. А дальше "как карта ляжет"... - Гудвин(20.07.2010 00:39)
- Хотелось бы чтобы передача пошла сразу как только появился первый символ. А потом докидывать. Но по моему это невозможно. А в stm тоже два ДМА указателя? - Т.Достоевский(20.07.2010 00:18)
- DMA - это не тот модуль, за который стоит браться в первый же день изучения нового МК - koyodza(20.07.2010 15:53)
- В stm32 по моему нет такой аппаратной возможности. А может и есть, только сегодня начал с ним разьираться %-)). - Т.Достоевский(20.07.2010 00:11)
- переставлять по прерыванию по достижению конца буфера - koyodza(20.07.2010 00:05)