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

    

kd522

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный
  1. MSP430F5438A: АЦП12+ПДП

    Вот тут описывается данная тема https://e2e.ti.com/support/microcontrollers...1429066#1429066 Кое-как предложенным способом получается работать. Пока разбираюсь с синхронной работой ADC+TB0.
  2. MSP430F5438A: АЦП12+ПДП

    Сравнивалось. Все одинаково. LPM не использую. MCLK - 25 МГц от FLL, FLL работает от кварца XT2 на 20 МГц. На e2e нашел мутное описание, что это недокументированный аппаратный косяк. И всплыл еще вопрос: TB0 работает в режиме вверх-вниз до TB0CCR0. От выхода TB0.0 срабатывает DMA1 для загрузки в TB0CCR6 очередного значения из таблицы (TB0.6 формирует ШИМ-синус). От этого же выхода TB0.0 включен запуск измерения АЦП. И DMA2 работает от ADC12IFG, заполняет буфер считанными с него значениями. Разрешение работы DMA1 и включение АЦП битом ENC происходит соседними командами при запрещенных прерываниях и сразу после обнуления TB0R. Почему АЦП иногда(!) пропускает первое значение? Как можно добиться полной синхронности (или с фиксированным сдвигом фаз) работы TB0 и АЦП?
  3. MSP430F5438A: АЦП12+ПДП

    Привет всем. Вопрос такой: после работы с АЦП без ПДП не получается работать с АЦП по ПДП. АЦП работает (данные идут в ADC12MEM0 и взводится флаг ADC12IFG0), но данные в буфер не копируются. Если после запуска МК сразу начать работать с АЦП по ПДП, то буфер заполняется. Как заставить работать АЦП по ПДП после использования АЦП без ПДП? Инициализация АЦП, частота TB0.0 400 кГц:</p><p> Код    mov    #ADC12SHT1_15|ADC12SHT0_1|ADC12ON|ADC12REFON|ADC12REF2_5V,&adc12ctl0;выборка 1024 и 8 тактов     mov    #ADC12CSTARTADD_0|ADC12SHS_2|ADC12SHP|ADC12DIV_3|ADC12SSEL_3|ADC12CONSEQ_2,&adc12ctl1;ADCClk=5 МГц (от SMClk), повтор с одного канала, запрос от TB0.0     mov    #ADC12RES_3,&adc12ctl2                        ;12 разрядов     mov.b    #ADC12SREF_7|ADC12INCH_0 |ADC12EOS,&adc12mctl0     mov.b    #ADC12SREF_2|ADC12INCH_8 |ADC12EOS,&adc12mctl8     mov.b    #ADC12SREF_2|ADC12INCH_9, &adc12mctl9     mov.b    #ADC12SREF_1|ADC12INCH_10,&adc12mctl10     mov.b    #ADC12SREF_1|ADC12INCH_11|ADC12EOS,&adc12mctl11 Инициализация ПДП: Код    clr    &DMACTL4                ;ПДП     bic    #DMAEN,&dma0ctl         bic    #DMAEN,&dma1ctl         mov    #DMA0TSEL_19|DMA1TSEL_5,&DMACTL0        ;DMA0 - UCB0TX (vs1011), DMA1 - TB0.0 (формирование синуса)     mov    #DMA2TSEL_24,&DMACTL1                ;DMA2 - ADC12IFG     movx.a    #adc12mem0,&dma2sa     movx.a    #lcz_buffer,&dma2da     mov    #lcz_buffer_len/2,&dma2sz     movx.a    #sin_20k_pwm,&dma1sa     movx.a    #tb0ccr0+2*lcz_20khz_bit,&dma1da     mov    #sin_20k_pwm_len,&dma1sz</p><p> sin_20k_pwm - таблица шим-значений для генерации синуса 20 кГц sin_20k_pwm_len - ее длина (=20) lcz_buffer - буфер, куда надо складывать значения с АЦП lcz_buffer_len - его длина (= 5120) lcz_20khz_bit - номер канала таймера для генерации синуса (=6) Работа с АЦП без ПДП: Включить ADC12ENC, дождаться установки ADC12IFG, выключить ENC, считать ADC12MEM0 в регистр, считать ADC12IV в регистр, сбросить ADC12IFG (уже танцы с бубном) Запуск с АЦП по ПДП (режим DMADT_4) Код    dint                            ;синхронный запуск АЦП и ШИМ-синуса     xor    r4,r4     mov    #DMADT_4|DMADSTINCR_3|DMASWDW|DMAEN|DMAIE,&dma2ctl     bic    #TBIFG,&tb0ctl lm_sync_wait:     bit    #TBIFG,&tb0ctl     jz    lm_sync_wait     bis    #ADC12ENC,&adc12ctl0                ;запускаем АЦП     mov    #DMADT_4|DMASRCINCR_3|DMASBDW|DMAEN,&dma1ctl    ;включаем синус 20 кГц     bic    #CCIFG,&tb0cctl0+2*lcz_adctimer_channel     eint
  4. MSP430F5529 програмирование

    вопрос по процедуре поднятия напряжения питания ядра МК msp430f5438a: Кто-нибудь разбирался с заданием порогов сработки svs/svm для напряжения ядра (low-side)? откуда взялась там та формула? Ведь там 3 бита на svsmlrrl и 2 бита на svslrvl. А умножать предлагается на младшие биты соответственно для каждого значения. Где взять реальные значения порогов сработки в Вольтах? Действительно ли для каждого напряжения питания ядра допустимы только определенные пороги (так в документации по МК msp430f5438a)?
  5. msp430f5438a: PMM/PMMHPMRE

    SLAU208D.pdf ЦитатаPower Management Module Control Register 0 (PMMCTL0): PMMHPMRE Bit 7: Global high power module request enable. If the PMMHPMRE bit is set, any module is able to request the PMM high-power mode. Т.е. для нормальной работы МК необходимо установить этот бит? В каких случаях сброшенное состояние этого бита может помешать нормальной работе? не нашел в этом описалове ресурсов ничего конкретного. Кто-нибудь изучал этот вопрос?
  6. msp430f5438a не определяется по jtag

    Затем, что раньше не было нужды выдавать импульсы на TEST (в 149-м проце вообще нет TEST), поэтому в том самодельном эмуляторе было лень припаять еще одну ногу. Эмулятор делался лет 10 назад.
  7. msp430f5438a не определяется по jtag

    Для SBW пишут, что параллельный порт не подходит. У меня самого самодельный PIF В общем, завелось )))))))) дело было в том, что сигнал TEST нужно было с компа гнать из-за наличия режима SBW, а не напрямую в 3,3В устанавливать, как на ранник процах, там хитрая последовательность ("MSP430T Programming Via the JTAG Interface (slau320d).pdf")
  8. msp430f5438a не определяется по jtag

    каким-то чудом на TDO появились импульсы, однако софт МК не видит
  9. msp430f5438a не определяется по jtag

    А через 4-х проводной jtag (не SBW) не пробывал работать с ним?
  10. msp430f5438a не определяется по jtag

    Здравствуйте. Не могу прошить/считать через 4-х проводной jtag МК msp430f5438a. Использую программы olimex msp430 programmer (этой прогой пытался считать флеш, не может определить МК) и iar 4.20 (пытался залить стандартный пример с мигающим светодиодом, тоже не может определить МК). Преобразователь интерфейса - стандартный msp-fetp430if, два других МК (msp430f149 и msp430f1222,1232) заливаются и читаются совершенно нормально. МК включен по стандартной схеме: 5 пар питание 3,3В, RC-цепь на сброс (47к и 2,2н), 0,47мк на Vcore. JTAG подключен напрямую к МК. При включении на Vcore напряжение 1,44В. Пробывал менять МК на такой же - результат тот же. Сигналы JTAG ОТ компа проходят на МК, от МК не выходит ничего (TDO). Как начать работать с этим МК, какой софт использовать?