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

DenisIV

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

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

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Сорри, что пишу с небольшой задержкой :), но может кому пригодится... Пробовал компилятор IAR AVR, IAR STM8 - настраивал так: 1. Options -> Output Convertor -> Generate additional format, intel - standart (.hex) я использую вместо конкретного имени переменную $PROJ_FNAME$.hex -да, да, именно так, не приходится при копировании/переименовании проекта переназывать выходные файлы. 2. Если расширение в Options -> Linker -> Output не соответствует стандартному ($PROJ_FNAME$.out), то вышеуказанный файл $PROJ_FNAME$.hex не создаётся. Не знаю, почему. По сути после мы на выходе имеем и .hex и .elf(с расширением .out) файлы.
  2. ATMega128, IAR EWAVR 5.4. Тут ещё вопросик нарисовался: можно ли в пределах одного проекта использовать две таблицы векторов прерываний (одна основная, другая-из бутлоадера) или нужно сделать 2 проекта и отдельно их линковать? 2Moderators: Может отдельную тему для этого вопроса создать или переместить в нужную?
  3. Со стыковкой разобрался. А вот с вставкой асм-никак. Вернее, как я уже писал, асм строчки вставляются, но "доопределить" внутри асм те же регистры типа ZL,ZH,ADCH,ADCL и т.д. не получилось. Отдельный файл асм в проект добавляется, к нему вопросов почти нет, но я не смог добавить(состыковать) его с прерываниями(не смог задать вектор+не знаю, как сделать переход из таблицы векторов к обработчику). Чтение доки не помогло. Может у кого есть какой-либо пример? Собственно обработчик прерывания на асм, контент сохраняю и восстанавливаю сам, вопрос, как из проекта вызвать этот обработчик.
  4. Собственно сабж. Нашел, как вставить строчку на асм, а команды обозначающей начало и конец асм-вставки не нашел. У hi-tech pic такая команда #asm, дальше сколько хош асма, в конце #endasm На С не получается обработка FFT, с асмом грабли, мозг пухнет... F1! И ещё: какие переменные можно видеть под асмом из С и как их в асм из С можно передать? (и в обратную сторону тоже)
  5. Да, в дополнение к предыдущему моему посту: как вы охлаждали индикатор? Если охлаждался корпус, внутри которого плата и индикатор, то ещё не так страшно, хотя вопрос с выделением влаги надо было обязательно решать. Если аэрозолем (локально плату), то получается, что индикатор (и плата процессора) получались холоднее окружающей среды, соответственно наступала точка росы и весьма возможно, на плате выделилась влага. А влага есть и ёмкость и сопротивление(ну высадился всё равно не чистый H2O-ионы хлора или ещё чего всегда есть). И этого вполне могло быть достаточно, чтобы колебания резонатора сорвались и/или прекратились. Пример-бутылка пива, которую достали из холодильника и поставили на стол. Т.к. Температура бутылки меньше температуры окружающей среды, то через некоторое время на ней появились капли воды. Далее: Если в контроллере для тактовой частоты использовался не резонатор, а внутренний RC-генератор, то 90% вероятности, что он остановился уже при -10...-15. Почитайте даташит на контроллер. Наверняка производители не гарантируют работу встроенного RC-генератора при отрицательных температурах. В дополнение - цепи питания(стабилизаторы,батареи/аккумуляторы), электролиты(замёрзли?), супервизоры, и просто контакты в разъёмах(окислились, сдвинулись)- проверьте. В общем, причин много. Расскажите, какие у вас условия - поможем разобраться. Приведу пример из своей практики - я давно работаю с индикаторами TIC32 и TIC48(контроллер LCD PCF8531), испытывал при -54 - никаких проблем. Только пиксели поворачивались сек 10...15. Контроллер PIC16+кварц 4.0M+вся плата была залита двойным слоем уретана (лак такой). С вашим контроллером LCD(PCF8535) пока дел не имел, но судя по даташиту, он получше.
  6. Хм. т.е Mega1284P совсем не то? • Operating Voltages –1.8 - 5.5V for ATmega1284P • Speed Grades –0 - 4 MHz @ 1.8 - 5.5V –0 - 10 MHz @ 2.7 - 5.5V –0 - 20 MHz @ 4.5 - 5.5V Мне казалось, что Mega16 при 8М может работать при 2.7V, а при 16М - при 4.5 и далее(у ПИКов, например, так) • Operating Voltages –2.7 - 5.5V for ATmega16L –4.5 - 5.5V for ATmega16 • Speed Grades –0 - 8 MHz for ATmega16L –0 - 16 MHz for ATmega16
  7. Точнее пожалуйста, что не работает: интерфейс, угол зрения не тот, встроенный умножитель или ещё чего ? КАК не работает: сразу, постепенно, температура перехода ? Информацию в студию, тогда и покумекать можно. Не забудьте измерить напряжение питания и умножителя (Vlcd) при разных температурах.
  8. Проблема в том, что кварц не хочет заводится, если напряжение питания поднимать от 0 до 4.6 V, зато после 4.6, когда завёлся, можно снижать до 2,5 V - всё нормально работает. Кварц на 8мГц. Brown-out выключен. Просто в устройстве планируется батарейное питание, а встроенный RC-генератор использовать нельзя. Необходима точность. Конфигурация в программаторе AVRSTUDIO/AVRISP2 H=0xD9;L=0xFF; В чём могут быть грабли? Или это нерешаемо? Раньше я с ПИКами работал, там граблей таких не замечал...
  9. Это я всё понимаю, однако обнаружил некоторые "недоделанные" команды из 8535. Типа Mirror Y и ещё чего-то... Вот и спросил... Мож кто этот контроллер на "столе" щупал? Оч класный ЖКИ, дешёвый, если найдётся чел, который нащупал чтение-звёздочка ему... Да, 2moderators: Может стоит создать отдельную ветку "Устройства отображения информации, иллюминация" для таких вопросов? А туда и LED и LCD индикаторы и матрицы всякие, и кинескопы, и лазерные/не очень проекторы, фонтаны с хитрой подсветкой и т.д. засунуть?
  10. Кто работал с PCF8531? (Контроллер ЖКИ 128*32(128*34), применяется в индикаторах TIC32,TIC48 и т.д...) Читается ли внутреннее ОЗУ? Я сначала думал, что на линии SDA вообще нет транзистора, но осциллограмма показала, что ACK(подтверждение) микросхема выдаёт. А вот как вычитать из неё данные, не знаю. Ведёт себя, как будто такой команды (бит Wr/Rd=1)нет. :( Собственно, проблема проста: зажечь и/или погасить точку, не изменив содержимое остальных 7 бит (в байте внутреннего ОЗУ драйвера) . Хранить копию экрана в ОЗУ контроллера не предлагать-контроллер PIC16F876A, ОЗУ < 512 байт. (128*32/8=512) Заранее спс.
  11. Вопрос по HI-Tech C

    Ясно. ну в этом случае мне выгоднее использовать конструкцию, которую я ранее приводил, когда я вызываю функцию, а в теле функции асмом отдаётся собственный код адреса и далее dw 0x.. и т.д. Да, позвольте дать совет не использовать конструкции вида asm ('movlw 0x00'); asm ('movwf MyVar'); дело в том, что компилятор когда начинает свою оптимизацию, может вообще поменять местами ваши команды по своему усмотрению. лечше используйте блоками: #asm movlw 0x00 movwf MyVar #endasm Это хоть какая-то гарантия будет от перемешивания команд... (IAR для AVR точно очень любит такие фокусы, я насмотрелся...) Ну тема с доступом к массиву полагаю,закрыта... Хотелось бы ещё спросить про аппаратный I2C мастер. У меня ну никак не получилось заставить его работать. Может какие тонкости есть в этом деле? Я попытался повторить эту демку на PIC16F886 и сколько не бился, так и не смог запустить аппаратно I2C. Пришлось программно симулировать. В даташите вроде не отличаются I2C у 876A и 886.
  12. Вопрос по HI-Tech C

    Можно поподробнее? Есть ли доступ к таблице переходов? PRO 9.65 даже если сместится, можно хоть как-нибудь не прибегая к асму вытащить адрес функции и засунуть в какую-нибудь переменную? на AVR и x51. ну в AVR с dw нормально, только точка перед ней нужна, с 51 проблем никаких вроде. dw не самая большая проблема.
  13. Вопрос по HI-Tech C

    У меня прошло так: void MyArray(void) { #asm dw 0x3FF0,0x1A55 #endasm } void main(void) {unsigned int Temp,Tmp; asm(" fncall _main, _MyArray"); Temp=&MyArray; Tmp=FLASH_READ(Temp); } Только вот указатель на функцию компилируется неправильно. Либо я его неправильно описал. Как я понимаю: Temp - прямая адресация к ячейке. *Teмp - адресация к данным через указатель (как к регистру INDF) &Temp - адресация к самому указателю (как к регистру FSR) в итоге у меня почему-то значение в Temp не совпадает с адресом самой функции. А так строчка asm(" fncall _main, _MyArray"); мне очень помогла. Не хотелось бы прибегать к асму, т.к. программа планируется быть носимой на другие платформы. предыдущий рабочий вариант был таков: unsigned int MyArray(void) { #asm movlw low ($+5) movwf ?_MyArray movlw high($+3) movwf ?_MyArray+1 return dw 0x3FF0,0x1A55 #endasm return 0;// для того, чтобы компилятор увидел явный возврат из функции на С (команды asm он в расчёт не берёт) } void main(void) { unsigned int i,Tmp,Temp; Temp=MyArray(); Tmp=0; for(i=0;i<1024;i++) {Tmp=Tmp+FLASH_READ(Temp+i);} } но в начале функции команды asm не дадут перейти на другую платформу... =((
  14. sergeeff Во-первых ссылка не работает, во-вторых это уже даже не дискуссия и тема выходит за рамки топика. Если есть вопросы и темы "про пацанов" - то вам либо в БОБРУЙСК, либо в РОСТОВ. (или ИЗрАИЛЬ) Понимаю, что с предыдущего поста время прошло месяц с гаком, но просто неправильно говорить например о ошибках компилятора (которые, например, пока ещё не найдены), основываясь на переводе документации с английского на албанский и далее на китайский и русский. Анекдот! С уважением(или нет?) SergeeffMinusSergeeff=0
  15. Вопрос по HI-Tech C

    Огромное вам сапасибо, testerplus , я более ёмкого и конкретного ответа даже не ожидал. Буду тестировать на проекте как проснусь, сразу отпишусь. Алгоритм со сжатием не подойдёт, так как данные уже упаковны не хуже GSM упаковки... Но всё равно биг спс !!! Я думаю, считывание типа Temp=FLASH_READ(MyTable+OffSet) должно пройти... Есть ещё пара мелких локальных вопросов, которые я хотел бы задать, но это потом... Адреналин, оказывается, вырабатывается не только в случае опасности, а так же в случае удачной компиляци... :)
×
×
  • Создать...