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

Nilas

Members
  • Постов

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

  • Посещение

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

  1. Проблема решена. Убрал static и без extern-а стало все работать.
  2. Она выше определена для оперативности изменения дефайном. В данном случае: #define DATA_SIZE 2. Массив uint16_t nast_byte[DATA_SIZE] (в программе data.nast_byte[]) предназначен для блочного копирования из flash и eeprom. В другом Си файле массив пока не используется.
  3. Здравствуйте всем! Есть хидер файл (file.h), где присутствует union: static union _nnn { uint16_t nast_byte[DATA_SIZE]; struct { int16_t data1; int16_t data2; }; } data; В пределах того же Си файла (file.c) все работает. При создании другого Си файла (new.c (new.h тоже создан)) и использовании переменных структуры в функциях они (переменные) не читаются (выводит нули). file.h подключен к new.c. Объявлен extern: extern union _nnn; . Компилируется без ошибок. Без extern-а тоже компилируется без ошибок. Есть ли возможность подцепить union к другому Си файлу? или все же придется писать функции в том же Си файле (file.c). Параметры используются в разных функциях new.c и есть функция использующая до 8 параметров структуры. p.s. Немножко ошибся с темой, поиск выдал для union эту тему. Пишу для AVR, хотя это наверное действительно и для STM Сейчас заметил, что с extern-ом выдается предупреждение "warning: useless storage class specifier in empty declaration"
  4. Кольцо желтого цвета. Расчет для максимального режима: В таких режимах мне и не понадобится работать. Более ходовые будут до 18В 7А: А вот в котором тестировал:
  5. Дело было не в бобине в фильтре. Нашел кольцо 23х14х7,5 с намотанной двойным проводом по 1мм каждый, индуктивность 25мкГн. Поставил дополнительную керамику и дело пошло. Подцепил нагрузку и довел ток до 10А. Радиатор с охлаждением маленьким вентилятором еле теплый, но дроссель с диодной сборкой (100В,20А) сильно греются. Поставил 10В 6А, дроссель где-то градусов 65 (на ощупь). хотя по расчетам программой "старичка" должно быть меньше. На следующей смене буду пробовать ставить старый трансформатор управления, а то этот вверх ногами на проводках стоит.
  6. Поменял трансформатор управления. Прилепил навесным монтажом. Результат тот же. Также греются транзисторы. Идет помеха по питанию и похоже она виновник всех этих выбросов. При увеличении нагрузки начинает сбоить МСР4725 (ЦАП). Первая - питание ТЛ-ки без нагрузки. Вторая - под нагрузкой 0,8А. Третья - под нагрузкой минус до шунта (все измерения общий после шунта). При отключенном ШИМ питание ТЛ-ки нормальное (16,8 В питается только от дежурки). После 7812 с дежурки тоже наблюдается помеха. RC цепочка на первичке 51 Ом+2n2
  7. К выпаянному трансформатору подпаял только входные обмотки. Другая часть висит в воздухе, т.е без нагрузки.
  8. Подпаял входную часть трансформатора к плате и снял осциллограммы. На выходе ТЛ-ки На коллекторах и общем на трансформаторе: Причем, если менять обмотки на коллекторах, меняются и уровни. Т.е. транзисторы ВС817-е целые. Выходные базовые: Самое интересное ПОС: На базовых обмотках такого нет. Такой же звон был на выходе ТЛ-ки при запаянном трансформаторе.
  9. Замеряю на выпаянном трансформаторе. Достал другой прибор. Результаты: 3,23 мГн, 0,22 мГн, 13 мкГн. Приборы самодельные, калибровка примерная. Думаю, если бы замкнуло, на других обмотках была бы маленькая индуктивность. Размеры бокового магнитопровода 5х2мм, общая высота 15мм, длина(или ширина) 16,5 мм.
  10. Проверил. Все правильно, только первичка выходного трансформатора наоборот. Входные по 3,5 мГн, базовые по 561мкГн, ПОС -0,66мкГн (показывает с минусом). Снял внешнюю изоляцию: на ПОС тройным проводом намотано 2 витка. Замыкать там нечему.
  11. Обмотку ПОС проверю. Без постоянки можно увеличить картинку за счет уменьшения В/дел. А так присутствует постоянное напряжение.
  12. Не перевернутая, режим АС. Щупом на базе транзистора ВС817. Заметил, что при регулировке напряжения без нагрузки не наблюдал изменения ширины импульса, как бы менялась амплитуда. Или может быть из-за переделанной вторички и нетронутой первички ширина меняется в незначительных пределах.
  13. При выпаянных выходных ключах по форме сигнала на выходах трансформатора можно проверить? В каких пределах должна быть индуктивность? Обратная связь с выхода через делитель на TL494.
  14. На обоих базах сигнал одинаковый и повторяют форму с коллекторов на низкой стороне. Обвязка целая. Сгорел удачно.
  15. Здравствуйте всем! Собирал ИБП и столкнулся со следующей проблемой : выходные транзисторы начинают нагреваться уже при токе в 1А. Элементы и силовую часть схемы использовал со старого АТХ (возможно был не рабочий, уже с частью выпаянных элементов, и выходной трансформатор может быть не от него). Схему использовал эту (управление у меня тоже сделано на МСР4725): Напряжение регулируется нормально (0-30В), но при подключении нагрузки начинают греться транзисторы. Выходной трансформатор не разбирая, манипуляциями с обмотками сделал на большее выходное напряжение. При включении с нагрузкой в 1А на выходе TL494 (на базе транзистора) наблюдается следующий сигнал: На коллекторе и на базах выходных ключей: На вторичной обмотке (рис.2) примерно такой сигнал: При экспериментах сгорел (удачно, не сгорел предохранитель и работала дежурка) верхний ключ (на выходе БП было 0В). На выходе ТЛ увидел нормальный прямоугольный сигнал, на коллекторе был "треугольник" (рис.1). Заменил на рабочие б/у 13007 вместо Алишных 13009. Нагреваться стало меньше, уже при добавлении на 300мА от предыдущего. Дежурку полностью взял с донора АТХ. Дроссель намотал на кольце черного цвета (тоже с АТХ), индуктивность получилась где-то 470мГн. Количество витков: сколько влезло. СМД транзисторы ВС817-40, конденсаторы (по маркировке) 330мкФ. На время экспериментов сбоку на радиатор был приделан на проволоку (красную) вентилятор (30х30мм). Думаю на согласующий трансформатор, б/у-шный все таки. Прошу совета куда рыть. Под спойлером фото БП и печатная плата.
  16. Здравствуйте всем! Недавно мне отдали такую штуку как пульт управления НПО "ПИОНЕР" ТМ-8_5 от блока охранной сигнализации. Стоит в нем микроконтроллер PIC16F684. И чтобы блок не лежал без дела, решил сделать на его базе электронный замок. А так как программирование на ассемблере начинал с PIC-ов, решил использовать блок без всяких переделок. Порывшись в интернете, нашел статью "Электронный замок с ключём i-Button (DS1990A) на PIC16F627A" Ссылка. Взяв за основу прошивку ds1990a.asm, сделал замок на 41 ключ. Аппетит, как говорится, приходит во время еды, и решил дополнить его еще и копировщиком ключей. Поиски в интернете привели меня к дубликатору ключей на ардуино ссылка. Взяв его алгоритм, дополнил программу копировщиком Dallas-совместимых ключей . А так как в нашей местности стоит много домофонов МЕТАКОМ, сделал чтение (не запись) и этих ключей. Для ключей Метаком и для лучшей записи Dallas-ключей подтягивающее сопротивление было понижено до 470 Ом. Так же были запаяны в родные отверстия штыри для программирования микроконтроллера PIС. Что бы использовать режим дублирования, была использована еще одна доработка - убрана пружинка с кнопки SB1, которая в родной прошивке фиксировала факт снятия крышки. Мною эта кнопка была использована для перехода в режим копирования ключей. Реле на 12 вольт подключается к выходам +12V и КЛ (не забывая параллельно воткнуть диод). Работа устройства. Светодиод "Питание" в режиме ожидания горит зеленым светом. При считывании ключа в случае не найденного кода загорается красным цветом со звуковой сигнализацией. Если код верный - тухнет и загорается светодиод "КЛЮЧ". Срабатывает реле на 4 секунды. При подаче питания на прибор с замкнутыми контактами "С" через 5 секунд происходит стирание всех ключей записанных в памяти EEPROM. Считывание еще не зарегистрированного ключа с нажатой кнопкой "КЛЮЧ" (при нажатии загорается светодиод "КЛЮЧ"), происходит запись кода в память. Режим копирования ключа включается кнопкой SB1. После нажатия включается светодиод "6" с двойным пиликанием, затем загорается светодиод "7", тем самым приглашая нас приткнуть дублируемый (исходный) ключ. При безошибочном прочтении ключа включается зеленим "ПИТАНИЕ", иначе красным. После прочтения ключа включается светодиод "8". Прикладываем ключ, который надо записать. Если код ключа совпадает, то загорается светодиод "КЛЮЧ" и запись не происходит. Если не совпадает, то определяется тип ключа и загорается соответствующий светодиод (1 - RW-1990.1, 2 - RW-1990.2, 3 - неизвестный тип DS1990, 4 - TM-2004). При успешной записи загорается зеленым светодиод "ПИТАНИЕ", иначе горит красным. Затем снова загорается "8" и можно записывать следующий дублируемый ключ с тем же кодом. Выход из режима дублирования - кнопка "КЛЮЧ". Устройство было испытано с ключами Метаком и купленными на Алиэкспресс ключами RW-1990A. Все читалось и записывалось успешно. Все файлы в архиве Zamok_na_iButton_TM-8_5.rar
  17. Понял почему были не те данные. В setFont(Terminal6x8); Terminal6x8 является указателем на массив (содержит его адрес), но если обращаться к отдельному его элементу, то надо указывать его адрес : cfont.height = (pgm_read_byte(&(font[1]))); Сейчас идут нужные данные из flash памяти. Буду дальше ковырять код Видимо сам догадывается, раз всё компилиться и работает
  18. fontdatatype определено дефайном как const uint8_t. PROGMEM указывает на flash память.
  19. Здравствуйте всем! В продолжение темы: третий день бьюсь с чтением из памяти даных. Уже и раскомментировал его, и вроде должен работать, но выдает не то, что надо. Уже всякого начитался в интернете, но в симуляции АВР Студии берутся не те данные, которые должны идти дальше в программе. Вот так сейчас: Компилируется без ошибок. Не могу понять, где не так делаю.
  20. Получается, что при вызове функции берем адрес переменной _swap(&x0, &x1) В самой функции адрес "перекочевывает" в указатель переменной void _swap(uint16_t *a, uint16_t *b) И в самой функции оперирует с переменными через адресацию. Сейчас все нормально скомпилировалось! и в коде, и в голове
  21. Переделал на void _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { _orientCoordinates(*x0,* y0); _orientCoordinates(*x1, *y1); if (x1 < x0) {_swap(*x0,* x1);} if (y1 < y0) {_swap(*y0, *y1);} Теперь ругается на каждый аргумент: .c:292:24: error: invalid type argument of unary '*' (have 'uint16_t') Совсем уже запутался. Понимаю что указатель это адрес переменной, но вот в использовании в функциях...
×
×
  • Создать...