Перейти к содержанию
    

mihlit1

Участник
  • Постов

    46
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о mihlit1

  • Звание
    Участник
    Участник
  • День рождения 25.06.1955

Информация

  • Город
    Array

Посетители профиля

814 просмотра профиля
  1. Долго ломал голову почему энкодер выдает 2 тика на щелчок. Нашлись люди добрые, объяснили. Есть энкодеры EC11 и E12 (мне попадались). Так вот, один из них выдает 2 тика на щелчок, другой тип - 1 тик на щелчок.
  2. Есть целый раздел электротехники - двигатели постоянного тока. Скорее всего у Вас двигатель с последовательным возбуждением - у них при уменьшении тока возбуждения растут обороты. Подробнее - см. Теория электропривода (есть такой раздел).
  3. stm32f303cct6, CubeIDE 1.6.1 Где то накосячил, не получается переключится из ADC1_TIM3 в DualMode. ТКНИТЕ НОСОМ!!! //------------------------------------ void ADC1_TIM3(void) { //HAL_ADC_Stop(&hadc2); ADC1->CR |= ADC_CR_ADSTP; // ADC stop conversion while (ADC1->CR & ADC_CR_ADSTART) {} // wait till ADC stop work ADC2->CR |= ADC_CR_ADSTP; while (ADC2->CR & ADC_CR_ADSTART) {} ADC1->CR |= ADC_CR_ADDIS; // ADC disable while (ADC1->CR & ADC_CR_ADEN) {} ADC2->CR |= ADC_CR_ADDIS; while (ADC2->CR & ADC_CR_ADEN) {} //ADC1->CFGR = 0x1511; ADC1->CFGR = 0; ADC1->CFGR |= ADC_CFGR_OVRMOD; ADC1->CFGR |= ADC_CFGR_DMAEN; ADC1->CFGR |= ADC_CFGR_EXTEN_0; ADC1->CFGR |= ADC_RESOLUTION_8B; ADC1->CFGR |= ADC_CFGR_EXTSEL_2; ADC2->CFGR = 0; DMA1_Channel1->CCR &= ~DMA_CCR_EN; //DMA disable while (DMA1_Channel1->CCR & DMA_CCR_EN) {} // wait DMA1_Channel1->CNDTR = 0x400; DMA1_Channel1->CPAR = 0x50000040; DMA1_Channel1->CMAR = (uint32_t)&buf_adc; DMA1->IFCR = 0xFFFFFFFF; //DMA1_Channel1->CCR = 0x8E; DMA1_Channel1->CCR = 0; DMA1_Channel1->CCR |= DMA_CCR_HTIE; DMA1_Channel1->CCR |= DMA_CCR_MINC; DMA1_Channel1->CCR |= DMA_CCR_TCIE; DMA1_Channel1->CCR |= DMA_CCR_TEIE; DMA1_Channel1->CCR |= DMA_CCR_EN; //DMA enable ADC1->CR |= ADC_CR_ADEN; // enable the ADC ADC1->CR |= ADC_CR_ADSTART; // start ADC conversion } //------------------------------------ void DualMode(void) { ADC1->CR |= ADC_CR_ADSTP; // ADC stop conversion while (ADC1->CR & ADC_CR_ADSTART) {} // wait till ADC stop work ADC2->CR |= ADC_CR_ADSTP; while (ADC2->CR & ADC_CR_ADSTART) {} ADC1->CR |= ADC_CR_ADDIS; // ADC disable while (ADC1->CR & ADC_CR_ADEN) {} ADC2->CR |= ADC_CR_ADDIS; while (ADC2->CR & ADC_CR_ADEN) {} //ADC1->CFGR = 0x3010; ADC1->CFGR = 0; ADC1->CFGR |= ADC_CFGR_OVRMOD; ADC1->CFGR |= ADC_RESOLUTION_8B; ADC1->CFGR |= ADC_CFGR_CONT; ADC2->CFGR = 0x3010; //ADC1_2_COMMON->CCR = 0x1C407; ADC1_2_COMMON->CCR = 0; ADC1_2_COMMON->CCR |= ADC_CCR_CKMODE; ADC1_2_COMMON->CCR |= ADC_CCR_DELAY_2; ADC1_2_COMMON->CCR |= ADC_CCR_MDMA; ADC1_2_COMMON->CCR |= ADC_CCR_MULTI_0 |ADC_CCR_MULTI_1 |ADC_CCR_MULTI_2; DMA1_Channel1->CCR &= ~DMA_CCR_EN; //DMA disable DMA1_Channel1->CMAR = (uint32_t)&dual_adc; DMA1_Channel1->CNDTR = 0x200; DMA1_Channel1->CPAR = 0x5000030C; DMA1->IFCR = 0xFFFFFFFF; DMA1_Channel1->CCR = 0x58E; DMA1_Channel1->CCR |= DMA_CCR_EN; //DMA enable ADC1->CR |= ADC_CR_ADEN; // enable the ADC ADC1->CR |= ADC_CR_ADSTART; ADC2->CR |= ADC_CR_ADEN; ADC2->CR |= ADC_CR_ADSTART; } //------------------------------------ TIM3 останавливается в main()
  4. Keil asm

    А больше вас в этом быдлокоде ничего не смущает? Телепаты, угадывающие МК, в отпуске. Вот ответ, достойный гуру!!! Браво!!! Занавес.
  5. Keil asm

    83: int R0,R1,R2,R3,R4,R5; 84: __ASM 85: ( 0x080025C6 4A0C LDR r2,[pc,#48] ; @0x080025F8 86: "MOV R0, &buff \n" 87: "MOV R1, #port \n" 88: "MOV R2, #step \n" 89: "MOV R3, #256 \n" 90: "next_loop: \n" 91: "LDRB R4, [R0], #1 \n" 92: "STRB R4, [R1] \n" 93: "MOV R5, R2 \n" 94: "loop_DDS: \n" 95: "SUBS R5, #1 \n" 96: "BNE loop_DDS \n" 97: "SUBS R3, #1 \n" 98: "BNE next_loop \n" 99: ); 0x080025C8 4614 MOV r4,r2 0x080025CA 4A0C LDR r2,[pc,#48] ; @0x080025FC 0x080025CC 6813 LDR r3,[r2,#0x00] 0x080025CE 4A0C LDR r2,[pc,#48] ; @0x08002600 0x080025D0 6810 LDR r0,[r2,#0x00] 0x080025D2 F44F7580 MOV r5,#0x100 0x080025D6 BF00 NOP 0x080025D8 F8141B01 LDRB r1,[r4],#0x01 0x080025DC 7019 STRB r1,[r3,#0x00] 0x080025DE 4606 MOV r6,r0 0x080025E0 BF00 NOP 0x080025E2 4632 MOV r2,r6 0x080025E4 3A01 SUBS r2,r2,#0x01 0x080025E6 4616 MOV r6,r2 0x080025E8 D000 BEQ 0x080025EC 0x080025EA E7FA B 0x080025E2 0x080025EC 462A MOV r2,r5 0x080025EE 3A01 SUBS r2,r2,#0x01 0x080025F0 4615 MOV r5,r2 0x080025F2 D000 BEQ 0x080025F6 0x080025F4 E7F0 B 0x080025D8 100: } Уважаемые гуру! Еще пара вопросов. 1. На кой инлайн ассемблер Keilа вставляет NOP? 2. Байт, считываемый из buff, передается в GPIOA->ODR, причем записывается и в PA0..PA7(что я и ожидал), и в PA8..PA15(а это не ожидал). Что я не так делаю?
  6. Keil asm

    Вот скачал, правда еще не вникал. Raspberry Pi Assembly Language Programming ARM Processor Coding Stephen Smith RASPBERRY PI ASSEMBLER Roger Ferrer Ibґan˜ez Cambridge, Cambridgeshire, U.K. William J. Pervin Dallas, Texas, U.S.A. F28HS Hardware-Software Interface: Systems Programming Hans-Wolfgang Loidl Не могу прикрепить файлы, хотя каждый из них < 5Mb
  7. Keil asm

    Я еще не дошел до этих тонкостей. На Малине CodeBlocks был установлен, я попробовал накропать - получилось. Теперь СВ на десктоп поставлю и попробую в нем ассемблер поковырять. Такие вот планы, только с текучкой разобраться надо.
  8. Keil asm

    Было дело, давали мне Raspberry Pi 3 пощупать. По цене - не для пенсионеров. Но понравилась. А тут неделю назад махнул свою Ардуину на Апельсин. Я ж даже не знал, что у нее нет HDMI, только видеовыход ужасного качества. TFT_v1.rar
  9. Keil asm

    А как тогда я к разъему GPIO подключил дисплей по 8-битной шине? Или мы говорим о разных вещах? Умельцы к DCMI внешний АЦП прикручивают и с помощью ассемблера 100MSPS от внешнего АЦП получают. Аудиопроцессор поди такое не потянет?
  10. Keil asm

    Ход моих мыслей: 1. STM32 - ARM 2. Orange Pi Zero - ARM 3. С ассемблером знаком only AVR. 4. Ну не на форуме же ARM задавать вопрос про ассемблерные вставки. 5. С Linux -ом пытаюсь подружиться уже год, есть положительные результаты.
  11. Keil asm

    Это мой первый опыт с ассемблером ARM. Задача состоит в том, чтобы прикрутить внешний АЦП к Orange Pi Zero.
  12. Keil asm

    Как-то так. /* USER CODE BEGIN 0 */ void myLED(void) { int R0,R1,R2,R3; __ASM ( "MOV R0, #1 \n" "MOV R1, #0x2000 \n" "MOV R2, #0x4001100C \n" "loop: \n" "STR R0, [R2] \n" "MOV R3, #0x00100000 \n" "delay_1: \n" "SUBS R3, R3, #1 \n" "BNE delay_1 \n" "STR R1, [R2] \n" "MOV R3, #0x00500000 \n" "delay_2: \n" "SUBS R3, R3, #1 \n" "BNE delay_2 \n" "B loop \n" ); } /* USER CODE END 0 */ Не получается задержку между переключением светодиода выделить в процедуру.
  13. Keil asm

    Может я вопрос задал неверно. __ASM("NOP"); Мне нужно вместо NOP вставить десяток ассемблерных инструкций. Как?
  14. Keil asm

    Спасибо. Сейчас приступлю к изучению. https://developer.arm.com/documentation/dui0473/j/preface/about-this-book Это mdk_arm_asm_ user_guide - вид сбоку
  15. Keil asm

    Пошлите куда надо начинающего. Нужно в программе на Си (Кейл) написАть ассемблерную функцию. mdk_armcc и armasm пытаюсь осилить. Может что нибудь попроще есть? Или это вопрос для подфорума Кейл?
×
×
  • Создать...