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

Микроконтроллеры для начинающих

...Что с виндой непонятно!

 

Windows XP SP2, кажется со всеми последними обновлениями. После настройки по инструкции (уже забыл, что надо настраивать) появлялись ошибки. После установки задержки до 40 (процессор 2.2ГГц), вроде бы, пропали ошибки. Раз 5-6 в режиме Прочитать-Стереть-Программировать и т.д.

 

Возможно, проблема не столько с Windows, сколько с быстрым процессором? Может быть задержики и в 40 не хватает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) Ситуяция похожа на то, что брандмауэр гасит экранную часть проги по образу и подобию антивирусника нод32. В любом случае пога не в полном обЪёме загрузилась там где используются функции винды остается пустое место. Вызова функций АПИ просто нету. Что делать?Это гдето видимо в реестре вколочено. Хренаськи найдешь сотня мег реестр. или грохнуть всю винду и потом медленно и вернопоставить весь свой арсенал задач :smile3046: :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... В любом случае пога не в полном обЪёме загрузилась там где используются функции винды остается пустое место. Вызова функций АПИ просто нету. Что делать?Это гдето видимо в реестре вколочено. Хренаськи найдешь сотня мег реестр. или грохнуть всю винду и потом медленно и вернопоставить весь свой арсенал задач :smile3046: :cranky:

 

Грохнуть все, это никогда не поздно. А Вы точно выполнили все рекомендации по настройке IC-PROG при первом запуске? Я забыл о настройках, попытался запустить и все было очень странно, пришлось прочитать файл pdf, который был на диске и тупо повторить все, что там касалось предварительной настройки. К сожалению, я уже псчти забыл Windows. Но, если мешает брэндмауэр, то, может быть, попробовать его отключить? Извините, если сказал глупость.

 

Я уже запамятовал, но мне кажется, что я пробовал использовать EXTRA-PIC в Linux с программами KTechlab и Piklab. Если это мне не приснилось, то вполне удачно. Хотя больше я использовал самодельный простейший программатор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но, если мешает брэндмауэр, то, может быть, попробовать его отключить?

 

Отключиь брэндмауэр система не дает в сервис паках довески это ресекают сразу. Поступаю проще ВЫБРАСЫВАЮ IcProg к какойто маме. И шпандорим на проге Winpic800 она умеет распознавать чип. Шью пики 84, 628, 628А, 716, 874. Время на прошиву затрачивает чуть больше 10 сек. Одной рутинной работой меньше. так что тема бум говорить снята. Нехочет винда Icprog - и я не сильно то хотел. ;) :08:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот красивый проект для начинающих от новичка - LCD графический MT12864 - 128x64 точки. исходники для CVAVR и симуляция в PROTEUS - Прекрасно компилируется и симулируется. Можно симулировать в PROTEUS без компиляции - все файлы в архиве есть.

LCD_MT1264.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что такое BCD и для чего оно нужно

 

BCD - Binary Coded Decimal -- это десятичное кодированное двоичным

Binay Coded Decimal- это кодирование которое упрощает хранение,доступ к ним и конвертацию данных для вывода к примеру на ЖКИ.

В результате конвертации мы в байте (8-bit) будем иметь два нибла (4-bit) каждый из которых будет содержать число

в размере от 0 до 16.Таким образом это позволяет нам хранить в каждом нибле десятичное число от 0 до 9 и два в одном

байте, тоесть в оном байте два десятичных числа.

Пример конвертации десятичного числа переменной mybyte если её значение находится в пределах от 0 до 99:

char mybyte = 78;

Объявим переменную для значения старшего нибла.

char upper_nibble = 0;
//Подсчитаем колличество десятков в переменной mybyte.
while (mybyte >= 10) 
{
upper_nibble++; 
mybyte -= 10;
}

После таких преобразований в переменной mybyte осталось число 8, а upper_nibble равно 7.

Чтобы получить сконвертированный байт объединим старший и младший ниблы:

char result = (upper_nibble << 4) | mybyte;

Такой алгоритм исспользуется для конвертации в программе функции CHAR2BCD2.

char CHAR2BCD2(char input)
{
    char high = 0;
    
    
    while (input >= 10)                 // Подсчитаем десятки
    {
        high++;
        input -= 10;
    }

    return  (high << 4) | input;        // Добавляем единицы и возвращаем результат
}

Если входное значение находится в пределах от 0 до 255 то исспользуют следующую функцию

unsigned int CHAR2BCD3(char input)
{
    int high = 0;
        
    while (input >= 100)                // Подсчитаем сотни
    {
        high++;
        input -= 100;
    }

    high <<= 4;
    
    while (input >= 10)                 // Подсчитаем десятки
    {
        high++;
        input -= 10;
    }

    return  (high << 4) | input;        //  Добавляем единицы и возвращаем результат
}

Ещё один маленький пример ковертации байта в эквивалентное значение ASCII

с исспользованием BCD.

К примеру мы имеем байт Number размерностью от 0 до 99 который нужно сконвертировать BCD

в два эквивалентных кодировке ASCII значениям.

char Tens = 0;     // десятки
char Ones = 0;     // единицы
char Number = 93; // значение для конвертации

Переведём десятичное значение в BCD исспользуя вышеописсаную функцию:

Tens = CHAR2BCD2(Number);

Теперь переменная Tens в старшем нибле содержит десятки а в младшем - единицы. Дальше всё

очень просто, только необходимо помнить что ASCII ‘0’ - это 48, ‘9’ - это 48+9=57,‘3’ - это 48+3=51,

и наоборот 57 это десятичное значение ASCII ‘9’,51 это десятичное значение ASCII ‘3’.Таким образом конвертация десятичного значения в его эквивалентное ASCII значение - это простое суммирование десятичного значения и 48. Поскольку функция CHAR2BCD2 загрузила десятки и единицы переменной Number в Tens то мы должны сначала извлечь переменные Tens и Ones и добавляя 48 получить эквивалентные ASCII значения для Number.

Ones = Tens; 
Ones = (Ones & 0x0F) + '0';

Десятые мы получаем сдвигом на 4 и добавим 48.

Tens = (Tens >> 4) + '0';

Теперь можно посимвольно выводить значения на ЖКИ, передавать в компютер и т.п.Пользуйтесь, это удобно. В общем может где-то есть и другая инфа на русском, я её не нашол, разобрался сам и решил другим помочь. Всё вышеперечиссленное тестировалось в компиляторе ИАР вер.5.10А.

Если будут найдены ошибки прощу исправить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день, решил заняться программированием МК, купил программатор ChipProg-40. Программатор полностью устраивает, все прошивает на отлично, но вот контроллер работать отказывается. Работаю с atmega8535. Вопрос - он действительно работает без внешнего кварца, или может как то нужно активировать внутренний? При установке в схему контроллер заметно греется, что наводит меня на мысль о том что проблема вовсе не в программаторе или самом контроллере а в программе, ибо походу контроллер работает а вот программу выполнять отказывается. Программу компилировал в Programmers Notepad 2, в makefile соответственно вписал atmega8535. Если кому не сложно, сделайте элементарный пример для этого контроллера(например что бы на PA0 горел светодиод).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Anub - зря вы потратились. СТК200/300 - вот это вЭщ!

По теме -

Меги имеют встроенный РЦ-генератор - вроде с заводи идут с тактированием 1МГц(Читайте ДШ раздел ФУЗЫ).

Если при установке в схему камень греется - это не програмам а скорей всего(99%) монтажка - проверяйте схему.

Пример с миганием:

int main (void)
{
    DDRA=0x01;// устанавливаем 0-й пин порта А на вывод
    while (1)//типа бесконечный цикл
    {
        PORTA =0x01;//установка "1" на 0-ю лапу
        //тут надо вставить задержку - юзаю стандартную, там либу подрубать нужно- delay.h вроде - а вы сами определитесь что и где вам нужно
        _delay_ms(200);
        PORTA =0x00;// установка "0" на все лапы
        _delay_ms(200);// аналогично , а то мигать не будет
    }

    return 1;//пусть будет - варнингов меньше..
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот красивый проект для начинающих от новичка

Пороект вполне банальный,действительно уровень новичка. А с учетом прикладывания к нему рук, и особенно ссылок, воинствующего ламера 123 я бы вообще более, чем скептически рекомендовал ко всему написанному относиться.

Moderator:

Приложение слегка почистил от наглой саморекламы присоседившегося 123.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добрый день!

подскажите, пожалуйста, как железно(без прошивки) проверить МК AVR на работоспособность? программатор выдает communication error(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

такой вопрос: если в CVAVR при прошивке стоит галочка Program Fuse Bits, но ниодного фьюза в списке не выбрано, то это он их всех сделал '1'? т.е CKSEL[3..0] = 1111 => работа от внешнего клока?? (mega16)

ситуация такая: один раз прошивается норм, потом МК не отвечает программатору... подскажите, куда смотреть пожалуста

Изменено пользователем ysb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

такой вопрос: если в CVAVR при прошивке стоит галочка Program Fuse Bits, но ниодного фьюза в списке не выбрано, то это он их всех сделал '1'? т.е CKSEL[3..0] = 1111 => работа от внешнего клока?? (mega16)

ситуация такая: один раз прошивается норм, потом МК не отвечает программатору... подскажите, куда смотреть пожалуста

галка означает фьюз, запрограммированный в 0, а её отсутствие - 1.

Таким образом, чтобы зашить режим работы от кварца, нужно снять все галки CKSELn.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не советую AVR для начинающих. Уж куда приятнее PIC. В преподавательской практике использовал оба - PIC схватывают на лету !!!

Есть подозрение - что из-за системы команд.

 

Всё гораздо проще. Для PIC есть много литературы на руссоком языке. Для AVR в основном только документация с минимумом примеров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я осваивать начал и,собственно,пока там и остался, с Мультикоров..и вот думаю,что мне просто не повезло...кто сталкивался-поймёт..конечно RISC+DSP сходу - это не совсем верно,но ситуация обязывала. Впринципе, неплохо,но глюки есть и они добивают,в основном, они в среде разработки(ПО слетает и если к этому не привыкнуть,то забросишь сразу же)..возможно предвзятость это,потому как отечественный...полезно знать,что наши пытаются.Если верить анонсам,то на них стоит обратить внимание,в мощности они прибавляют. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут много полезного программы, литература. http://www.forum.ocp.su/

Изменено пользователем Hitako

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...