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

Палыч

Свой
  • Постов

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

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

    2

Весь контент Палыч


  1. Отпаять от платы достаточно ногу XTAL1 и подать на неё внешнюю частоту тактирования. Проблема в том, что генератор с внешним кварцем 7.3728 МГц не заводится. Причину найдите сами.
  2. А, у меня, так же, как и у Владимира... Жмём на Wiki и - вуаля!- то же сообщение об ошибке.
  3. Конечно, можно... Когда-то такое обсуждалось, и в этой теме я приводил свои программы записи памяти МК из диагностического оборудования.
  4. Это Вы ещё не видели код, сгенерированный с выключенной оптимизацией.
  5. Инженеры Atmel'а при проектировании микроконтроллеров AVR когда-то совершили стратегическую ошибку - отвели под область ввода-вывода слишком маленькое пространство адресов. Очень скоро количество регистров ввода-вывода в отдельных AVR стало превышать адресное пространство области ввода-вывода. Некоторые регистры ввода-вывода стали размещаться за пределами области ввода-вывода - команды IN/OUT для таких регистров применять нельзя. Если Вы посмотрите в документацию в раздел "Register Summary", то увидите, что регистры портов А,B,С и D находятся в области ввода-вывода, а регистры портов F и G лежат за пределами области ввода-вывода.
  6. Да, относится только к ассемблеру. Транслятор Си сам применит другие команды к регистрам портов F и G.
  7. 1 Как именно ругается? Приведите текст сообщения об ошибке и текст строки программы, на которую студия ругается. 2 На каком языке пишите программу? Если на ассемблере, то, надеюсь Вы в курсе, что команды IN/OUT для доступа к этим регистрам не применимы?
  8. ТС знает ли о существовании CRP (Code Read Protection) ?
  9. Тогда давайте расставим всё "по полочкам"... О какой "таблице" Вы ведете речь? Таблице с названием "Reset and Interrupt Vectors" из DS (в Вашем примере из последнего поста - таблице с номером 18), в которой перечислены соответствующие вектора? Тогда - "да", и вектор Reset и вектора прерываний авторы документа разместили в одной "таблице", и все эти вектора - её часть. Есть ли некое подобие таблицы из DS в микроконтроллере? В общем случае - "нет", поскольку (как правильно сказал alexeyv) вектор Reset может размещаться в памяти отдельно от векторов прерываний (ну, или - наоборот).
  10. Ну, что же это Вы, Ксения, так подставляетесь? Выделяют Reset и не считают его частью таблицы прерываний разработчики AVR (загляните в DS: "Reset and Interrupt Vectors"). И с прерываниями от WDT Вы тоже, мягко говоря, погорячились...
  11. Привести код записи страницы с адресом 00001 - места на экране не хватило?
  12. Укажите спецификатор памяти: С:0000 - Адрес ноль в памяти программ (code) D:0000 - Адрес ноль в памяти данных (data)
  13. AVR atmel studio 6.0

    Достаточно заглянуть в документацию на AVR Studio, чтобы понять, что в симуляторе:
  14. Вы, вероятно, не поняли, что выделять текст можно имеющимися средствами довольно легко. Например, выделить весь текст: 1. Кликнуть перед первым символом текста в левой кнопкой мыши. 2. Любым (!) способом переместить текст так, чтобы видна была бы последняя строка. Сделать это можно любым способом - например, переместив мышкой ползунок справа от блока. 3. Кликнуть левой кнопкой мыши после проследнего символа блока, при этом удерживая нажатой клавишу Shift. Это - "традиционные" действия при выделении текста не умещающегося на экран дисплея.
  15. А что Вам мешает кликнуть мышой по первому символу блока, отмотать любым способом в конец блока и кликнуть с нажатой клавишей Shift ?
  16. Поскольку Вы при открытии файла указали флаг FILE_FLAG_OVERLAPPED, то при вызове процедуры WriteFile должны обязательно передавать указатель на OVERLAPPED структуру (этот указатель не может принимать значение NULL).
  17. Э-э-э-э.... Что-то Вы намудрили... // Преобразование числа 0-15 в шестнадцатиричный символ char BinToHex(char B) { static char * Symbol= "0123456789ABCDEF"; return Symbol[B & 0x0F]; } ........ printf("%c%c\n", BinToHex(Byte >> 4), BinToHex(Byte & 0x0F));
  18. Для "стандартных" типов данных в общем случае справедливо следующее неравенство: sizeof(long) >= sizeof(int) >= sizeof(short) >= sizeof(char) И - всё! Поэтому ответ на Ваш вопрос - нет.
  19. Было бы легче Вам подсказать, если бы Вы привели бы текст сообщения об ошибке полностью. Вероятная ошибка в том, что 8051 содержит в себе несколько типов RAM, отличающихся методами (командами) доступа к содержимому, и которые специфицируются нестандартными ключевыми словами: data, idata, bdata, xdata, pdata. Распределение переменных между этими типами RAM производится программистом (задается спецификатор типа памяти или команды линкера) либо самим транслятором\компановщиком путем задания модели памяти SMALL, COMPACT или LARGE. Подозреваю, что Вам достаточно будет указать модель памяти LARGE, чтобы избавиться от ошибки.
  20. Посмотрел в сети: как сейчас обстоят дела с лекарством для Keil... В настоящее время извесины два генератора лицензий, отличающихся размером файла: 1. Один - размером 37 Кбайт (кто-то утверждает, что 38 Кбайт). Этим лекарством я когда-то пользовался. Требует подмены файлов. 2. Второй - размером 17 Кбайт. Якобы подмены не требует.
  21. Обычно, с кейгеном ещё "кучка" DLL-файлов идёт для подмены. Вам нужно подменить файл L51.dll из состава Keil на аналогичный из состава кейгена.
  22. Представлять байты команды в шестнадцатиричном виде никому не приходит в голову, поскольку передача команды модему на языке Си обычно выглядит как-то так: USART_WriteString("AT+CREG?\r");
×
×
  • Создать...