Добавлено: Пн окт 26, 2009 17:21:21
Ну так что, мужики, никто не подскажет че с моим COM творится?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
А это для чего нужен RC фильтр? для каких цепей? для светодиодов не надо, а для чего тогда нужен ШИМ с таким аналоговым обвязом?Для ШИМ часто нужен простейший RC фильтр чтобы из прямоугольного получить постоянное напряжение
Вопрос к Вам. В программе фигурируют строки-=MindHunteR=- писал(а):Ну так что, мужики, никто не подскажет че с моим COM творится?
Теперь сам вопрос, Вы упомянули только переменную val, а где pwm,pwm_ctr? Насколько йа понимайу, то наличие этих переменных обязательно. Иначе просто будет каша лезть...val=getadc(0);
// тут еще делается работа с переменными - убрал чтоб не мешалась
// ибо прога пашет супер, только глючит вывод на терминал
// ну и выводим в терминал
printf("%d %d %d \n",pwm,pwm_ctr,val);
Они разумеется есть. Видите я там написал:Meteor писал(а):Вопрос к Вам. В программе фигурируют строки-=MindHunteR=- писал(а):Ну так что, мужики, никто не подскажет че с моим COM творится?Теперь сам вопрос, Вы упомянули только переменную val, а где pwm,pwm_ctr? Насколько йа понимайу, то наличие этих переменных обязательно. Иначе просто будет каша лезть...val=getadc(0);
// тут еще делается работа с переменными - убрал чтоб не мешалась
// ибо прога пашет супер, только глючит вывод на терминал
// ну и выводим в терминал
printf("%d %d %d \n",pwm,pwm_ctr,val);
Код: Выделить всё
// тут еще делается работа с переменными - убрал чтоб не мешалась
// ибо прога пашет супер, только глючит вывод на терминал Теперь вижу-=MindHunteR=- писал(а):Они разумеется есть. Видите я там написал:
...
У меня на 8535-й меге, при установки UDRE, при разрешенной передаче (Ваш кстати случай) тоже лезло что попало, пока не стал запрещать генерацию прерываний по опустошению буфера или передатчика. Попробуйте пропишите ему команду по закрытию генерации одного из них или их обоих. Может и для Вас подойдет.-=MindHunteR=- писал(а):Только в терминал шлется бред....
То есть после prinft писать TXEN=0 и UDRE бит в UDR тоде обнулить.Meteor писал(а):Теперь вижу-=MindHunteR=- писал(а):Они разумеется есть. Видите я там написал:
...Теперь другой вопрос. У меня на 8535-й меге, при установки UDRE, при разрешенной передаче (Ваш кстати случай) тоже лезло что попало, пока не стал сбрасывать UDRE или TXEN. Попробуйте пропишите ему команду по закрытию генерации одного из них или их обоих. Может и для Вас подойдет.-=MindHunteR=- писал(а):Только в терминал шлется бред....
PS. У меня слежка за пакетом возложена на счетчик, он тупо считает число переданных байт и затыкает глотку этому болтуну.
Да, я делаю именно так. Иначе этот гад не может остановиться. У меня в обработке по пустому буферу читает из ОЗУ с инкрементом. После того как все данные переданы надо его тормозить или подготовить новую порцию данных. Иначе он, @, читает и отправляет то что не надо ни читать ни отправлять.-=MindHunteR=- писал(а):То есть после prinft писать TXEN=0 и UDRE бит в UDR тоде обнулить.
И перед prinft присвоить обоим 1?
Да, ее нет.Meteor писал(а): У Вас, как я понимаю, ее нет. Время на передачу пакета может быть больше чем просто время вызова функции printf.
Повторяю как поборол эту беду. Зная что мой пакет состоит из К байт и имея свободный таймер/счетчик (Т0/Т1) с его выводами. Настраиваю таймер на счет К-1 внешних импульсов (для Т0) или К импульсов (для Т1). В обработке по пустому буферу передатчика (UDRIE=1), кроме записи новых данных, формирую инкремент счетчика (просто импульс на входе счетчика). В прерывании таймера по совпадению прописываю запрет работы УАППа. И спокойно ухожу на работу с МК. Когда приходит время передачи, обнуляю таймер, запускаю УАПП и фсйо никаких сбоев. Для плавающих длин передачи, формируемых на разных участках кода, можно задавать новое значение регистра сравнения. Или при Т1 например задействовать оба регистра OCR1A и OCR1B, прописывая свои длины. Таким образом у меня получались пакеты разной длины, было удобно передавать короткие пакеты на старте по 6 байт, и длинные пакеты по 14 байт.(чтоб далеко не уползали по частотам). Если есть такая возможность у Вас - то карты в руки.-=MindHunteR=- писал(а):Эмммм, как бороться со временем передачи? Если оно все время разное, то по простому не выйдет......
Теперь дошло.Meteor писал(а): Повторяю как поборол эту беду.... Если есть такая возможность у Вас - то карты в руки.
Пожалуйста.-=MindHunteR=- писал(а):Теперь дошло.
Буду пробовать. Спасибо!