ШИЛ Я ТУТ НЕДАВНА парочку AT89c4051 на своем 866+...кой прикупил нек лет взат после безуспешного поиска тем/схем с простым и доступным прогером под них собраных самиому... о покупе его ни разу не пожалел... надоп еже переходниками под BGA и соик с микрошагом затаритца... но жаба душит дюжедорогие оне дороже самого прогера выдут..
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
MCS51 "старых выпусков" у меня на самодельных программаторах изначально были. Да воть бяда - ХР и "старше" лишили и прямого доступа к LPT (а то и совсем от оного материнки избавили) и dbasic на котором консольки делались "почил в бозе".... Пришлось под "современность" котуинку изобретать.
тама не вХрюшке проблема а в отсутсви LPT в новых компах... проблема прозрачности портоф легко решалась спецдрайвером портоф который тогда лежал в ФРИ везде... а на 98/МЕ работалои без и на хрюшке оно хоть и кривовато порой но работало естествено не надо в фоне запускать тяжелы приложения... да и в те времена не пролблема загрузится в голый ДОС было -штатный зхагрузчих тех осей ЭТОУМЕЛ...пропало это вдето в висте или хр версии 2к3хр
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Ну и .... пушистый с оным! У меня связь только по Rx/Tx и то без всяких дополнительных средств. Вероятно и через простейший радиоканал (JDY40) удастся когда-нибудь сцепить. ..... УПС.... Надо таки отчет топикстартера о результатах макетных испытаний дождаться...
Си без переменных?? Тогда уж лучше ассемблер использовать надо. Там только данные. Одно замечание... Общее стирание еще не показатель. Вопросы начнутся при прошивке данных по конкретным адресам с последующей верификацией этих данных.
/* ---------- */ // Функции чтения и записи в еепром одного байта. /* ---------- */ void EEPROM_write (unsigned int uiAddress, unsigned char ucData) { unsigned char cSREG; /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address and data registers */ EEAR = uiAddress; EEDR = ucData;
cSREG = SREG; /* store SREG value */ /* disable interrupts during timed sequence */
#if __CODEVISIONAVR__ /* if CodeVisionAVR */ #asm("cli"); #else asm("cli"); #endif
/* Write logical one to EEMWE */ EECR |= (1<<EEMWE); /* Start eeprom write by setting EEWE */ EECR |= (1<<EEWE);
SREG = cSREG; /* restore SREG value (I-bit) */ } unsigned char EEPROM_read(unsigned int uiAddress) { /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address register */ EEAR = uiAddress; /* Start eeprom read by writing EERE */ EECR |= (1<<EERE); /* Return data from data register */ return EEDR; }
Определение функции Каждая функция в языке Си должна быть определена, то есть должны быть указаны: * тип возвращаемого значения; * имя функции; * информация о формальных аргументах; * тело функции.
Я уж подожду отчета топикстартера на тему как у него на макете проходит следующая последовательность операций: 1 общее стирание 2 контроль чистоты после стирания 3 запись дампа в МК 4 верификация записанного в МК дампа
А готовой то функции нет? Типа как в PIC C compiler: vol = read_eeprom (i); // читаем из флеш памяти адрес i в переменную vol (unsigned char) write_eeprom(i,vol); // запись в память с адресом i из переменной vol (unsigned char)
Это вобщем-то классика.... Всегда вероятность ошибок в ячейках ПЗУ существует. Посему и проверяем, чтобы удостовериться в качестве результата стирания. То же касается и записи данных - все должно быть разложено на своих адресах. Правда там два варианта - сразу за программированием байта его же и считать и второй - программируется массивом, а затем массивом читается. Ваш вариант питания RST/Vpp во втором случае гарантированно ошибку выдаст.
Ну посмотрим. Сейчас всё упёрлось в процедуру прямой адресации ( чтения записи ) епром, ну если она есть в PIC C compiler, то по любому есть и в CVAVR ! Надо искать . Ну если нет , то это будет эпичный обсер CVAVR, ну... тогда будем искать пути решения , написанием процедур предложенных выше . Кстати всем спасибо за желание помочь !
Добавлено after 1 hour 43 minutes 1 second: Схему немного доработал , потому как транзистора не хватало кт315-го ! А куда же без него ? Ну и немного делитель изменил для микросхемы кр1156еу5!
Добавлено after 2 minutes 37 seconds: Ну вот так вот !
Похоже по схеме питания rst/vpp икакого заметного прогресса и понимания вопроса пока не наблюдается... Касательно Си ... Я б на адуринке быстрее сгородил... Да смысла не вижу... Разве что вот... "одноразовый прошивальщик" биоса (b52m1 версии) для котуинки (под АТ89S52 заточен) а сам дамп массивом в ПЗУ сидит. Без той железяки "с нуля" котуинку не запустить - а далее уже с помощью кнструкций на ее базе продвигаем расширения. В сооющении https://radiokot.ru/forum/viewtopic.php ... 4#p4065564 конкретно вот этот архив https://radiokot.ru/forum/download/file.php?id=368183
Добавлено after 34 minutes 35 seconds: Действительно ( изучив даташит на CAVR ) , я понял что прямой адресации на EEPROM у него нет ! И это было бы очень смешно , если бы не было грустно (((
_________________ Не спрашивай по ком звонит колокол, он звонит по тебе !
while (*ptr_to_eeprom) *ptr_to_ram++=*ptr_to_eeprom++;
имхо лучше AVR GCC - там в <avr/eeprom.h> много вариаций: https://www.nongnu.org/avr-libc/user-ma ... eprom.html типа: В качестве параметров нужно передавать: void-указатель на адрес в RAM, void-указатель на адрес в EEPROM и количество байт. Для начала, попробуем прочесть 10 байт из EEPROM, начинающиеся с адреса 12, в строку.
• (void*)&StringOfData – это указатель на RAM. Функция записывает прочитанные данные сюда. Он имеет тип unit8_t, поэтому добавляем явное преобразование – (void*) • (const void*)12 – это указатель на EEPROM. Функция чтения его не изменяет. Мы используем постоянный адрес (константу), поэтому преобразуем его к const void* • 10 – количество байт, которое мы читаем. Функцию записи надо использовать так же, только первым аргументом посылаем данные, которые хотим записать, а вторым – место в EEPROM, куда данные будут записаны.
Пока работаю с массивами , для установления связи с МК ! То есть считать, записать не из файлов, а из массивов программы ... Ну и массив из 10 байт записать , а потом считать . И это будет комильфо. А да ... По питанию схему немного переработал , там когда не нужно подавать 12 вольт на Vpp то нужно подавать 5 вольт .
Добавлено after 8 minutes 8 seconds: Вот так будет правильно
Так может достаточно одного массива размером в ПЗУ 2051? У 128й меги вполне места хватит. А образец программки сортировщика я уже давал - переделываем под Си и АВРку и грузим хекс сразу в массив ОЗУ меги.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 149
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения