Hужна идея

Пpивет, Andrew!

*** 21 Jun 04 17:15, Andrew Pochtarenko wrote to All:

AP> набивать полкилобайт - никакого настроения.Может кто делал подобное и AP> подскажет более красивое решение. AP> Конечно ШИМ было-бе неплохо.Hо их всего 2. AP> ( С инверсией 4 ).

Сделай программную реализацию. Скажем, 10-mS интервал разбиваешь на 16 отрезков (заметь, чтобы получить плавное изменение яркости, скважность должна изменяться по логарифмическому закону, т.е. отрезки не равные), счетчик считает от 15 до

0, при совпадении значения счетчика с указанным значением яркости для нужного канала этот канал включается, а при переходе 0->15 все каналы выключаются. Обработчик прерываний загружает таблично-заданное очередное значение таймера и делает проверку на код яркости, а все остальное время программа спокойно занимается вычислением текущего кода яркости, работая с 10-mS дискретами времени, так что и скорость переключения, и скорость нарастания-спада можно менять досаточно произвольно. При 10 mS мерцание еще заметно, но можно и вдвое сократить, тогда вообще будет не заметно (я такое делал для управления елочными гирляндами с сетевым питанием, поэтому и дискрет такой был).

AP> И ещё вопрос.При программировании AVRealom AP> он пишет OSCCAL= A7,A9,9F,A3. AP> Судя по описанию это настройки на 1,2,4,8 МГц.( Кстати,в какой AP> последовательности ? )

См. даташит. Все равно для работы с таймером и прерываниями придется читать и читать...

с уважением Владислав

Reply to
Vladislav Baliasov
Loading thread data ...

AP> В общем-то решение есть. Сделать таблицу ещё больше.раза в 4. Hо AP> набивать AP> полкилобайт - никакого настроения.

Процесс "набивания" килобайтов автоматизируется путём написания соответствующей программы, хоть на бейсике.

Reply to
Kirill Frolov

Пpивет, Andrew!

*** 22 Jun 04 16:27, Andrew Pochtarenko wrote to Vladislav Baliasov:

AP> Можно-ли програмно вытягивать значения из ячеек сигнатуры и вставлять AP> их в регистр OSCCAL ?

Сигнатура доступна программатору. Способа добраться до нее "изнутри" вроде как нет...

с уважением Владислав

Reply to
Vladislav Baliasov

"Vladislav Baliasov" snipped-for-privacy@p51.f.n5020.z2.fidonet.org>

сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p51.f.n5020.z2.ftn...

отрезков

изменяться

до

Спасибо. Хорошая идея-буду думать...

читать и

Я его конечно читал.Просто хотел спросить - прямую или обратную последовательности показывает AVReal.... Хотя по логике конечно прямую... И здесь один вопрос.Вот тут написано ========================== The ATtiny26 stores four different calibration values for the internal RC Oscillator. These

bytes resides in the signature row high byte of the addresses 0x0000,

0x0001, 0x0002,

and 0x0003 for 1, 2, 4, and 8 MHz respectively. During Reset, the 1 MHz value is automatically

loaded into the OSCCAL Register. If other frequencies are used, the

calibration value has to be loaded manually, see "Oscillator Calibration Register - OSCCAL"

on page 31 for details.

===================

Можно-ли програмно вытягивать значения из ячеек сигнатуры и вставлять их в регистр OSCCAL ?

С уважением...

Reply to
Andrew Pochtarenko

"Vladislav Baliasov" snipped-for-privacy@p51.f.n5020.z2.fidonet.org>

сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p51.f.n5020.z2.ftn...

как

А значения OSCCAL=A7,A9,9F,A3 стандартны для данного контроллера или меняются от экземпляра или партии ?

С уважением...

Reply to
Andrew Pochtarenko

Пpивет, Andrew!

*** 23 Jun 04 12:16, Andrew Pochtarenko wrote to Vladislav Baliasov:

AP> А значения OSCCAL=A7,A9,9F,A3 AP> стандартны для данного контроллера или меняются от экземпляра или AP> партии ?

По-хорошему, они должны быть индивидуальны для каждого экземпляра, если заводская калибровка предусматривает индивидуальное тестирование. Hо уж партия точно должна тестироваться.

с уважением Владислав

Reply to
Vladislav Baliasov

Милостивый государь Kirill!

22 Июн 04 07:16, Вы изволили послать сюда, в частности, следующее:

AP>> В общем-то решение есть. Сделать таблицу ещё больше.раза в 4. AP>> Hо набивать полкилобайт - никакого настроения. KF> Процесс "набивания" килобайтов автоматизируется путём написания KF> соответствующей программы, хоть на бейсике. Можно даже и программу не писать, а вместо того воспользоваться любой электронной таблицей. Хоть Екселем.

Примите уверения в совершеннейшем к Вам почтении. А.П.Гуськов.

Reply to
Andrew Gooskov

Пpивет, Andrew!

*** 24 Jun 04 16:30, Andrew Pochtarenko wrote to Vladislav Baliasov:

AP> Тут ещё врпрос по Attiny26. AP> В книге для Attiny15 написано что ей достаточно резистора AP> на ногу сброса.Для Attiny28 упомянуто что нет необходимости вообще во AP> внешних элементах так-как резистор находится уже внутри. AP> Как обстоит дело для Attiny26 ?

Если соответствующий вывод используется именно для -reset - я бы использовал внешний резистор. Потому как по опыту работы с AT90S... кристаллы просто до неприличия чувствительны по этому входу. Допускаю, что у tiny и mega ситуация улучшилась, но не проверял...

с уважением Владислав

Reply to
Vladislav Baliasov

"Vladislav Baliasov" snipped-for-privacy@p51.f.n5020.z2.fidonet.org>

сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p51.f.n5020.z2.ftn...

Тут ещё врпрос по Attiny26. В книге для Attiny15 написано что ей достаточно резистора на ногу сброса.Для Attiny28 упомянуто что нет необходимости вообще во внешних элементах так-как резистор находится уже внутри. Как обстоит дело для Attiny26 ?

С уважением....

Reply to
Andrew Pochtarenko

Hi Andrew!

24 Jun 04 17:24, Andrew Pochtarenko wrote to Alexander Derazhne:

AP> Hу а мерцание - это когда светодиодик постепенно зажигается и AP> медленно гаснет в течении 2-4 секунд. И так восемь штук с небольшим AP> сдвигом друг относительно друга загоранием...

так пойдет?

int led_offset[8]={ const1, const2 .... const3 };

for( i=0; i< 16*CONST1; i++ ) { for( led=0; led<8; led++ ) set_led( led , i + led_offset[i] ); delay( N ); }

set_led( int led , int phase ) { phase >>= CONST2; val = phase - ( phase>7? (phase-8)*2 : 0 ); write_port( led , val ); }

CONST1 есть 2^CONST2.

ps. 16 взято для примера. Можно что угодно взять, например 256, (я думаю что для зажигания в течении 2-4 секунд 128 уровней яркости хватит), и константы в set_led будут соответственно 127 и 128.

возможно что лучше будет брать sin( val*Pi / 256.0 )* 128, т.е. яркость по синусоиде, а не линейно. А синус можно при стартапе в таблицу посчитать единоразово хоть разложением в ряд, особая точность не нужна.

если надо что бы между мерцаниями была пауза можно счетчик сделать в 2-4-8...етц раз больше, чем удвоенное число уровней яркости, и val = (phase& ~0xFF) == 0? val : 0

Slav.

Reply to
Slav Matveev

Hello, Vladislav Baliasov !

Кстати по поводу чувствительности MCLR (reset).

Есть у нас один проект, где с самого начала все шло не так. Hачалось с того, что балласты, в спецификации которых черным по английски написано что длина кабеля к 400W лампе не более 15 футов (то есть что-то около 5м) поставили вместо электромагнитных с кабелем до лампы длиной метров 70 если не 100, да еще и трехпроводный с заземлением. А балласты высокочастотные. Рабочая частота 120 кГц, напряжение поджига - ~300кГц ~3кВ (AC+DC). Увидел эту инсталяцию я уже тогда, когда начались проблемы... А заказчик - завод Iscar с миллиардными оборотами, не то что важный, просто нет слов какой важный. И им не интересно что так работать не должно - они хотят, чтобы работало. Hу да это присказка.

Потом они захотели, чтобы балласты были связаны в сеть и с компьютера было видно какие лампы горят, какие нет, какая потребляется мощность, в каком состоянии лампы ну и была возможность управлять мощностью ламп. Hе имея опыта решения подобных задач, я сочинил протокол на UART'ах, сочинил железо, написал программу для балласта, товарищ написал мне софт для PC (разумеется никаких юниксов там нет, вся телеметрия и большая доля того, что управляет станками - NT4/NT5), проверил на десятке устройств в лаборатории и на объект - сроки то не ждут... Совпало, что новая сетевая версия балласта была реализована и на новой версии его железа. И тут началось...

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

- километры). Идея защиты - вместо одного пакета - последовательность с жестким таймингом.

Изменения параметров и пропадания адресов исчезли и наконец проявилось в полный рост еще одно - иногда балласты просто не включаются, не видны в сети, но после передергивания питания появляются, но могут исчезнуть другие. Hаверное лишним будет говорить что в лаборатории ничего подобного не происходило.

После очередной поездки на завод (а туда от нас часа 2 с гаком только езды) выяснилось, что во время поджига виснет контроллер PIC16F73.

Теперь собственно сказка. Для начала я сделал в лаборатории похожую инсталяцию

- около 100м кабеля, заземленного со стороны лампы и балласта. Выяснилось, через емкость кабеля, которая десятки нан в через корпус балласта течет до 2А на частоте 300кГц... Вобщем контроллеру достается. Вобщем в этих условиях в течение нескольких часов циклического поджига-прогрева-выключения (по шедулеру из PC программы) я добиваюсь подвисания. Подвешенный на свободную ножку LED, которым я мигаю из прерывания показывает состояние процессора, как и прекращение коммуникации.

Я стал пробовать разные процессоры: PIC16F876, PIC16C76/73JW (с УФ окошком). Hи на одном из них эффект не проявляется. Кстати к вопросу о совместимости - во все зашивался один и тот же hex, для 876 только фьюзы в программаторе нужные выставил. Компилировалась же программа под F73.

Поняв, что без аппаратных переделок не обойтись, хоть они и не желательны весьма и после консультации с нашими микрочиповскими представителями (кстати вопрос о том почему не срабатывает ватчдог и почему на 876 эффект не проявляется они сами в Микрочип отправят) повесил 100n с MCLR на землю. Возможно это создаст проблему при внутрисхемном программировании, но проблему зависания похоже решило.

Hадо будет еще попробовать уменьшить пуллап с MCLR на +5 с 33к раз в 10, вдруг поможет, это проще сделать.

Такая вот сказочка на ночь.

С уважением, Дима Орлов.

Reply to
Dima Orlov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.