Специальные цены   новые товары
+ Ответить в теме
Страница 85 из 165 ПерваяПервая ... 75 83 84 85 86 87 95 ... ПоследняяПоследняя
Показано с 3,361 по 3,400 из 6569

Создание собственной системы стабилизации

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; Сообщение от Drinker Или если совсем времени не будет давай в комнате летану? Да, достаточно повисеть 15 сек, и график ...

  1. #3361

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от Drinker Посмотреть сообщение
    Или если совсем времени не будет давай в комнате летану?
    Да, достаточно повисеть 15 сек, и график за это время показать.
    Цитата Сообщение от Drinker Посмотреть сообщение
    Вот я тоже об этом подумал.
    Нужно только ПИДы по тангажу и крену разные установить.

  2.  
  3. #3362
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Я поизучаю вопрос нащщет пидов. Конфиг рамы конечно спорный. Раздвинуты ноги гыгы.

  4. #3363

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Пиды возможно и трогать не придётся (если рама примерно 450-я и 10-е пропы), а вот сменить тип рамы на X надо будет (но это даже без перепрошивки) там скорей всего V тип стоит....

  5. #3364

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    DMA в F4 - беда, и как-то надо её решать...
    Проблема с 1-м Usart - вроде бы всё красиво, но зачем rx и tx вешать на один канал? хоть и потоки разные, канал один и тотже, (кстати для всей периферии такой маразм) а что происходит? а происходит следующее - потоки "деруться" за канал и побеждает естественно поток с младшим номером, в частности для Usart1 побеждает rx т.к. он либо stream2, либо stream5 тогда как tx stream7... Вопрос - как их разрулить? занизить приоритет одного из потоков - дык он потухнет



  6.  
  7. #3365

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Проблема с 1-м Usart - вроде бы всё красиво, но зачем rx и tx вешать на один канал?
    Не вижу проблемы, канал это только выбор входа для запроса на выполнение ПДП для определенного потока, т.е. каналы с одним номером для разных потоков разные.

    Что-то комрад Дринкер за выходные не проявился. Не фотки Хавка не графика акселя в полете....
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: DMA.jpg‎
Просмотров: 30
Размер:	57.2 Кб
ID:	869802  
    Последний раз редактировалось rual; 25.11.2013 в 09:36.

  8. #3366
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от rual Посмотреть сообщение
    Что-то комрад Дринкер за выходные не проявился

    Я выходные провел далеко и без хобби. Товарищ серг поведал, что в хавк должна быть вставлена симка. Типо без симки он вообще не запустицца. Если так, то вечером будут графики с прошлых полетов.

  9. #3367

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от Drinker Посмотреть сообщение
    Я выходные провел далеко и без хобби.
    Понятно, ждёмс.... В фото хавка интересует набор датчиков.

  10.  
  11. #3368

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    Не вижу проблемы
    Тогда я вобще не понимаю в чём беда? Mahowik сказат что у него не та, не другая версия драйвера вообще по tx не запустилась....
    хотел сегодня вылететь, даже с планшетом договорился, а тут мокрый снег с дождём и ветер

  12. #3369

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Тогда я вобще не понимаю в чём беда?
    Вот я действительно не понял что за беда происходит, когда нужно временно отключить ПДП, а потом возобновить. Не могу нормально ПОВТОРНО инициализировать поток, хотя остановку ПДП делаю по руководству, дожидаюсь снятия бита DMA_SxCR_EN.
    DMA_Cmd (DMA2_Stream3, DISABLE);
    while(DMA_GetCmdStatus(DMA2_Stream3) != DISABLE);
    Может у вас с этим же проблема?

    Показывай код.

  13. #3370

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Вот старая версия https://github.com/SergDoc/Nev_Multi...src/drv_uart.c
    Вот новая https://github.com/SergDoc/Nev_Multi...src/drv_uart.c
    а итог один - тормоза в цыкле а у Саши вообще не запустился....
    или тут надо:

    Код:
     /* Î÷èùàåì áèò îáðàáîòêè ïðåðûâàíèÿ */
         
        DMA_ClearITPendingBit(DMA2_Stream7,DMA_IT_TCIF7);
        DMA_Cmd(DMA2_Stream7, DISABLE);
    while (DMA_GetCmdStatus(DMA2_Stream7) != DISABLE) {
                       };//добавить?
        if (txBufferHead != txBufferTail)
                                   uartTxDMA();
                    else
            txDMAEmpty = true;
            }
    хоть ты плату снимай....

    Не наверно пока новую не соберу снимать не буду, а потом уже на старой буду эксперименты экспериментировать

    Цитата Сообщение от Drinker Посмотреть сообщение
    Товарищ серг поведал, что в хавк должна быть вставлена симка.
    Логи можно и неразбирая скачать через терминал в планнене...
    Последний раз редактировалось SergDoc; 25.11.2013 в 14:17.

  14. #3371
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Логи можно и неразбирая скачать через терминал в планнене...

    Попробую. Спасибо. Только ткни куда тыкать.

    И чего-то я запуталсо - две версии планнера есть что-ли? На сцайте у 3др версия 2.0, у меня какаято старая и по виду не похожая.

  15. #3372
    Забанен
    Регистрация
    30.11.2011
    Адрес
    Киев
    Возраст
    36
    Сообщений
    373
    Цитата Сообщение от SergDoc Посмотреть сообщение
    а итог один - тормоза в цыкле а у Саши вообще не запустился.... или тут надо:
    Попробуйте напрямую с регистрами работать. Говорят в STM32F4xx_StdPeriph_Driver косяки проскакивают.

  16. #3373

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Есть apm planner (Qt)
    и есть Mission planner (net) но по сути они похожи, во вкладке терминал выбрать PX4/PIXHAWK > connect > скачать лог , у меня винда на этом ноуте тормознутая, так что не удивляйтесь - там видно несколько раз тыкался в connect

    Цитата Сообщение от Alexey_1811 Посмотреть сообщение
    Говорят в STM32F4xx_StdPeriph_Driver косяки проскакивают
    Скорей всего
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: Log.jpg‎
Просмотров: 20
Размер:	54.6 Кб
ID:	869932  

  17. #3374

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от Alexey_1811 Посмотреть сообщение
    Говорят в STM32F4xx_StdPeriph_Driver косяки проскакивают.
    Пока не встречал, правда один раз пытался на индусов всё свалить... не вышло Библиотеками надо уметь пользоваться, код открытый - читай не хочу

    Ещё кейл всё сильно оптимизирует, так что работу с периферией построчно не отладить.

  18. #3375
    Забанен
    Регистрация
    30.11.2011
    Адрес
    Киев
    Возраст
    36
    Сообщений
    373
    Цитата Сообщение от rual Посмотреть сообщение
    Ещё кейл всё сильно оптимизирует, так что работу с периферией построчно не отладить.
    Пару раз натыкался на то что он выкидывал нужный кусок кода. Помогала установка пустой строки в области кода. Так и не понял почему так случалось.

  19. #3376

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Может библиотеки заменить? вроде STM32F4xx_StdPeriph_Driver по свежее уже есть?

    Цитата Сообщение от Alexey_1811 Посмотреть сообщение
    Пару раз натыкался на то что он выкидывал нужный кусок кода. Помогала установка пустой строки в области кода. Так и не понял почему так случалось.
    да есть такое...

  20. #3377

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Так как нелётная погода и настроение вообще аховое, незнал чем заняццо, ну ничего не получается сегодня, решил под бубунтой Mission Planner запустить:
    И так что для этого надо?
    установить mono runtime
    Mono — это платформа для выполнения и разработки программ на основе стандартов ECMA/ISO. Mono — реализация стандарта с открытым исходным кодом от Novell. Mono предоставляет полную среду CLR (Common Language Runtime), включая компилятор и среду выполнения, с помощью которых можно создавать и исполнять байт-код CIL (Common Intermediate Language), а также библиотеку классов.

    Этот пакет содержит виртуальную машину, JIT-компилятор и AOT-генератор кода «mono». «mono» выполняет приложения для CLI (Common Language Infrastructure). В настоящий момент Mono поддерживает только архитектуры X86, PowerPC, ARM, SPARC, S/390, AMD64 и IA64. Опционально этот пакет настраивает поддержку BINFMT.
    как это сделать?
    в консоли набираем:
    Код:
    sudo apt-get install mono-runtime libmono-winforms2.0-cil libmono-corlib2.0-cil libmono-system-web4.0-cil libmono-system-management4.0-cil
    после установки лезем сюда и скачиваем сам планнер в архиве!!! не msi.
    распаковываем его куда-нибудь (папки без пробелов в названии и не кириллицей)
    далее лезем в ту папку находим ArdupilotMegaPlanner10.exe правой клавишей ->свойства -> права ставим галочку - на разрешения запуска как приложение, открыть с помощью -> mono-runtime. Закрываем всё это дело и двойным кликом запускаем экзешник (тут есть нюанс - попросил обновится и перестал работать, так что я всё это убил и распаковал заново) и вуаля, под винду лазать больше не надо
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: 33.jpg‎
Просмотров: 13
Размер:	55.1 Кб
ID:	869978  

  21. #3378

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Вот старая версия https://github.com/SergDoc/Nev_Multi...src/drv_uart.c
    Вот новая https://github.com/SergDoc/Nev_Multi...src/drv_uart.c
    а итог один - тормоза в цыкле а у Саши вообще не запустился....
    Странно... как работает новая версия я понять не могу, ибо не вижу инициализации потока ПДП
    //DMA_InitStructure.DMA_Channel = DMA_Channel_4;
    //DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&USART1->DR;
    DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)txBuffer;
    DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
    //DMA_InitStructure.DMA_BufferSize = UART_BUFFER_SIZE;
    //DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    //DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    //DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
    //DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
    //DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
    //DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
    //DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull;
    //DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
    //DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
    видимо умолчательные значения совпадают с нужными ))) хотя почему круговой режим изменен на нормальный? особо плохо что закоментина строка
    //DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&USART1->DR;
    и вообще там есть режим ФИФО, его и надо пользовать.
    Если будет желание и возможность, завтра перепишу.

    Цитата Сообщение от SergDoc Посмотреть сообщение
    Может библиотеки заменить? вроде STM32F4xx_StdPeriph_Driver по свежее уже есть?
    нее, библиотеки тут не при чем
    Последний раз редактировалось rual; 25.11.2013 в 21:30.

  22. #3379

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Может библиотеки заменить? вроде STM32F4xx_StdPeriph_Driver по свежее уже есть?
    Цитата Сообщение от SergDoc Посмотреть сообщение
    а итог один - тормоза в цыкле а у Саши вообще не запустился....
    я на дискавери-F4 пробовал + GY-86... т.е. мот какая специфика, типа на PA9,PA10 уже чего нить навешено... хотя простой примерчик (USART без DMA) из тырнета заработал...
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Может библиотеки заменить? вроде STM32F4xx_StdPeriph_Driver по свежее уже есть?
    в одном из примеров видел версию 1.0.2, хотя на stm оф. сайте сходу ее не нашел...

  23. #3380

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    особо плохо что закоментина строка
    умолчательные значения да совпадают
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&USART1->DR; // смотрел в примерах - оно один раз только выбирается, зачем два раза?

  24. #3381

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    upd: еще можно глянуть в старом порте вия на F4 https://code.google.com/p/uavp-mods/...8.zip&can=2&q=

    MWArmF4\src\harness\harness.c
    MWArmF4\src\harness\serial.c
    там вполне структурировано и не коряво с виду написано...
    Код:
    // Rewritten from AQ original Copyright © 2011 Bill Nesbitt

  25. #3382

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Там оно работает, я проверял, но вот вопрос с dma или без?

  26. #3383

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от SergDoc Посмотреть сообщение
    но вот вопрос с dma или без?
    с dma, но нюансы я пока не понимаю

    pins.c
    Код:
    SerialPortDef SerialPorts[MAX_SERIAL_PORTS] = { // Tx, Rx
        { true, USART1, GPIO_AF_USART1, GPIOA,
            GPIO_Pin_9, GPIO_PinSource9,
            GPIO_Pin_10, GPIO_PinSource10,
            true, USART1_IRQn,
            false, DMA_Channel_4,
            DMA2_Stream7, DMA2_Stream7_IRQn,
            DMA2_Stream5,
            115200
            },
    
        { false, USART2, GPIO_AF_USART2, GPIOA,
            GPIO_Pin_2, GPIO_PinSource2,
            GPIO_Pin_3, GPIO_PinSource3,
            false, USART2_IRQn,
            false, DMA_Channel_4,
            DMA1_Stream6, DMA1_Stream6_IRQn,
            DMA1_Stream5,
            115200 // SBus 110000
        	}
        };
    serial.c
    Код:
    #include "harness.h"
    
    // Rewritten from AQ original Copyright © 2011 Bill Nesbitt
    
    volatile uint8 TxQ[MAX_SERIAL_PORTS][SERIAL_BUFFER_SIZE] __attribute__((aligned(4)));
    volatile int16 TxQTail[MAX_SERIAL_PORTS];
    volatile int16 TxQHead[MAX_SERIAL_PORTS];
    volatile int16 TxQNewHead[MAX_SERIAL_PORTS];
    
    volatile uint8 RxQ[MAX_SERIAL_PORTS][SERIAL_BUFFER_SIZE] __attribute__((aligned(4)));
    volatile int16 RxQTail[MAX_SERIAL_PORTS];
    volatile int16 RxQHead[MAX_SERIAL_PORTS];
    volatile int16 RxQNewHead[MAX_SERIAL_PORTS];
    
    uint8_t TxCheckSum = 0;
    
    void serialTxDMA(uint8 s) {
    
    	SerialPorts[s].TxDMAStream->M0AR = (uint32) &TxQ[s][TxQHead[s]];
    
    	if (TxQTail[s] > TxQHead[s]) { // Tail not wrapped around yet
    		DMA_SetCurrDataCounter(SerialPorts[s].TxDMAStream, TxQTail[s]
    				- TxQHead[s]);
    		TxQNewHead[s] = TxQTail[s];
    	} else {// Tail has wrapped do balance from Head to end of Buffer
    		DMA_SetCurrDataCounter(SerialPorts[s].TxDMAStream, SERIAL_BUFFER_SIZE
    				- TxQHead[s]);
    		TxQNewHead[s] = 0;
    	}
    	DMA_Cmd(SerialPorts[s].TxDMAStream, ENABLE);
    
    } // serialTxDMA
    
    boolean serialAvailable(uint8 s) {
    	boolean r;
    
    	if (SerialPorts[s].DMAUsed) {
    		RxQTail[s] = SERIAL_BUFFER_SIZE - DMA_GetCurrDataCounter(
    				SerialPorts[s].RxDMAStream);
    		r = RxQHead[s] != RxQTail[s];
    	} else if (SerialPorts[s].InterruptsUsed)
    		r = RxQTail[s] != RxQHead[s];
    	else {
    		r = (USART_GetFlagStatus(SerialPorts[s].USART, USART_FLAG_RXNE) == SET);
    	}
    
    	return (r);
    } // serialAvailable
    
    uint8 RxChar(uint8 s) {
    	uint8 ch;
    
    	if (SerialPorts[s].DMAUsed || SerialPorts[s].InterruptsUsed) {
    		ch = RxQ[s][RxQHead[s]];
    		RxQHead[s] = (RxQHead[s] + 1) & (SERIAL_BUFFER_SIZE - 1);
    	} else
    		ch = USART_ReceiveData(SerialPorts[s].USART);
    
    	return (ch);
    } // RxChar
    
    uint8 PollRxChar(uint8 s) {
    	uint8 ch;
    
    	if (serialAvailable(s)) {
    		ch = RxChar(s);
    		return (ch);
    	} else {
    		return (0);
    	}
    } // PollRxChar
    
    void TxChar(uint8 s, uint8 ch) {
    	int16 NewTail;
    
    	TxCheckSum ^= ch;
    	if (SerialPorts[s].DMAUsed || SerialPorts[s].InterruptsUsed) {
    		NewTail = (TxQTail[s] + 1) & (SERIAL_BUFFER_SIZE - 1);
    		while (NewTail == TxQHead[s]) {
    		};
    
    		TxQ[s][TxQTail[s]] = ch;
    		// tail points to NEXT free slot
    		TxQTail[s] = NewTail;
    
    		if (SerialPorts[s].DMAUsed) {
    			if (DMA_GetCmdStatus(SerialPorts[s].TxDMAStream) == DISABLE)
    				serialTxDMA(s);
    		} else {
    			// if TXE then interrupt will be pending
    			USART_ITConfig(SerialPorts[s].USART, USART_IT_TXE, ENABLE);
    		}
    	} else {
    		while (USART_GetFlagStatus(SerialPorts[s].USART, USART_FLAG_TXE)
    				== RESET) {
    		};
    		USART_SendData(SerialPorts[s].USART, ch);
    	}
    } // TxChar
    
    void serialISR(uint8 s) {
    	uint8 ch;
    
    	if (USART_GetITStatus(SerialPorts[s].USART, USART_IT_RXNE) == SET) {
    		ch = USART_ReceiveData(SerialPorts[s].USART);
    		RxQ[s][RxQTail[s]] = ch;
    		RxQTail[s] = (RxQTail[s] + 1) & (SERIAL_BUFFER_SIZE - 1);
    
    		if (RxQTail[s] == RxQHead[s]) { // full
    			//USART_ITConfig(SerialPorts[s].USART, USART_IT_RXNE, DISABLE);
    		}
    	}
    
    	if (USART_GetITStatus(SerialPorts[s].USART, USART_IT_TXE) == SET) {
    		if (TxQTail[s] != TxQHead[s]) {
    			ch = TxQ[s][TxQHead[s]];
    			USART_SendData(SerialPorts[s].USART, ch);
    			TxQHead[s] = (TxQHead[s] + 1) & (SERIAL_BUFFER_SIZE - 1);
    		}
    		if (TxQHead[s] == TxQTail[s])
    			USART_ITConfig(SerialPorts[s].USART, USART_IT_TXE, DISABLE);
    	}
    } // serialISR
    
    void InitSerial(void) {
    
    	//TODO:	serialPortInit(0, 115200);
    
    } // InitSerial
    harness.c
    Код:
    void InitSerialPort(uint8 s) {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	USART_InitTypeDef USART_InitStructure;
    	DMA_InitTypeDef DMA_InitStructure;
    	NVIC_InitTypeDef NVIC_InitStructure;
    	SerialPortDef * u;
    
    	u = &SerialPorts[s];
    
    	if (u->Used) {
    
    		GPIO_StructInit(&GPIO_InitStructure);
    		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    #ifdef STM32F1
    		GPIO_InitStructure.GPIO_Pin = u->TxPin;
    		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    		GPIO_Init(u->Port, &GPIO_InitStructure);
    
    		GPIO_InitStructure.GPIO_Pin = u->RxPin;
    		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    		GPIO_Init(u->Port, &GPIO_InitStructure);
    #else
    		GPIO_StructInit(&GPIO_InitStructure);
    		GPIO_InitStructure.GPIO_Pin = u->TxPin | u->RxPin;
    		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    		//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    		GPIO_Init(u->Port, &GPIO_InitStructure);
    
    		GPIO_PinAFConfig(u->Port, u->TxPinSource, u->USART_AF);
    		GPIO_PinAFConfig(u->Port, u->RxPinSource, u->USART_AF);
    #endif
    		USART_StructInit(&USART_InitStructure);
    		//USART_InitStruct->USART_Parity = USART_Parity_No;
    		USART_InitStructure.USART_BaudRate = u->Baud;
    		USART_Init(u->USART, &USART_InitStructure);
    
    		NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    		NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
    		NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    
    		TxQTail[s] = TxQHead[s] = TxQNewHead[s] = 0;
    
    		if (u->DMAUsed) {
    			// Common
    			DMA_StructInit(&DMA_InitStructure);
    			DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    			DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
    			DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32) &u->USART->DR;
    			DMA_InitStructure.DMA_BufferSize = SERIAL_BUFFER_SIZE;
    
    			// Receive DMA
    			DMA_DeInit(u->RxDMAStream);
    
    			DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32) &u->USART->DR;
    			DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    #ifdef STM32F1
    			DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    			DMA_InitStructure.DMA_MemoryBaseAddr = (uint32) RxQ[s];
    #else
    			while (DMA_GetCmdStatus(u->RxDMAStream) != DISABLE) {
    			};
    			DMA_InitStructure.DMA_Channel = u->DMAChannel;
    			DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
    			DMA_InitStructure.DMA_Memory0BaseAddr = (uint32) RxQ[s];
    #endif
    			DMA_Init(u->RxDMAStream, &DMA_InitStructure);
    			DMA_Cmd(u->RxDMAStream, ENABLE);
    			USART_DMACmd(u->USART, USART_DMAReq_Rx, ENABLE);
    
    			RxQTail[s] = RxQHead[s] = SERIAL_BUFFER_SIZE
    					- DMA_GetCurrDataCounter(u->RxDMAStream);
    
    			// Transmit DMA
    			NVIC_InitStructure.NVIC_IRQChannel = u->TxDMAISR;
    			NVIC_Init(&NVIC_InitStructure);
    
    			DMA_DeInit(u->TxDMAStream);
    #ifdef STM32F1
    			DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
    #else
    			while (DMA_GetCmdStatus(u->TxDMAStream) != DISABLE) {
    			};
    			DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
    			//	DMA_InitStructure.DMA_Memory0BaseAddr = (uint32) TxQ[s];
    #endif
    			DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
    			DMA_Init(u->TxDMAStream, &DMA_InitStructure);
    
    			DMA_SetCurrDataCounter(u->TxDMAStream, 0);
    			DMA_ITConfig(u->TxDMAStream, DMA_IT_TC, ENABLE);
    
    			USART_DMACmd(u->USART, USART_DMAReq_Tx, ENABLE);
    		} else if (u->InterruptsUsed) {
    			RxQTail[s] = RxQHead[s] = 0;
    			NVIC_InitStructure.NVIC_IRQChannel = u->ISR;
    			NVIC_Init(&NVIC_InitStructure);
    
    			USART_ITConfig(u->USART, USART_IT_RXNE, ENABLE);
    		}
    		USART_Cmd(u->USART, ENABLE);
    	}
    
    } // InitSerialPort

  27. #3384

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Видишь кругом задержки:
    while (DMA_GetCmdStatus(u->TxDMAStream) != DISABLE) {
    };
    также я в старом драйвере делал....
    мне тут подумалось, там же вий 2.1 протокол, может уже чё поменяли? или 2.2 ? блин уже почти год кодятнику - как время летит...
    Найдите 10 отличий как говорится : https://code.google.com/p/aq32plus/s...rv_telemetry.c
    прикол что у товарищей то работает, и у меня работало
    Последний раз редактировалось SergDoc; 25.11.2013 в 23:08.

  28. #3385

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    как там говорят: "дьявол в деталях"... а может именно с дискавери платой какая особенность... хз...

    кстати попробуй проект открыть мой (точнее твой, но адаптированный под мпу6050 ), может там в настройках самого проекта что нить не то... собери мне хекс-у и почтой кинь... проверю...

  29. #3386

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Часиков в 12 ночи по нашему...

  30. #3387

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от mahowik Посмотреть сообщение
    как там говорят: "дьявол в деталях"...
    это да

    Цитата Сообщение от mahowik Посмотреть сообщение
    а может именно с дискавери платой какая особенность...
    это нет

    Цитата Сообщение от mahowik Посмотреть сообщение
    там вполне структурировано и не коряво с виду написано...
    Да, компоновка настроек неплохая, и код написан для абстрактного порта, описанного в структуре. Но сами алгоритмы ничем не отличаются.

  31. #3388

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от rual Посмотреть сообщение
    это нет
    а оказалось да бомба в дискавери-Ф4 на PA9 висит че блин сразу не залез в схему, раз догадки были... кондер блин на 4.7мкф на лапе сидит...
    http://www.micromouseonline.com/2013...#axzz2liCmKZvc
    https://my.st.com/public/STe2ecommun...rrentviews=399

    перевесил USART1 на PB6, PB7 и все пошло, но пока мучился уже успел портануть USART+DMA из MWArmF4
    терь покрасивше чуток... конфиг такой вышел
    Код:
    SerialPortDef SerialPorts[MAX_SERIAL_PORTS] = { // Tx, Rx
        { true, USART1, GPIO_AF_USART1, GPIOB,
            GPIO_Pin_6, GPIO_PinSource6, // PB6
            GPIO_Pin_7, GPIO_PinSource7, // PB7
            true, USART1_IRQn,
            false, DMA_Channel_4,
            DMA2_Stream7, DMA2_Stream7_IRQn,
            DMA2_Stream5,
            115200
            },
    
        ...
        };

  32. #3389

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    а цыфирку то 115200 зачем там переменная speed есть через cli можно любую скорость ставить...

    Цитата Сообщение от mahowik Посмотреть сообщение
    перевесил USART1 на PB6, PB7 и все пошло
    для baseflight это критично, для прошивки через терминал загоняется R - ппроц спускается до лодыря, а лодырь у тебя на других лапах усарт ищет

    Цитата Сообщение от mahowik Посмотреть сообщение
    перевесил USART1 на PB6, PB7
    на новой плате он там но по другим причинам...

  33. #3390

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от mahowik Посмотреть сообщение
    перевесил USART1 на PB6, PB7 и все пошло, но пока мучился уже успел портануть USART+DMA из MWArmF4
    )))) нудык! этаж не дискавери, этаж надо смотреть

    Цитата Сообщение от SergDoc Посмотреть сообщение
    на новой плате он там но по другим причинам...
    По этим же причинам, VBUS там.

  34. #3391

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    По этим же причинам, VBUS там.
    А нафига они там кондёр то повесили? я на старой плате закоротил, теперь если шиться через usart1 припрёт (лодырь залить с полным стиранием) только шнурок от usb отцепить дабы питание на pa9 не шло - и прекрасно работает.... гы у тебя похоже не получалось через usart1 лодырь залить по той же причине - я считаю косяк проца в этом (неудобство для пользователя) не ну конечно есть DFU через USB - но чёт я так и не понял как через него всю флеш стереть
    Там же по моему даже питание на плату с того USB не идёт? (discovery)
    вот и вывод - хочешь USB, либо делай лодырь, либо вешай 1.5К на VBUS - D+ и используй программно свободную лапу...
    Последний раз редактировалось SergDoc; 26.11.2013 в 13:41.

  35. #3392

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    А нафига они там кондёр то повесили?
    Дык, usb та там ОТГ, нужно ж в некоторых демках от него внешнее устройства питается.

    Цитата Сообщение от SergDoc Посмотреть сообщение
    я считаю косяк проца в этом (неудобство для пользователя)
    да нее, не косяк, тут либо-либо. если есть USB то нах усарт? Если нет USB? тогда пожалуста usart.
    Цитата Сообщение от SergDoc Посмотреть сообщение
    но чёт я так и не понял как через него всю флеш стереть
    То что всё стереть нельзя, дык это в демо софте. Если сильно надо протокол открытый.
    А кстати, зачем надо? У нас с тобой проблема прошивки не в этом была.
    Цитата Сообщение от SergDoc Посмотреть сообщение
    вот и вывод - хочешь USB, либо делай лодырь,
    Сергей, из чего такой вывод? При формировании ДФУ из нормального HEX это нафиг не надо.

    Лодырь для Ф4 нужен только для одного, чтоб шится шифрованной прошивкой, это всё... Других применений собственного лодыря придумать не могу.

  36. #3393

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    То что всё стереть нельзя, дык это в демо софте. Если сильно надо протокол открытый.
    А кстати, зачем надо? У нас с тобой проблема прошивки не в этом была.
    Цитата Сообщение от rual Посмотреть сообщение
    Сергей, из чего такой вывод? При формировании ДФУ из нормального HEX это нафиг не надо.

    Лодырь для Ф4 нужен только для одного, чтоб шится шифрованной прошивкой, это всё... Других применений собственного лодыря придумать не могу.
    Через демку не сотрёшь - а это однозначный косяк при перезаписи!!! т.е. как выход надо делать свою софтину DFU, или каждому в довесок к плате St-Link собирать? ну или как вариант покупать discovery ибо отдельно программатор как-то не по вкусной цене. Выход для простого пользователя - лодырь (ну тот-же арду - залился планера и привет - новая прошивка) да была бы USB демка такая-же как uploader по Usart да цены б ей небыло и вопросов бы не возникало USB или Usart. Ну вот зачем простому пользователю лишние телодвижения, в той же baseflightGUI всё встроено загоняет проц в режим лодыря и запускает прошивальшик без дёрганий втыкания BOOT0...

    При формировании ДФУ из нормального HEX это нафиг не надо.
    Кстати надо поработать над техникой по идее можно заставить компилятор сразу создавать DFU займусь новым лодырем (ну под новую плату) поэкспериментирую...

    Цитата Сообщение от rual Посмотреть сообщение
    А кстати, зачем надо? У нас с тобой проблема прошивки не в этом была.
    А вот я пробовал залить арду (vrbrain) а потом обратно baseflight - и усё не стартует....
    Последний раз редактировалось SergDoc; 26.11.2013 в 15:56.

  37. #3394

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    А вот я пробовал залить арду (vrbrain) а потом обратно baseflight - и усё не стартует....
    Серёг, это косяк НЕ ПРОЦЕССОРА, это КОСЯК прошивки. Либо она заливается не в те адреса, либо что то ищет в не размеченной компиллером области и находит что-то не то.
    Было бы не плохо вычислить что её надо, как это сделать не знаю.

  38. #3395
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Через демку не сотрёшь - а это однозначный косяк при перезаписи!!! т.е. как выход надо делать свою софтину DFU
    Че за демка и что тут стираете? Чем дфу тестер не устраивает?

    Стер всё им и прошился им-же

  39. #3396

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    либо что то ищет в не размеченной компиллером области и находит что-то не то. Было бы не плохо вычислить что её надо, как это сделать не знаю.
    Конечно ищет у неё ж там виртуалка так вот в том то и проблема что если мы что-то меняем в DFU через USB то только в том месте куда прошиву льём... при чём оно просто заменяет данные, а не стирает а потом записывает

    Цитата Сообщение от Drinker Посмотреть сообщение
    Че за демка и что тут стираете? Чем дфу тестер не устраивает?
    через USB нативный...

  40. #3397
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от SergDoc Посмотреть сообщение
    через USB нативный...

    Наверное я чето не понимаю. В чем проблема лить проши через усб? Я лична только так и шьюсь. И никак иначе.

  41. #3398

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    DFUse ? она не даёт стирать флеш....

  42. #3399
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от SergDoc Посмотреть сообщение
    DFUse ? она не даёт стирать флеш....
    STDFU Tester я использую...

    Стирает все к чертям.

  43. #3400

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    попробую...

+ Ответить в теме

Похожие темы

  1. Система стабилизации гиро+акселерометр
    от Фантомас в разделе Полеты по камере, телеметрия
    Ответов: 32
    Последнее сообщение: 25.01.2011, 14:47
  2. Продам Продам Клона Trex 450SEV2 + Аппаратура + Запчасти+ система стабилизации RTF
    от omegapraim в разделе Барахолка. Вертолеты
    Ответов: 1
    Последнее сообщение: 12.01.2011, 18:16
  3. Продам Трёхосевую систему стабилизации Turnigy V-Bar 600
    от avi@tor в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 08.11.2010, 13:02
  4. Продам Gaui система стабилизации GU365, дёшево.
    от avi@tor в разделе Барахолка. Вертолеты
    Ответов: 3
    Последнее сообщение: 03.08.2010, 11:13
  5. Системы стабилизации
    от max815 в разделе Фото и видеосъемка, системы стабилизации
    Ответов: 16
    Последнее сообщение: 11.03.2010, 03:14

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения