Перейти к содержанию
С Днём Победы! ×

Goodefine

Members
  • Постов

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

  • Посещение

Сообщения, опубликованные Goodefine

  1. Дык задача то была:

    Ну проект переделал под мегу16, но вот как сравнить код ключа, с раннее записанным кодом ?

    Да и как это сделать чтобы код ключа писался не в исходнике, а уже в самой прошивке.

    Я такое видел, но не знаю как это реализовать sad.gif

  2. Выводить-то можно, только при этом может генерироваться прерывание (если оно разрешено и условия возникновения определенным образом сконфигурированы) - так называемая программная генерация прерываний...

    ...Проблема есть только когда пытаешся внутри обработчика управлять той же шиной. Такое ощущение что далее оно возникает уже внутри обработчика(либо сразу после выхода из него)...

    Запрет прерываний внутри обработчика тоже не помог. Может не правильно настроены?

    Помиимо запрета в начале обработчика, нужно при выходе из него сбросить соответствующий флаг прерывания: GIFR.6=1; Потом разрешаем прерывания и выходим...

  3. По порядку...

    EECR-регистр управления EEPROM

    EEARL-младший байт адреса

    EEDR-регистр данных

    EEPE-для м16 это EEWE - читаем даташит, кто че делает...

    Компилятор выдает ошибки, потому что отдельные биты в нем не определены. Это можно сделать директивой #define...

    Можно записать как в файле внизу - так более прямолинейно и понятно. Код рабочий. Схемка на рисунке. Код ключа (в Протеусе) B8C52C. Будем менять его - будет ругаться терминал...

    Еще... Чет я не могу в Протеусе EEPROM залить. В итоге эти пляски с бубном для записи в него...

    post-20311-1202207251_thumb.jpg

    ds.txt

  4. Пишем в EEPROM, начиная с некоторого адреса (только не с первого), нужные байты ключа.

    В проге делаем примерно так:

    unsigned char EEPROM_read_8 (unsigned char Address) //функция чтения числа из EEPROM по заданному адресу
    {
    while (EECR & (1<<EEPE));
    EEARL= Address;
    EECR |= (1<<EERE);
    return EEDR;
    }
    ....
    далее
    for (j=1;j<6;j++) {
    if (EEPROM_read_8 (Nach_Address+j-1) != rom_code[0,j]) ALARM!!!; сравниваем побайтно зашитые коды
    						};
    ...

    Это теоретически. Но должно работать. Если нет, то меня поправят...

  5. Это бесколлекторные трехфазные двигатели постоянного тока...

    По-сути это синхронные движки, в которых постоянное магнитное поле формируется не обмоткой, а магнитом. Принципиальных отличий между ними и обычными асинхронниками в управлении нет. Меня интересуют конкретные цифры для подобных движков...

  6. Прошу прощения что вмешиваюсь, но у меня тоже вопрос по движку.

    Имеется шпиндельный двигатель Nidec от HDD Western Digital 1998г. По сути, это обычный 3-х фазный движок, обмотки соединены звездой. Омическое сопротивление обмоток около 1 Ом.

    Требуется запустить двигатель на частоту вращения около 1200-1500 об/мин. Работать будет почти вхолостую. По сему несколько вопросов:

    1. Как частота вращения таких движков зависит от частоты питающего напряжения, хотя-бы примерно.

    2. Обязательно ли запитывать обмотки синусоидами, однополярные прямоугольные импульсы с нужными фазами не пойдут? Где-то читал что можно...

    3. Какое примерно напряжение питания ключей нужно для данных частот (1200-1500 об/мин), чтобы не спалить обмотки (без резисторов в ключах)?

    4. Схема драйвера - вообще замечательно... Интересует управляемая силовая часть.

    Искал - везде общие фразы, которые и так понятны, но конкретных цифр нет. Если кто занимался подобным, помогите пожалуйста.

  7. B Протеусе целый проект с исходниками валяется для AT90S8515. Под мегу 16 переделывается элементарно. Только что попробовал - все работает. Лежит где-то там:

    C:\Program Files\Labcenter Electronics\Proteus 7 Professional\SAMPLES\VSM for AVR\One-Wire\NETWORK...

  8. Попробую объяснить...

    Когда вы работаете с дисплеем (или с любым другим устройством отображения информации), неизбежно встает задача по выбору наиболее простого и гибкого способа управления им. В частности, вы использовали дисплей на основе контроллера HD44780. Суть управления: в видеопамять контроллера нужно загрузить КОДЫ ASCII отображаемых символов. Разумеется в соответствии с определенным протоколом. Т.е., если мы хотим чтобы на дисплее отображалось

    "Hello", то должны отправить контроллеру последовательность чисел: 0x48 (H); 0x65 (e); 0x6C (l); 0x6C (l); 0x6F (o) с указанием места размещения символов. Если бы вы писали руками (не используя библиотечные функции) обмен с дисплеем, эти задачи (помимо необходимости соблюдения протокола обмена) оказались бы одними из самых важных. Теперь ближе к телу, в смысле к делу...

    У вас есть некая переменная temp1. Пусть она хранит число 142. Теперь определяемся - что же мы хотим видеть на дисплее. Например, в 1-й строке десятичное значение, во 2-й - двоичное. Для этого можно сделать так:

    unsigned char buffer_dec [3]; //объявляем  буфер из трех чисел, каждое не больше 255 (число символов ASCII) для десятичной записи 
    unsigned char buffer_bin [8]; //объявляем  буфер из восьми чисел, каждое не больше 255 для двочной записи 
    //заполняем буфера
    sprintf (buffer_dec, %3d, temp1); //в результате выполнения функции в буфере окажутся три числа {0x31; 0x34; 0x32}, что в кодах ASCII будет 1; 2; 3; - описатель d
    sprintf (buffer_bin, %8b, temp1); //буфере окажутся восемь чисел {0x31; 0x30; 0x30; 0x30; 0x31; 0x31; 0x31; 0x30}, что в кодах ASCII соответствует 1; 0; 0; 0; 1; 1; 1; 0; - описатель b 
    //устанавливаем курсор в начало первой строки
    lcd_gotoxy(0,0);
    //пересылаем контроллеру дисплея набор кодов отображаемых символов 
    lcd_puts(buffer_dec);
    //аналогично
    lcd_gotoxy(1,0); //начало второй строки
    lcd_puts(buffer_bin);
    //на дисплее видим:
    //			142
    //			10001110

    Примерно так... Для других описателей аналогично...

  9. Чет я не понимаю... Когда мы пишем DDRB.2, то влиять мы можем только на ОДИН пин порта В. Либо сделаем его входом (0), либо выходом (1). Какой смысл присваивать одному (!) биту регистра 16-и разрядное число (DDRB.2=0xFF)? Пусть даже компилятор сам запишет младший разряд. В дальнейшем, подобные записи могут привести к трудноуловимым глюкам...

  10. ...Далее отсчитываем временной промежуток 1.79 мс и читаем RB0.

    Повторяем 12 раз и получаем 2 байта в которых содержиться команда и адрес устройства.

    Последние 6 бит это команда.

    А где же оценка предыдущего состояния? Ведь кодировка бифазная...

  11. А... Я думал про тот вопрос все забыли. Это все понятно. Но есть "соль", иначе не спрашивал бы... Мощность проходящая в нагрузку определяется разностью фаз (углом) между фазой ротора генератора и фазой напряжения на нагрузке. Т.е. когда ротор генератора находится в положении, соответствующем максимальному значению ЭДС на холостом ходу, то напряжение на нагрузке отличается от максимального, даже если они соединены накоротко. Трудно сказать, что первично - угол определяющий мощность, или мощность определяющая угол. Но тем не менее, в спецлитературе (например ""Электромеханические переходные процессы") считется что угол определяет мощность. Используется эта разность фаз для расчета поведения ротора генератора в разных режимах работы - динамическая, статическая устойчивость, качания ротора при КЗ и т.д.

  12. Тока один вопросец, где взять ту самую таблицу символов ?

    У меня вот завалялась. Кодировка ASCII. Не всегда может совпадать с ANSI, поскольку существуют несколько модификаций последней - в зависимости от ПО компа. Но английские буквы точно совпадают...

    ascii.pdf

  13. Вот сделал так:

    И получил две ошибки...

    Неудивительно. в кейсах здесь лучше не символ принятый сравнивать, а его код, поскольку в приемном буфере коды лежат. Например:

    ...
    //Приняли некий символ, например "Z", что соответствует по таблице символов коду 0х7А. 
    //Тогда сравниваем так:
    ...
    //передаем в функцию принятое число
    ...
    case 0x7A:
    //что-то делаем...
    break;
    ...

  14. Ну а вобще для этого случая точность расчета сопротивления особой роли не играет, так как оно оценочного сравнения с сопротивлением резистора, поскольку в условии задачи конкретное число не требуется. Тут даже можно взять сопротивление в холодном состоянии, на конечный результат оно не повлияет.

    Смотрите. Зададимся равенством мощностей, потребляемых от сети цепями "лампочка" и "лампочка+сопротивление". Тогда U*U/Rламп=U*U/(R+R'ламп), откуда выведем значение сопротивления, при подключении которого потребляемая от сети мощность не изменится: R=Rламп-R'ламп, где R'ламп - сопротивление лампочки при получившемся токе. Его можно определить по ВАХ лампочки. Т.е. мы так можем подобрать такое добавочное сопротивление, что суммарная мощность не изменится, а иногда и увеличится. Поскольку в условии было R=1000 Ом, то для той же мощности необходимо отрицательное сопротивление лампочки, что невозможно. Но в общем случае все несколько по иному...

    Griffin:

    Goodefine, ну а как ишо то... магниты двигаються, в контуре возникает ток, нагрузка есть часть этого контура... вот и всё. По принципу это то же самое шо спросить как батарейка толкает ток в нагрузку...

    Ничего не понял...

  15. Поскольку резистор включен последовательно с лампой, то суммарное сопротивление будет сумой сопротивления резистора и лампочки.

    Нетрудно подсчитать что сопротивление нити составит 645 Ом, как видим оно меньше сопротивления резистора соотвественно суммарная мощность снизится.

    А с чего вы взяли что сопротивление 645 Ом? Лампочка это нелинейный элемент, сопротивление которого зависит от тока (поскольку от него зависит температура спирали). Чтобы ответить на этот вопрос (о сопротивлении лампочки) надо знать ее ВАХ...

  16. Механика - собственно, конструкция в материальном выражении (узлы поворота, шестеренки, направляющие и т.д.).

    Электрика - совокупность эл.двигателей и вспомогательных цепей.

    Управляющая электроника - управляющие драйвера (не в понимании ОС, а электроники - некие устройства, позволяющие совершать некоторые элементарные воздействия на двигатель по внешнему сигналу).

    Может возникнуть одна проблема - поскольку камера будет передавать видеопоток, то вклинится в тот-же USB, для управления не получиться. Выход - использовать USB хаб внутри конструкции. Минус - относительно дорого, да и изучить интерфейс USB не самая простая задача. Либо управлять по RS-232 (или другому). Но такое решение не элегантно :rolleyes: , хотя самое простое. У вас какая концепция?

  17. На ПЦТВ. Пины по контрастности, яркости и т.д. нужны для подключения регулировочных резисторов (на общий провод). Вместо блок схемы лучше взять схему телевизора 3УСЦТ - там все наглядно. Заодно и синхродетектор можно увидеть. Плюс уровни и формы сигналов...

  18. Первое, что приходит на ум: цепляем вход внешних прерываний на кадровые и строчные синхроимпульсы. Делаем по-очереди АЦП сигналов Er, Eg, Eb (берем из модуля цветности). Анализируем соотношение цветов и выдаем управляющее воздействие с нужной инерцией. Верх определяем по количеству строк после кадрового строба, бока - по некоторому временному интервалу от строчных синхроимпульсов. Все сигналы, разумеется, придется нормировать. Если хочется анализ с ДВД чтоб не лезть в ТВ, лучшим вариантом будет применение простейшего модуля цветности для планарного кинескопа (у нас новый МЦ -PAL/SECAM- под 3УЦТ около 15у.е.), можно без выходных каскадов и СМРК. Иначе DSP...

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