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

afad

Свой
  • Постов

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

  • Посещение

Весь контент afad


  1. Да, с внешним коммутатором должно получиться. Не хотелось ставить дополнительные элементы, но, придется. Будем пробовать. Если не дергать SHP и(или) SHD, то АЦП не работает, на выходе код не меняется.
  2. Кто-нибудь знает, возможно ли использовать ADC, предназначенный для оцифровки сигналов с CCD матрицы, использовать как "обычный" АЦП для оцифровки непрерывного сигнала? Проблема в том, что данный АЦП измеряет сигнал данных относительно некоторого референсного уровня, для чего в АЦП подаются 2 сдвинутых друг относительно друга тактовых сигнала. По фронту одного сигнала (CHP) фиксируется референсный уровень, а по фронту второго (CHD) фиксируется уровень сигнала данных относительно референсного уровня. Попытки как-то исключить фиксацию референсного уровня пока не дали результата. Кто-нибудь пытался использовать данный АЦП как "обычный"?
  3. WDT для LPC1313(или LPC1343)

    Проблема решена. WDT при инициализации находился в Power Down. Сбросил бит и все заработало.
  4. WDT для LPC1313(или LPC1343)

    LPC1313 не заводится противосбойный таймер. Вроде все правильно инициализирую. void WDTInit(void) //Инициализация WDT {LPC_WDT->TC = 500000; //Once WDEN is set, the WDT will start after feeding LPC_WDT->MOD = 0x03; //WDEN+WDRESET LPC_SYSCON->WDTCLKSEL = 0x00; //Источник - Int-RC // LPC_SYSCON->WDTCLKSEL = 0x01; //Источник - main-clk (и так не работает) // LPC_SYSCON->WDTCLKSEL = 0x02; //Источник - WDT-RC (и так тоже не работает) LPC_SYSCON->WDTCLKUEN = 0x0001; //Установить источник клока LPC_WDT->FEED = 0xAA; LPC_WDT->FEED = 0x55; } После этого читаю счетчик (L=LPC_WDT->TV;), показывает значение 0х000000FF (значение по умолчанию), значит счетчик не записывается и не тикает. То же самое делал для LPC1768 - все работало, в чем проблема - не понимаю. PS. И в LPC1343 тоже WDT не включается. Значит дело не в микросхеме, а в программе.
  5. Вопрос снят. В файле системной инициализации для частоты 100 MHz (был готовый файл) были выключены UART2 и UART3 (соответствующие биты в регистре PCONP были =0). Установил правильно PCONP и все заработало.
  6. Есть плата с LPC1769, максимальная частота ядра для этого микроконтроллера - 120 MHz. Работал при частоте 72 MHz, все работало отлично. Увеличил частоту ядра до 100 MHz и стал виснуть. Выяснено, что виснет при попытке работать с UART2 и UART3. Причем виснет на этапе инициализации регистров этих UART-ов. Т.е., например, записываем: UART3->IER = 0x00; и все повисло. При этом, если работаем с UART0 и UART1 - нет проблем. Понизить частоту клока указанных UART-ов (задается в регистре PCLKSEL1) не привело ни к чему, по прежнему виснет. Вот и непонятно, чем UART2 и UART3 отличаются от UART0 и UART1. И как работать с UART2 и UART3 при частоте ядра 100 MHz?
  7. Делал для LPC1768, работающего на частоте 100 МГц, без особых ухищрений на С получилось записывать 4 Мегаслова в сек (чтение элемента массива из памяти и запись его в gpio, формирование импульса WR, инкремент указателя массива, и так по циклу). Возможно можно как-то оптимизировать, или написать на асме, вероятно можно увеличить скорость в несколько раз, но мне не нужно было, поэтому не заморачивался.
  8. Да, идея интересная: http://www.microtransat.org И вот еще: http://www.popmech.ru/article/3632-ro-47-botiki/
  9. Собственно в этом и вопрос, на выходе Quartus получается .pof или .sof файл, для заливки программатором. А я хочу .hex формат, чтобы заливать в FPGA из микроконтроллера. Есть такие установки (Assembler setting): "Generate Hexadecimal (Intel-Format) Output File (.hexout) for Target Device - Off" А как включить "ON", непонятно, вроде все перерыл, нигде не включается. Или плохо искал??? MAX по умолчанию генерил .hex-файл вместе с .pof, а QUARTUS не хочет.
  10. EMC + LPC1788 + S29GL064N

    Попробуйте попробовать прочитать по адресу 0x00 число, должно быть 0x01, что означает, что микросхема фирмы Spansion. Не записываться может по причине того, что блоки памяти залочены, нужно сделать unlock. Я так думаю. Сейчас под рукой нет такой микросхемы, проверить не могу.
  11. Нужен программатор PIC18F14K50

    Нужен программатор PIC18F14K50, попроще, что-то типа ПониПрог. Нужно разово записать готовую программку. Поискал в интернете, вариантов много, есть простые, программируют через LPT, но именно эту микросхему не прошивают. Может кто видел?
  12. Время - да хоть из какого. Но в RMC еще есть дата и признак достоверности данных. Вот пример расшифровки пакета, правда для другого модуля: $GPRMC,133147.000,V,5647.7429,N,03416.6492,E,,,190908,,*14 $GPRMC – заголовок 133147.000 – 13:31:47 – время. V – данные не достоверны (A – данные достоверны). ... 190908 – 19.09.08 – дата. 14 – контрольная сумма. Или пример пакета, когда данные достоверны: $GPRMC,133910.000,A,5647.7429,N,03416.6492,E,000.0,212.7,190908,009.6,E*65 А разве поправку можно ввести? А я по незнанию на микроконтроллере пересчитывал :-(
  13. Докопался, можно указать 64-битный адрес 0х00000000, тогда передача будет по 16-битному адресу. Но вот что непонятно. Когда одно конечное устройство - все работает отлично (передача происходит раз в полминуты, остальное время конечное устройство спит). Включаю второе устройство, одно из устройств (может быть любое) работает нормально, от второго сообщение может приходить примерно 1 раз из 5-10. Вероятность одновременной передачи сообщений минимальна. Причем это происходит, если конечные устройства на некотором удалении от координатора, когда близко - такого нет. В чем может быть проблема???
  14. Аналогичная задача. Делал широковещательную передачу, когда одно конечное устройство - работает, при включении нескольких конечных устройств некоторые посылки теряются. Сделал передачу конкретному координатору (с указанием 64-битного адреса), с подтверждением ACK - вроде заработало. Использовал пакет API 0x10, но там задается 64-битный адрес координатора (я так понял - это серийный номер, который нельзя изменить) и 16-битный адрес. Но допустим координатор сломался, его заменили (вместе с модулем), соответственно 64-битный номер сменился, и что, перешивать все конечные точки? Или как-то можно сделать НЕ широковещательную передачу (с подтверждением ACK) используя только 16-битный адрес??? В команде API 0x10 нужно указывать и 64-битный адрес и 16-битный, вот в чем проблема. В продолжение темы. Хм... Указываю 64-битный адрес 0x00000000 - сообщение приходит к координатору. Указываю 16-битный адрес не 0х0000 (у координатора всегда 0x0000, я так понял) - сообщение тоже приходит к координатору. Не понятно - это широковещательная передача или нет?
  15. Прерывания в С++

    Шайтан, заработало! Спасибо AHTOXA!
  16. Прерывания в С++

    Необходимо вставить в свой проект программу, написанную на C++. Раньше никогда не сталкивался с С++, всегда писал на С. Пытаюсь запустить простейшую программу - виснет в прерываниях. Вот текст: #include "lpc17xx.h" int main(void) {SystemInit(); GPIO0 -> FIODIR = 1<<24 | 1<<25; //P0.24, P0.25 - выходы TIM1 -> MR0 = 18000000/100 - 1; //Period = 10 ms TIM1 -> MCR = 3; //Interrupt and Reset on MR1 NVIC_EnableIRQ(TIMER1_IRQn); TIM1 -> TCR = 1; //Timer 1 enable while(1) { if((GPIO0->FIOPIN)&(1<<24)){GPIO0->FIOCLR=1<<24;} //Инвертируем P0.24 else{GPIO0->FIOSET=1<<24;} } } void TIMER1_IRQHandler(void) {TIM1 -> IR = 1; //Clear interrupt flag if((GPIO0->FIOPIN)&(1<<25)){GPIO0->FIOCLR=1<<25;} //Инвертируем Р0.25 else{GPIO0->FIOSET=1<<25;} } В программе на выводе P0.24 - меандр в основном цикле, на выводе P0.25 - меандр из программы прерываний - период 20 мс. Если файл называется main.c (значит проект на C), все работает :rolleyes: Если этот же файл переименовать в main.cpp (проект на С++), работает до первого прерывания (10 мс), потом виснет :crying: Т.е. на выводе P0.24 импульсы в течении 10 мс, потом видимо наступает прерывание и импульсы пропадают. Может как-то нужно изменить синтаксис, все же в С++ есть отличия от С? Среда программирования - Keil, микроконтроллер LPC1768.
  17. Ногодергание в LPC1768

    Да, действительно, чтобы P0.29 работал на выход, нужно оба P0.29 и P0.30 запрограммировать как выходы. Спасибо, sonycman.
  18. Ногодергание в LPC1768

    В контроллере LPC1768 нога 29 (P0.29) может использоваться как PIO и как USB. Никак не могу заставить ее работать в режиме PIO. Конфигурирую так: GPIO0 -> FIODIR |= 1<<29; //Выход PINCON -> PINSEL1 &= ~((1<<26) | (1<<27)); //PIO (not USB) В программе пытаюсь дергать ножкой: GPIO0 -> FIOCLR = 1<<29; и GPIO0 -> FIOSET = 1<<29; на выходе ничего (похоже притянуто внутренним резистором к 0). Другие ножки нормально управляются. Это тоже не помогает: PINCON -> PINMODE_OD0 &= ~(1<<29); //Not OD PINMODE для P0.29 не устанавливается. Где-то я затупил...
  19. Анонсировано 4 камня: http://www.nxp.com/documents/data_sheet/LPC4350_30_20_10.pdf
  20. Двухядерные Cortex от NXP

    Информация с сайта NXP, читаем и обсуждаем...
  21. Зайди на сайт ucrouter.ru > Загрузить > для платы EVM9200 есть файлы FLASH Write Utility. Это bin файлы, грузятся по X-модему во внутреннюю RAM и автоматически запускаются, в том же гипертерминале появится меню. Ничего страшного, если у тебя другая FLASH, главное можно проверить процесс загрузки. Исхордники там тоже есть.
  22. Вы это патентуете? http://www.rtcs.ru/popup_product.asp?id=6342
  23. Спасибо, заработало. Только добавил разрешение прерывания от компаратора T2.
  24. С целью минимизации потребления нужно усыплять на некоторое время прибор на ATMEGA164p. В активном режиме контроллер работает от внешнего кварца 3,6864 МHz. В неактивном режиме нужно минимизировать потребление. Просто включить делитель - неэффективно, все равно генератор кушает 250 мкА. Думаю правильно будет отключить генератор, и включить таймер Т2 на работу в асинхронном режиме от кварца 32 кГц и по прерыванию просыпаться. Проблема в том, что не включается генератор на 32 kHz. Может есть у кого пример включения асинхронного генератора 32 кГц и таймера Т2 от него. Для других ATMEG пример тоже подойдет, думаю отличия незначительные.
×
×
  • Создать...