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

GenaSPB

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

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

  • Посещение

  • Победитель дней

    2

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


  1. Не видя всего кода, трудно сказать, что там происходит... вопросы: 1) Какого типа переменная palit (намёк на пропущенное приведение типов перед сдвигом) - см. вопрос 3. 2) Что за функция _remappalette (я про сдвиги на 7 и на 15)? 3) что за компилятор, в каком режиме (real mode? какой размер int?). Visual C 1.52?
  2. Где-то надо загрузить ту палитру, в которой Ваш файл сохранён (кажется, она вместе с каритнкой где-то). Потому я про 16 или 32 (24) бита вам и говорил. А что было-то, размер страницы (granulation) у Вашего видеоадаптера какой? Что печатает моя программа про доступные vesa режимы? Характеристики используемого Вами режима?
  3. 1) не вижу описаний scrwidth, altop. Они 16 бит? 2) А с чего Вы решили, что в Вашей видеоплате функция установки номера окна предполагает, что окно 64 килобайта? Я про granularity. 3) моя программа работает у Вас? Она тоже изображение выводит. 4) Не вижу установки начальной страницы.
  4. Простите, а зачем я, как вы думаете, выложил исходники программ (под дос и под dos extender от zortech 3.1), где вызывается процедура переключения страниц видеопамяти как раз по информации, предоставляемой vesa bios? Запустите - программы рисуют картинки, похожие на BGIDEMO от Borland. В режиме 16/24/32 бита может оказаться быстрее - да и избавитесь от необходимости палитру загружать. Пожалуй, 16 бит самое то. Вот два метода перекючения страницы - через колбэк и медленный - через вызов функции vesa bios. Это для real mode. static void vesa_setpage_bio(unsigned short page, unsigned w) { union REGS r; r.x.ax = 0x4f05; /* 4fh/05h: Page service. */ r.h.bh = 0x00; /* bh = 0: set, bl = window */ r.h.bl = w; /* bh = 0: set, bl = window */ r.x.dx = page; /* In granularity units. */ int86(0x10, & r, & r); if (r.x.ax != 0x004f) { printf("Error in function 0x4f/0x05\n"); return; } } static void vesa_setpage_dir(unsigned short page, unsigned w) { _SI = _SI; /* Force save register variables. */ _DI = _DI; _DX = page; /* In granularity units. */ _BX = w; /* bh = 0: set, bl = window */ (* gcx.wpos)(); } void (* vesa_setpage)(unsigned short, unsigned) = vesa_setpage_bio;
  5. Для VESA режимов эту информацию возвращает BIOS видеоплаты. Чаще всего на A000.
  6. Честное слово, в ЭФО брал - в апреле этого года. ATSAM3S4BA-AU, работают как настоящие! зы: кажется, ещё не кончились. http://shop.efo.ru/cgi-bin/shop.pl?categor...p;mh=50&a=1
  7. Нет, LTO критически необходимым не является - пока ещё до предела в ПЗУ не дошёл. Просто отваливание этого куска выглядит как индикатор того, что что-то не так в оптимизаторе. Хотя... Была идея запихнуть проект в 32-килобайтный процессор (с LTO - 25 кБ, без - 33 кБ)... пока можно пользоваться старой версией. GDB не пользуюсь...
  8. Я в своей пигмейской жизни разрабатываю встроенные системы сидя под виндами, использую для облегчения работы автотрассировку печатных плат и не хочу лезть на кактус под называнием пингвин_на_рабочем_столе. Ёжики не лезут на пингвинов. Протестирую. ps: протестировал: LTO с ARM7 отвалилось (Segmentation fault в lto1.exe). Жду следующей версии. В позапрошлом варианте работало - пока сижу на нём. Не колет.
  9. Как обычно, приму с юлагодарностью ARM для хоста WIM32
  10. AVR t230

    Топикстартер, как дела? Что с питанием индикатора? Работает ли лригинальный проект?
  11. AVR t230

    Оригинальный проект пробовали прошивать? Работает ли? Я про исправность аппаратуры намекаю... Судя по даташиту, 3.3 вольта питания для контроллера индикатора - это верхний предел. 2.5 вольта, 2.7 вольта ему лучше. Надеюсь, 5 вольт не подавали?
  12. AVR t230

    Это я к тому, что можете взять исходники на "C" работы с I2C и пошагово разобраться и инициализацией Вашего контроллера, используя мои исходники. Радиорынок какого города?
  13. AVR t230

    А похожа инициализация на UC1601! i2c_start(ADDR_70); i2c_write(0x81); // Set Vbias Potentiometer TIC154 i2c_write(vbias); i2c_write(0xAF); // Set Display Enable i2c_stop(); _delay_us(10); // delay required after Set Display Enable command i2c_start(ADDR_70); i2c_write(0x84); // Disable Partial Display i2c_stop();
  14. AVR t230

    Может Вам поможет работающий проект с UC1602. По крайней мере, I2C работает. http://forum.cqham.ru/viewtopic.php?t=22912 Ещё вопрос - где берёте дисплейчик?
  15. Ох, спасибо за ссылку... вспомнил прошлое (и не очень) - дизассемблирование ПЗУ от Ямахи - MSX-DOS потом использовал в своих домашних компютерах, написание компилятора С для 8080 и Z80 (MicroGenSf, если кто встречал).
  16. А можно Вас попросить - открыть у себя на машине .sch и, выполнив команду "Library -> Archive Library", выложить и получившийся .lib файл?
  17. Вот Вам проект (прверял на атмеге32, смотрите). Стиль - намеренно корявый, 3/4 программы сгенерено визардом.
  18. AVR и Siemens M55

    Вот архив с программой. И тот файл с картинкой, по которому генерируется знакогенератор.
  19. AVR и Siemens M55

    А я бросил идею размножать символы - и просто нарисовал отдельный знакогенератор (правда, в моём приложении были только цифры, точка и пробел). Знакогенератор рисую в bmp - потом простой программой - "зубочисткой" (по классификации Керинигана) - преобразую в исходник массива. Кому надо - тексты (управление RD0154 - с микросхемой UltraChip uc1601s) лежит вот тут: http://forum.cqham.ru/viewtopic.php?t=22912 Исходники преобразователя .bmp -> .c выложу здесь, если надо.
  20. По это явно в Zilog-овском документе с их сайта говорится. Если надо - можно будет проверить (но только на Z180). А что, не известно точно, что за железо у Вас?
  21. У Вас не Rabbit? Если да - там регистр R другую функцию выполняет. На Hitachi HD64180 документ не нашёл... Или у Вас точно от Zilog кристалл? Для zilog: Возможно, используют как ещё один флаг. Смотреть там, где записали. Правильно замечено, что проверка на работу под эмуляторами (или трассировщиками). Да, вы в курсе про копирование флага iff2 в parity при выполнении этой команды?? ps: С удивлянием для себя обнаружил, что команда ld a,r устанавливает флаги sign и zero по содержимому регистра r.
  22. Я намекаю, что если в выражении a = b = c = d = e = 1234; переменная с - volatile и не имеет права быть считанной (в свойствах языка такого нет) - Вы уверены, что a и b будет присвоено 1234? Я - не уверен. Дабы не исследовать зависимость от компилятора и оптимизации, проще простого - сделать отдельные выражения для присвоения каждой из них.
  23. За строчкой Внутри цикла добавьте Результат сообщите. Предполагаю, что терминал Вы запускаете после того, как прцессор запускается? Попробуйте, не выключая терминал, просто reset нажать. Тут я предполагаю, что старт-стопный протокол начинает приём с какого-то нулевого бита из середины посылки и не входит в режим правильной синхронизации. 0xff поможет в этом. Так. Порты PIO_PDR и PIO_PUDR не позволяют читать записанные в них значения (Вам на это уже намекали). Соотвтственно, что пишется у Вас ("от безысходности") в регистры PIO_IDR и PIO_PUDR никто не знает. И не надо про то, что не влияет - сделайте как надо. Про это в даташите написано в колонке access словами Write-only. Не понял, что с PLL и тактовой частотой процессора.
  24. Так из многих "нагугленных" эта заработала сразу, без напильника (естественно, речь не о привязке к компилятору). Разберётесь потом - даже можете своё сделать на основе работающей программы.
×
×
  • Создать...