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

Busel Roman

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

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

  • Посещение

Репутация

0 Обычный

Информация о Busel Roman

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

Информация

  • Город
    Array
  1. Я пытался тактировать ATMega48-20AI тактами с частотой 25 MHz после деления Т-триггером на 2 (то есть, получалась частота 12.5 MHz). При питании 5 V - работало без проблем. При 3.3 V - подвисало. Если не хочешь иметь необъяснимых проблем с устройством на МК, используй только документированные возможности, IMHO.
  2. Нету таких. Самому нужно было 15 МHz при 3.3 V - не нашел у Atmel.
  3. ATmega8. TWI + ADC.

    Руководствовался разделом "Alternate Functions of Port C": • SCL/ADC5 – Port C, Bit 5 SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC5 is disconnected from the port and becomes the Serial Clock I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver with slew-rate limitation. PC5 can also be used as ADC input Channel 5. Note that ADC input channel 5 uses digital power. • SDA/ADC4 – Port C, Bit 4 SDA, Two-wire Serial Interface Data: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC4 is disconnected from the port and becomes the Serial Data I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver with slew-rate limitation. PC4 can also be used as ADC input Channel 4. Note that ADC input channel 4 uses digital power.
  4. ATmega8. TWI + ADC.

    1) Вы не можете одновременно измерять напряжение по нескольких входам. 2) Вы не можете измерять напряжение на работающей шине TWI. Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода. 3) Остается длинный путь: "включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д."
  5. Из gcc.info: `section ("SECTION-NAME")' Normally, the compiler places the code it generates in the `text' section. Sometimes, however, you need additional sections, or you need certain particular functions to appear in special sections. The `section' attribute specifies that a function lives in a particular section. For example, the declaration: extern void foobar (void) __attribute__ ((section ("bar"))); puts the function `foobar' in the `bar' section. Some file formats do not support arbitrary sections so the `section' attribute is not available on all platforms. If you need to map the entire contents of a module to a particular section, consider using the facilities of the linker instead. Все верно, но не так явно указывается, как мне хотелось бы. SDRAM, конечно, инициализирую. Я взял AppNote для LCDC. На базе его делаю свою программу для вывода видеоизображения с ISI на LCD. При более детальном рассмотрении данного AppNote, нашел как они присваивают указателю определенное значение: unsigned char * framePtr = (unsigned char *) (lcdc_conf->dmabaddr1 | 0xA0000000); Собственно, я про это и спрашивал. Всем СПАСИБО за помощь!
  6. Спасибо, нашел - то что требовалось. Файл "ap7000.h" Только вот что-то все-равно не так. Где бы почитать про аттрибуты GCC?
  7. ATmega8. TWI + ADC.

    А как Вы собираетесь измерять напряжение при подключенном интерфейсе TWI (по линиям SCL и SDA должны стоять подтягивающие резисторы; в свою очередь, работающий TWI будет шунтировать источник измеряемого напряжения)? Можно, конечно, поставить цифровой переключатель, но зачем так все усложнять. Проще использовать для измерения другие входы, например ADC2, ADC3.
  8. Я прошу прощения за глупые вопросы, но как это указать линкеру? Может для AP7000 где-то в файлах GCC уже указаны все возможные адресные пространства (согласно datasheet на этот микроконтроллер). Я всего-лишь хочу создать кадровый буфер во внешней SDRAM, подключенной аппаратно в моем STK1000.
  9. Программирую в среде AVR32Studio. Она использует GCC. Кто знает, направьте, куда смотреть, какие файлы содержат описание "Controling data placement in memory"? А также, где найти какие и как в GCC применяются директивы (может дополнительные знаки, типа @) при управлении распределением памяти.
  10. Если не трудно - кусок кода приведите, в общих чертах. А вообще, как в С организовать доступ к требуемому типу памяти - SRAM, SDRAM, FLASH, если они имеют каждая свой диапазон адресов? Например, как записать конкретное целое число в конкретную ячейку SDRAM?
  11. Я и спрашиваю, как сказать указателю, чтобы он адресовал только определенный участок памяти? Например, я хочу, чтобы кадровые буферы у меня находились во внешней SDRAM, а остальные переменные хранились во внутренней SRAM. Не буду же я каждый раз создавать новый указатель, если только что созданный указатель адресует не ту область оперативной памяти. И так до тех пор, пока не будет создан "правильный" указатель.
  12. А как можно установить определенный диапазон адресов для значений указателя? То есть, чтобы определенный указатель мог указывать только на память, например, с адреса 0х10000000 по 0х20000000.
  13. Еще вот такой вопрос: Как в С получить численное значение адреса, хранящегося в указателе. Дело в том, что в регистр ISI PPFBD (поле PREV_FBD_ADDR) необходимо записать фактический адрес первого дескриптора кадрового буфера в формате integer. Как я понимаю, значение одного указателя можно присвоить другому указателю, если указатель-приемник указывает на тот же тип данных, что и указатель-источник.
  14. Спасибо тебе, добрый человек! Когда первый раз читал datasheet на LCDC пару месяцев назад, как-то упустил из виду этот пункт - наверное, подумал, что это относится к "2D Memory Addressing". Теперь стало еще понятнее. А как думаете, зачем проверять регистр DMAFRMPTх на наличие достаточного количества времени на изменение DMA Base Address Register, ведь можно просто изменять его по приходу прерывания End Of Frame?
  15. Я себе так все и представлял, но в AP7000 такой прикол: В ISI есть регистр, хранящий адрес ячейки памяти, где находится адрес буфера. То есть, в этом регистре хранится указатель на буфер. При заполнении первого буфера, указатель инкрементируется на 32 бита и указывает уже на адрес второго буфера. Соответственно, адреса всех буферов нужно предварительно записать в соответствующие ячейки памяти. Интересно, что нигде не указывается, сколько всего используется буферов. В LCDC есть только один регистр, в котором сразу указывается адрес единственного буфера.
×
×
  • Создать...