есть задача МК должен менять вольтаж через ШИМ в соответствии со значениями абсолютного энкодера.задача эта давно всплыла,и когда-то один мой знакомый мне начинал помогать в её реализации.успел нарисовать мне схему,сказать через что прошивать и +\- на этом наши пути разошлись.теперь я решил закрыть задачу,и сел 1 января разбираться в этой сфере.итак,что имею на сегодняшний день:
общая схема
дополнена резистором к каждой ноге,связанной с энкодером,и связана через общий плюс,как того требует даташит на энкодер

проект в Proteus
тут вместо энкодера 8-пиновый переключатель,что по моей идее для отладки хватит,мне только менять состояние пинов и смотреть на показания ШИМ
код писал в microchip studio.собственно был написан уже и обработчик значения пинов,и работа с ШИМ,осталось только написать зависимость значения ШИМ от значения пинов.на работе с ШИМ я подвис на пару дней,пока пытался понять что как работает.но написал,в протеусе работало,включая простейший диммер,если его так можно назвать,ибо я не завязывал там лампочку,а смотрел по осциллографу.
и вот решил я что пора проверить в реальном железе.прошил на реальном com порту через uniprof (шьётся нормально,потом читается из МК-всё на месте)и....ничего.после серии экспериментов по уменьшению кода программы я пришёл к совсем минималлистичному варианту
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
int i,p[8],tmp,forwarded,enc_pos;
int main(void)
{
DDRD=0x00;
DDRB&=~(1<<0); //PB0 read
DDRB|=1<<1; //PB1 write
DDRB&=~(1<<5); //PB6 read
DDRB&=~(1<<6); //PB7 read
PORTB |= 1<<1;
}отсюда у меня три варианта:1)или нельзя пытаться запускать МК не вытащив его из обвязки для прошивки;2)или ему кабзда;3)или я что-то упустил
подскажите пожалуйста куда дальше думать.


