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

SGP

Свой
  • Постов

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

  • Посещение

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


  1. DMAC + SSP на STR912

    У меня микроконтроллер работал с датчиком, в силу особенностей которого чип-селект формировался программно. По поводу TLV320AIC ничего не могу сказать.
  2. DMAC + SSP на STR912

    У меня DMA и SSP удалось подружить всё работает, единственно что третий канал DMA с прерыванием не удалось подружить. привожу фрагменты кода "как есть". ============================================== последовательность програмироания при инициализации Init_SSP0_fast_DMA() --------------------------------------- SSP0->CR0 = 0xxxxx; // параметры ssp по месту SSP0->CR1 = 0xxx; SSP0->PR = 0xxx; SSP0->IMSCR = 0x04; /* SSP0 Inerrupt enable: RXIM - receive */ SSP0->ICR = 0x00; /* SSP0 Inerrupt clear */ SSP0->DMACR = 0x03; /* SSP0 DMA control - Transmit */ ---------------------------------------------------- SSP0_enable(); ---------------------------------------------------- k = SSP0->DR; /* byte 1 load 8 byte only Read */ k = SSP0->DR; /* byte 2 load 8 byte only Read */ k = SSP0->DR; /* byte 3 load 8 byte only Read */ k = SSP0->DR; /* byte 4 load 8 byte only Read */ k = SSP0->DR; /* byte 5 load 8 byte only Read */ k = SSP0->DR; /* byte 6 load 8 byte only Read */ k = SSP0->DR; /* byte 7 load 8 byte only Read */ k = SSP0->DR; /* byte 8 load 8 byte only Read */ SSP0->ICR = 0x03; // clear IRQ SSP0->CR1 |= 0x02; ---------------------------------------------------- Init_DMA_IRQ (); ---------------------------------------------------- VIC0->VAiR[12] = (unsigned int)DMA_IRQ_Handler; /* Setup DMA IRQ Hndl addr */ VIC0->VCiR[12] |= 12; /* Specify the interrupt number */ VIC0->VCiR[12] |= 0x20; /* Enable the vector interrupt */ VIC0->INTER |= (1<<12); /* Enable SSP0 interrupt */ ---------------------------------------------------- Init_DMA_5_6_7 (); ---------------------------------------------------- DMA->SYNR = 0x00; /* SYNC = 0 enable */ DMA->CNFR = 0x01; /* EN = 1 enable DMA */ /* ------------ INIT DMA CHANEL 5 SPI_0 Resiver ------------------------------------------*/ DMA_Channel5->SRC = 0x4C007008; /* DMA-5 Source Address SSP0_DR */ DMA_Channel5->DES = (u32)(&bufer[3]); /* DMA-5 Destination Address + 4; 4000000 - RAM */ DMA_Channel5->LLI = 0; /* DMA-5 LLI => 0 */ DMA_Channel5->CC = 0xE80003A1; /* interrupt enable, cacheable, bufferable, */ /* INC dst, DWIDTH = 8 bit, SWIDTH = 8 bit, */ /* DBsize = 1 byte, SBsize = 1 byte, N -= 4 ... */ DMA_Channel5->CCNF = 0x00009358; /* interrupt enable, periph-mem DMA, ok */ /* SrcPeriph = SSP_0 RX */ /* ------------ INIT DMA CHANEL 6 SPI_0 Transmit -----------------------------------------*/ DMA_Channel6->SRC = (u32)(&bufer[3]); /* DMA-6 Source Address + 4; 4000000 - RAM */ DMA_Channel6->DES = 0x4C007008; /* DMA-6 Destination Address SSP0_DR */ DMA_Channel6->LLI = 0; /* DMA-6 LLI => Link[0] */ DMA_Channel6->CC = 0xE40003A1; /* interrupt enable, cacheable, bufferable, ok */ /* INC src, DWIDTH = 8 bit, SWIDTH = 8 bit, */ /* DBsize = 1 byte, SBsize = 1 byte, N -= 4 ... */ DMA_Channel6->CCNF = 0x00000B58; /* interrupt disable, mem-periph DMA, not IRQ */ /* DstPeriph = SSP_0 TX N = BAH = 186 - max */ /* ------------ INIT DMA CHANEL 7 Memory to Memory ---------------------------------------*/ DMA_Channel7->SRC = (u32)(&bufer[0]); /* DMA-7 Source Address kadr_bufer - RAM */ DMA_Channel7->DES = (u32)(&e_bufer[0]); /* DMA-7 Destination Address picture_bufer */ DMA_Channel7->LLI = 0; /* DMA-7 LLI => Link[0] */ DMA_Channel7->CC = 0xCC4800E9; /* interrupt enable, INC dst, INC src, */ /* DWIDTH = 32 bit, SWIDTH = 32 bit, */ /* DBsize = 0, SBsize = 0, N = E9 = 233 (*4) */ DMA_Channel7->CCNF = 0x00000084; /* interrupt disable, mem-mem DMA, */ ---------------------------------------------------- Init_DMA_4 (); ---------------------------------------------------- /* ------------ RE_INIT DMA CHANEL 7 Mem to Mem copy -----------------------------------*/ DMA_Channel4->SRC = (u32)(&bufer[0]); /* DMA-7 Source Address bufer - RAM */ DMA_Channel4->DES = (u32)(&e_bufer[0]); /* DMA-7 Destination Address e_bufer */ DMA_Channel4->LLI = 0; /* DMA-7 LLI => Link[0] */ DMA_Channel4->CC = 0xCC4800E9; /* interrupt enable, INC dst, INC src, */ DMA_Channel4->CCNF = 0x00000084; /* interrupt disable, mem-mem DMA, */ ---------------------------------------------------- Enable_DMA (); ---------------------------------------------------- DMA_Channel7->CCNF |= 0x01; /* DMA enable */ ---------------------------------------------------- Chip_SPI_Reset(); и далее по тексту.... ========================================== В самой программе необходимо обеспечить старт а затем всё будет обеспечиваться самим DMA DMA_Channel5->CCNF |= 0x00000001; /* DMA-5 SPI_0 reseive START */ DMA_Channel6->CCNF |= 0x00000001; // ============================================================================ ============================================================================ DMA_IRQ_Handler PUSH {R0-R3,LR} ;-------- control chanel 5 & 6 --------------------- LDR R0,=DMA_BASE ; =DMA_BASE ; MOV R1,#0x00000060 ;-------- Chanel 5 & 6 ----------------------------- STR R1,[R0,#0x08] ; clear Terminal Count Interrupt 5 & 6 ;-------- DMA -------------------------------------- LDR R2,=DMA_CC5_init ; STR R2,[R0,#DMA_CC5] ; DMA_CC5 LDR R2,=DMA_CC6_init ; STR R2,[R0,#DMA_CC6] ; DMA_CC6 MOV R2,#0 ; LLI = 0 STR R2,[R0,#DMA_LLI5] ; LLI5 = 0 STR R2,[R0,#DMA_LLI6] ; LLI6 = 0 ;-------- update kad ------------------------- LDR R2,=kadr_kadr ; Load adres LDRB R3,[R2,#0] ; Load = kad ADD R3,R3,#1 ; AND R3,R3,#mask_DMA_number_kadr ; STRB R3,[R2,#0] ; save new kad ;-------- new adres bufera ------------------------- LDR R1,=kadr_bufer ; Load adres MOV R2,#size_kadr ; size_kad (offset) MLA R2,R2,R3,R1 ; new adres bufera DST ;-------- program DMA_5_6 ------------------------- STR R2,[R0,#DMA_DEST5] ; DMA_DEST5 STR R2,[R0,#DMA_SRC6] ; DMA_SRC6 ;-------- Ready_Date ------------------------------- LDR R1,=Ready_Date ; Load adres LDRB R2,[R1,#0] ; Load = Ready_Date ADD R2,R2,#1 ; STRB R2,[R1,#0] ; Save = Ready_Date CMP R2,#15 ; BHS Konec_DMA ; if BUSY go to ;-------- start DMA_5_6 ---------------------------- LDR R3,[R0,#DMA_CCNF5] ; chanel 5 RX SSP_0 ORR R3,R3,#0x00000001 ; STR R3,[R0,#DMA_CCNF5] ; LDR R3,[R0,#DMA_CCNF6] ; chanel 6 TX SSP_0 ORR R3,R3,#0x00000001 ; STR R3,[R0,#DMA_CCNF6] ; Konec_DMA ;-------- END ------------------------------------ MOV R1,#0 ; STR R1,[R1,#-0xfd0] ; MOV R1,#0 ; MOV R2,#0xfc000000 ; STR R1,[R2,#0x30] ; POP {R0-R3,LR} ; SUBS PC,LR,#4 ;
  3. Проблема с прерываниями Имеется контроллер STR912FW44X6 ревизия D код 610. Одновременно работают таймер TIM3, АЦП и UART1. Таймер и ацп заведены на VIC0, UART1 подключён к VIC1.Обработчики прерываний написаны на С Кеil_3.02. При интенсивном обмене по UART1, на скорости 115200 выкачивается содержимое ОЗУ, происходит вылет программы на нулевой адрес в режиме IRQ. По отдельности всё работает. Перенос UART1 на FIQ нечего не дал. Иследования показали что дело скорее всего в арбитраже между VIC0 и VIC1. Чтото похожее описывается в ерате: "2.1 VIC interrupt controller wrong vector fetch."Хотелось бы услышать мнение общества: кто нибудь сталкивался с подобной проблемой или первопричина в кривизне моей программы.
  4. Проблемка с STR911FM44

    В ревизии D поменяли ID кристалла, проблема описана в ерате. Вам нужно скачать кеил_3.02 или вручную заменить ID в свойствах ULINK.
  5. Ulink нормально работает на 96MHz, единствунный ньюанс, при первом включении компютера не находит его и приходится каждый раз передёргивать USB разьём. Тайминги все стоят по умолчанию я их не трогал. KEIL версии 3.02, с 3.00 будет виснуть.
  6. Я работаю с STR912 но думаю что впечатления будут справедливы и для вашего случая. Общее впечатление об контроллере: периферию делали програмисты, уж очень непривычно (мягко сказано) она выглядит. Кофигурирование портов разбросано по разным местам, но всё вроде работает. UART - FIFO прерывания сделаны криво -послав один байт вы никогда не дождётессь прерывания по передаче, один вектор прерывания на передачу и приём что не совсем удобно. В результате работаю без FIFO это оказалось проще чем дополнительно контролировать длину пакета. PLL работает, нареканий не вызвал. Таймер убогий нет даже автоперезагрузки, что существенно ограничивает его возможности. SPI -вроде бы работает, протестировал не доконца. Общее впечатление - работать можно несмотря на некоторую кособокость. Впечатления о средствах разработки: Кеил не показывает периферию, такое впечатление что лекарство помогает не до конца. Сижу на кейле из за ULINK. Виглер подключить не удалось.
  7. Как прикрутить ULINK от KEIL к IAR

    Купили в конторе старткит для STR912 АРМа от ST. По ряду причин был выбран старткит от Кейла. Начал я его осваивать и столкнулся с таким печальным фактом, что из всей периферии доступна только кнопка "Reset CPU", а значение регистров периферии можно посмотреть только в окошке "Memory", то есть посмотреть можно только работу самого ядра без периферии :-((( Одним словом получается не отладка, а кошмар на улице вязов. Скачал среду от IAR там все эти окошки и менюшки вроде бы есть. Сейчас сижу и думаю как ULINK от KEILL (USB JTAG) прикрутить к среде от IAR. Может кто нибудь сталкивался с такой проблемой, буду очень благодарен если поделитесь опытом. Заранее спасибо всем ответившим.
  8. Спасибо всем ответившим. Мысль про SPI FRAM мне как то в голову не пришла, нужно будет внимательно просмотреть возможность её реализации. Вопрос до кучи, ктонибудь её ещё делает или всего один производитель? "рамтрон" (название пишу по памяти прошу не пинать если ошибся). В сторону DSP от TI я поглядывал, но не хотелось бы из пушки по воробям те более что задача не до конца разложена по полочкам, много еще неясного. По этой причине хочется начать с железа попроще и подоступнее во всех смыслах чтобы обкатать алгоритм на нём ну, а если не хватит производительности тогда придётся браться за тяжёлую артилерию.
  9. Выбор ARM микроконтроллера

    Предвидится новая разработка в которой понадобится мощный микроконтроллер c большой вычислительной мощностью. Сейчас нахожусь в поиске, что выбрать? По многим показателям подходит ARM но в задаче которую необходимо будет решать потребуется ОЗУ около 128к, ПЗУ в районе 64-128к, из внешней периферии нужен будет SPI, UART и желательно DMA. Просмотрел дэйташиты от филипс, TI, Atmel, ST у них максимум ОЗУ 64к, а вешать внешнее ОЗУ не хочется по ряду причин. Может кто нибуть знает что нибудь подходящее, а если имеется старткит или какая нибудь распаяная плата, которую можно купить то будет вообще прекрасно. Всем ответившим большое спасибо.
  10. Хотелось бы узнать поподробнее о работе данного пакета под linux-ом. Под какими версиями будет работать? и какие конкретно программы из пакета? что изменилось по сравнению с предыдущими версиями?
  11. Представим ситуацию когда нужно, по ряду причин оттрасировать по новому печатную плату, скажем для улучшения помехоустойчивости, охлаждения итд. серийного изделия, подвинув некоторые элементы. В этом случае мы встаем перед проблемой: или по новому выпускать схему и сопутствующие ей бумаги (СП, ПЭ3, ...) или иметь анархию при нумерации на печатной плате (как в случае с нумерацией по Э3). IMHO первичной всётаки должна быть нумерация по электрической схеме.
  12. Обычно достаточно иметь 12 вольтовый паяльник и перед тем как брать "камень" в руки "разрядиться" коснувшись рукой чегонибудь заземленного, а также постараться не одевать одежду из синтетики которая сильно электризуется. Из своей практики могу вспомнить случай когда запаяный на плату 430 микроконтроллер был убит упавшим на него сверху ещё теплым листом бумаги с лазерного принтера, перестал генерировать кварцевый генератор, хотя всё остальное было живо :-( имею вот такой печальный опыт.
  13. Попробуйте поставить на свежую винду. У меня было чтото похожее, только программа перестала работать после того как я чтото установил и снёс, установить какая программа повлияла на работоспособность по прошествии времени не удалось . Переустановка программы ни чего не дала. Операционка W2000SP3. Из положения вышел установив программу соседу :-)
  14. Народ !!! подскажите кто знает, как обратиться к битовой структуре из другого файла, а то волшебное слово EXTERN чтото не помогает, а скидывать всё в один файл как то коробит. Пользую IАR 3.21А. Заранее спасибо за ответы.
  15. По поводу ПИКАДА и интерактивной разодки: В самом пикаде 200x разводить - извращение, я пользовался спектрой, благо конвертер у него нормальный. В пикаде раставляете компоненты, а дальше запускаете спектру и вперёд с песнями. Выбираете нужные цепи или одну цепь (подсвечиваются) и запускаете автотрасировку, не понравилось - можно отменить, изменить алгоритм трасировки, подкорректировать или вручную развести, при необходимости можно цепь зафиксировать. Придётся какоето время потратить на изучение всего этого хозяйства и создание библиотек. С другой стороны почему именно Пикад? тем более что в последнее время он фактически не развивается, а все усилия разработчиков направлены в основном на смену форматов файлов которые меняются с каждой новой версией :( - c моей точки зрения пакет неперпективен, а жаль. По моему следует выбирать из трёх нижеприведённых пакетов Wg2004, PADS, cadence(ORCAD). У каждого из этих пакетов есть свои достоинства и недостатки, что выбрать вам решать исходя из ваших условий. Я выбрал ВГ200х и весьма этим доволен. Плюсы: есть руская документация и деморолики почти на все случаи жизни, есть отдельный форум по этому пакету где подскажут; самый лучший трасировщик для ручной и авторазводки. Минусы: не очень удобный рисовальщик (к которому нужно привыкнуть), несколько сложнее в освоении по сравнении с другими пакетами.
  16. Отправил сообщение в пятницу - по видимому прокси сожрал :( повторюсь сегодня. У меня создалось впечатление что это глюк железа: Посмотрел silicon errata на сайте у TI там последнее обновление от 2004.07 и моей ревизии нет. Скачал файл с примерами slac019e.zip, откомпилировал файл fet440_fll_02.c - не работает!!! На всякий случай приведу сведения о своём кристалле MSP430F449IPZ 42DFROT revG. В присоединённом файле приведено как я это всё делаю, покритикуйте :) primer.txt
  17. Источники тактирования я не инициализирую, они остаются по умолчанию после сброса, тоесть MCLK=DCO. Единственное что я сделал я разрешил генерацию ХТ2 и ХТ1 и попытался вывести наружу MCLK, ACLK, SMCLK. И смог увидеть лишь ACLK. Полная процедура инициализации насколько я понял нужна когда переходиш на тактирование от кварца (нужно его включить, дождаться стабилизации генерации и лишь после этого переключаться на него). У меня всё пока работает от DCO и MCLK тактируется от DCO, но вывести этот сигнал на вывод Р1.1/MCLK-(86) не получилось.
  18. Большое спасибо за ссылки и примеры, для меня это не только первый проект на MSP430, но и первый проект на Си. Всё что там описано мне ещё предстоит сделать, так что помощь очень кстати. У меня проблема в другом: кристал стартует и работает по умолчанию на DCO, меня это в данный момент пока устраивает, но вывести этот сигнал наружу (на порт Р1.1/MCLK-(86)) и посмотреть я не могу. То же самое с сигналом Р1.4/SMCLK-(83)) :(
  19. Как посмотреть MCLK у MSP430F449

    Народ помогите советом. Мучаю "MSP430F449IPZ rev G" под IAR321 c помощью MSP-FETP430IF v1.4. стоит 2 кварца: 32768 и 4 MHz, процессор работает от DCO. Включаю второй кварц на 4 MHz, видно как он начинает генерить. програмирую Р1.1_DIR Р1.4_DIR Р1.5_DIR на вывод и переключаю на алтернативную функцию Р1.1_SEL Р1.4_SEL Р1.5_SEL. Смотрю осцилографом и вижу тоько ACLK на 82 выводе(Р1.5). На ножках Р1.4-83(SMCLK) Р1.1-86(MCLK) висят 1. Порты исправны в режиме вывода всё выводится нормально. Для меня это первый проект на 430 серии поэтому просьба сильно не пинать и по возможности ткнуть носом где чего я не дочитал. привожу пример кода void init_per(void) { asm ("BIC.B #0x20, 0x0054 "); // XT2OFF=0 // init_P1 asm ("BIS.B #0x02, 0x0022"); // P1.1_DIR asm ("BIS.B #0x10, 0x0022"); // P1.4 asm ("BIS.B #0x20, 0x0022"); // P1.5 asm ("BIS.B #0x02, 0x0026"); // P1.1_SEL asm ("BIS.B #0x10, 0x0026"); // P1.4 asm ("BIS.B #0x20, 0x0026"); // P1.5 } "Заранее спасибо за ответы.
  20. Хотелось бы услышать как у таких пакетов как PA*DS и CA*DS*TAR с поддежкой ЕСКД и руским языком. Насколько я знаю хуже всего с ЕСКД у ORC*AD, почти нет проблем с ЕСКД у PC*ADа но зато есть некоторые проблемы с руским языком, WG по моему единственный пакет не имеющий таких проблем, по крайней мере я ещё не сталкивался. С моей точки зрения пакет который не отвечает ЕСКД не может расчитывать на популярность и его удел маленькие конторки не обременённые связями с производством и соблюдением гостов.
  21. Уважаемые All обращаюсь к вам с просьбой. Начал новый проект на новом для меня процессоре msp430f449. И есть сильное желание сделать его на Си, так как ресурсов по производительности и памяти предостаточно. У меня есть некоторый опыт написания програм на ассемблере в основном под 8051, но на си досих пор я не писал. Поделитесь каким нибудь рабочим проектом под IAR430 или дайте ссылку. Хотелось бы чтобы он был из нескольких файлов, чтобы была работа с портами и отдельными битами, чтобы было показана работа с периферией и самое главное побольше коментариев. На сайте TI те примеры которые я нашел на ассемблере, а примеры IAR уж очень простенькие. Те примеры которые удолось найти в интернете некомпилируются, не хватает знаний чтобы их портировать под msp430. Заранее всем спасибо зо ответы.
  22. По поводу протела, сам я с ним не работаю но в своё время устанавливал на пробу так как вопрос на что пересесть возникает периодически. Насколько я помню это была 99 версия. Что не понравилось так это требовательность к производительности, при сопоставимых размерах проектов проект в протеле загружался в несколько раз дольше по сравнению с пикадом. Причём практически любой проект в пикаде легко может уместиться на дискетку, в протеле обьём получается намного больше. На тот момент машины были послабее и пересаживаться на пакет который перегружает машину не было желания. Но последней каплей была новость, что у одного моего колеги протел потерял и сооттветственно не развел одну электрическую цепь !!! и выяснилось это на этапе наладки. Насчёт пикада - пикадом я пользовался исключительно для рисования схем как наиболее приближённым к ЕСКД САПРом. Для разводки печатных плат использовал спектру.
  23. С каких это пор Protel (довольно посредственная и глючная поделка) стал относиться к тяжелым САПР? А насчёт того чем пользуюсь. Сам до недавнего времени пользовал ПИКАД 200Х в связке со спектрой и был весьма доволен. Сеёчас пересел на WG и нехватает многого из того что было в пикаде.
  24. Хочу поделиться собственным опытом. Заказавалась на одном из отечественных заводов 4-х слойка примерно 180х120мм под макет. В документации была указана последовательность слоёв, а на самих слоях в нижнем правом углу была нанесена маркировка медью с указанием слоя. Внутренние слои были в виде полигонов. Наружные слои имели асиметрию по площади меди так как SMD монтаж был односторонний.Когда получили платы то увидели что коробление было около 5мм. Так как сроки поджимали то после переругивания с проииводителем решили не переделывать, а для макета оставить как есть. Самое интересное выяснилось когда одну плату разрезали на две половинки, чтобы разным людям было проще отлаживать свою часть. Многослойные печатные платы состоят из относительно толстой и жесткой основы (двухсторонний стеклотекстолит) и наклеиваемых на него относительно тонких и гибких дополнительных слоёв одностороннего стеклотекстолита. Эти слои должны наклеиваться симетрично на основу чтобы не было коробления, чемто это напоминает бутерброд намазаный маслом с двух сторон. В моём случае всё было наклеено с одной стороны и видно это стало только на разрезе !!!
  25. Хотелось бы высказать своё мнение по поводу интерфейса с внешним миром. На сегодняшний день есть только интерфейс к PCADу, это конечно хорошо так как это самый распространённый пакет на просторах СНД, но время идёт и всё потихоньку меняется. Наличие только одного интерфеса, пусть и к самому популярному когдато пакету PCAD, превращает программу в эдакий необязательный довесок. Для того чтобы занять достойное место на рынке необходимо иметь интерфейс к наиболее распространённым пакетам. -- По всей видимости на первом месте по популярности после PCADа будет ORCAD опять же в силу исторических традиций. -- Возможно что на второе место можно поставить PADS в последнее время получающий всё большую популярность. -- EDIF как стандарт. -- фoрмат ODB++ вроде бы. P.S. по поводу спектровского интерфейса: когдато делал проект в PCAD200x в метрике, так вот при передаче в Specctr-у и обратно терялась точность. Результат приходилось подправлять руками чтобы не ругался DRC. В дюймах такого не наблюдалось. Насколько я помню проблема была в формате данных который у спектры уже и при передаче из пикада данные обрезались, а так как метрика имеет в дюймах длинный дробный хвост то он обрезался, что приводило к потере точности.
×
×
  • Создать...