Страница 70 из 628

Добавлено: Пн окт 26, 2009 17:21:21
-=MindHunteR=-
Ну так что, мужики, никто не подскажет че с моим COM творится?

Добавлено: Пн окт 26, 2009 17:47:25
Arlleex
А какие вообще выводы ATMega16 задействованы как ШИМ? там их 4, это я знаю, но только как они называются - хз. и номера выводов. Подскажите плиз, будет очень хорошо.

Добавлено: Пн окт 26, 2009 19:30:10
GP1
а открыть ДШ полистать, слабо?
а иногда полезно

ЗЫ: ОС0 - РВ3
ОС1B - PD4
OC1A - PD5
OC2 - PD7

Добавлено: Пн окт 26, 2009 20:09:36
Arlleex
а на них можно прямо светодиоды подключить через резисторы?
Для ШИМ часто нужен простейший RC фильтр чтобы из прямоугольного получить постоянное напряжение
А это для чего нужен RC фильтр? для каких цепей? для светодиодов не надо, а для чего тогда нужен ШИМ с таким аналоговым обвязом?

Добавлено: Пн окт 26, 2009 20:15:11
GP1
светодиоды через резисторы повесить можно,главное не превысиь макс.ток 40 мА на вывод, и 200 мА на корпус.
интегратор нужен... да хз для чего я с таким не сталкивался, а нет вру, подключал стрелочный прибор, и пока не поставил RC-цепь, показывал цену на дрова в прошлом году.
для светодиода интегратором служит глаз человека.

Добавлено: Пн окт 26, 2009 20:20:29
Arlleex
200мА на корпус это как? на порт чтоль? :))
понятно, спасибо)

Добавлено: Пн окт 26, 2009 20:23:25
GP1
не на порт, а через выводы Vcc или GND

Добавлено: Пн окт 26, 2009 20:27:10
Arlleex
а почему так? никогда о таком не слышал...

Добавлено: Пн окт 26, 2009 20:29:04
GP1
какие твои годы :wink:
курите ДШ :beer:

Добавлено: Вт окт 27, 2009 22:44:07
Meteor
-=MindHunteR=- писал(а):Ну так что, мужики, никто не подскажет че с моим COM творится?
Вопрос к Вам. В программе фигурируют строки
val=getadc(0);
// тут еще делается работа с переменными - убрал чтоб не мешалась
// ибо прога пашет супер, только глючит вывод на терминал

// ну и выводим в терминал
printf("%d %d %d \n",pwm,pwm_ctr,val);
Теперь сам вопрос, Вы упомянули только переменную val, а где pwm,pwm_ctr? Насколько йа понимайу, то наличие этих переменных обязательно. Иначе просто будет каша лезть...

Добавлено: Вт окт 27, 2009 22:46:23
-=MindHunteR=-
Meteor писал(а):
-=MindHunteR=- писал(а):Ну так что, мужики, никто не подскажет че с моим COM творится?
Вопрос к Вам. В программе фигурируют строки
val=getadc(0);
// тут еще делается работа с переменными - убрал чтоб не мешалась
// ибо прога пашет супер, только глючит вывод на терминал

// ну и выводим в терминал
printf("%d %d %d \n",pwm,pwm_ctr,val);
Теперь сам вопрос, Вы упомянули только переменную val, а где pwm,pwm_ctr? Насколько йа понимайу, то наличие этих переменных обязательно. Иначе просто будет каша лезть...
Они разумеется есть. Видите я там написал:

Код: Выделить всё

    // тут еще делается работа с переменными - убрал чтоб не мешалась 
    // ибо прога пашет супер, только глючит вывод на терминал 
Вот там с ними идет работа. Просто она идет нормально, ногами МК дергает планово, работу выполняет идеально.
Только в терминал шлется бред....

Добавлено: Вт окт 27, 2009 23:03:35
Meteor
-=MindHunteR=- писал(а):Они разумеется есть. Видите я там написал:
...
Теперь вижу
-=MindHunteR=- писал(а):Только в терминал шлется бред....
У меня на 8535-й меге, при установки UDRE, при разрешенной передаче (Ваш кстати случай) тоже лезло что попало, пока не стал запрещать генерацию прерываний по опустошению буфера или передатчика. Попробуйте пропишите ему команду по закрытию генерации одного из них или их обоих. Может и для Вас подойдет.
PS. У меня слежка за пакетом возложена на счетчик, он тупо считает число переданных байт и затыкает глотку этому болтуну.

Добавлено: Вт окт 27, 2009 23:09:48
-=MindHunteR=-
Meteor писал(а):
-=MindHunteR=- писал(а):Они разумеется есть. Видите я там написал:
...
Теперь вижу
-=MindHunteR=- писал(а):Только в терминал шлется бред....
Теперь другой вопрос. У меня на 8535-й меге, при установки UDRE, при разрешенной передаче (Ваш кстати случай) тоже лезло что попало, пока не стал сбрасывать UDRE или TXEN. Попробуйте пропишите ему команду по закрытию генерации одного из них или их обоих. Может и для Вас подойдет.
PS. У меня слежка за пакетом возложена на счетчик, он тупо считает число переданных байт и затыкает глотку этому болтуну.
То есть после prinft писать TXEN=0 и UDRE бит в UDR тоде обнулить.
И перед prinft присвоить обоим 1?

Добавлено: Вт окт 27, 2009 23:31:47
Meteor
-=MindHunteR=- писал(а):То есть после prinft писать TXEN=0 и UDRE бит в UDR тоде обнулить.
И перед prinft присвоить обоим 1?
Да, я делаю именно так. Иначе этот гад не может остановиться. У меня в обработке по пустому буферу читает из ОЗУ с инкрементом. После того как все данные переданы надо его тормозить или подготовить новую порцию данных. Иначе он, @, читает и отправляет то что не надо ни читать ни отправлять. :oops:
Уточню, у меня слежка за числом байт внутренняя и потому я точно знаю где и когда его тормозить. У Вас, как я понимаю, ее нет. Время на передачу пакета может быть больше чем просто время вызова функции printf.

Добавлено: Вт окт 27, 2009 23:46:39
-=MindHunteR=-
Meteor писал(а): У Вас, как я понимаю, ее нет. Время на передачу пакета может быть больше чем просто время вызова функции printf.
Да, ее нет.
Эмммм, как бороться со временем передачи? Если оно все время разное, то по простому не выйдет...... :(

Добавлено: Ср окт 28, 2009 00:24:36
Meteor
-=MindHunteR=- писал(а):Эмммм, как бороться со временем передачи? Если оно все время разное, то по простому не выйдет...... :(
Повторяю как поборол эту беду. Зная что мой пакет состоит из К байт и имея свободный таймер/счетчик (Т0/Т1) с его выводами. Настраиваю таймер на счет К-1 внешних импульсов (для Т0) или К импульсов (для Т1). В обработке по пустому буферу передатчика (UDRIE=1), кроме записи новых данных, формирую инкремент счетчика (просто импульс на входе счетчика). В прерывании таймера по совпадению прописываю запрет работы УАППа. И спокойно ухожу на работу с МК. Когда приходит время передачи, обнуляю таймер, запускаю УАПП и фсйо никаких сбоев. Для плавающих длин передачи, формируемых на разных участках кода, можно задавать новое значение регистра сравнения. Или при Т1 например задействовать оба регистра OCR1A и OCR1B, прописывая свои длины. Таким образом у меня получались пакеты разной длины, было удобно передавать короткие пакеты на старте по 6 байт, и длинные пакеты по 14 байт.(чтоб далеко не уползали по частотам). Если есть такая возможность у Вас - то карты в руки.

Добавлено: Ср окт 28, 2009 00:28:52
-=MindHunteR=-
Meteor писал(а): Повторяю как поборол эту беду.... Если есть такая возможность у Вас - то карты в руки.
Теперь дошло.
Буду пробовать. Спасибо! :beer:

Добавлено: Ср окт 28, 2009 00:38:56
Meteor
-=MindHunteR=- писал(а):Теперь дошло.
Буду пробовать. Спасибо! :beer:
Пожалуйста.
Если хотите могу прислать прогу, только я приверженец ассемблера и прога есно на асме. В студии можно посмотреть как она работает. :tea:

Добавлено: Ср окт 28, 2009 00:42:56
-=MindHunteR=-
Ох каюсь. Асемблер я подзабыл... Хотя может Ваша прога будет хорошим поводом повспоминать, особенно если там есть комменты...

Добавлено: Пт окт 30, 2009 17:25:37
*Trigger*
Файл прошивки, выложенный здесь уже скомпилмрован?