у меня все резисторы в RC фильтрах 150 Ом.
С11, С12 вообще выкинул, с ними вроде хуже
а если их нет, то и R4, R5 как-бы ни к селу ни к городу.
primuss3.com
Надпись на заставке поменяна и нифига не меряет. Вполне по пионерскиslav0n писал(а):проверь
странно... а у меня меряет...Neekeetos писал(а):и нифига не меряет
хм... с таким подходом нафига же тогда вообще было сорцы выкладывать?Neekeetos писал(а):в планах наверно вообще все надписи переделать?
Код: Выделить всё
GPIOA->BSRR = GPIO_Pin_15; // BACKLIGHT ON
lcd_init();
lcd_clear();
lcd_gotoxy(0,0);lcd_putstr(" RLC ver 6.03 ");
lcd_gotoxy(0,2);lcd_putstr(" Neekeetos ");
lcd_gotoxy(0,3);lcd_putstr(" @yahoo.com ");
lcd_gotoxy(0,4);lcd_putstr(" big thanks to ");
lcd_gotoxy(0,5);lcd_putstr(" TESLight, Link ");
lcd_gotoxy(0,7);lcd_putstr(" play by slav0n");
// while( buttons() != 0 );// wait BUTTON release
/*
if( (cstatus & 0xFFFFFF00) != 0x80000000 )
{
cstatus = 0x80000000;findex = 0;
}
*/
if(findex <0 || findex >= FCNT ) findex = 0;
freq = flist[findex];
fillSine(freq);
measure(&Z,16);
lcd_clear();
lcd_gotoxy(0,1);lcd_putstr("________________");
lcd_gotoxy(0,6);lcd_putstr("----------------");
R.Re = SHUNT;
R.Im = 0;
while (1)
{
//----------------------------------------------------------------------------
btn = buttons();
if( btn & PWR_BTN ) bl_status = !bl_status; //pwr/backligt
if( btn & SP_BTN ) rsrp = ! rsrp; //ser/par
if( btn & REL_BTN ) rel = !rel;
if( btn & SP_BTNL )
{
findex++;
if(findex>= FCNT ) findex = 0;
freq = flist[findex];
fillSine(freq);
rsrp = ! rsrp;
}
if( btn & REL_BTNL )
{
calibrate();
rel =0;
cstatus |= (1<<findex);
}
if( btn & PWR_BTNL )
{
lcd_clear();
lcd_gotoxy(3*6,4);print(" Bye Bye..");
measure(&Z,10);
powerOff();
}
if(bl_status)GPIOA->BSRR = GPIO_Pin_15; // BACKLIGHT ON
else GPIOA->BRR = GPIO_Pin_15; // BACKLIGHT OFF
//----------------------------------------------------------------------------
lcd_gotoxy(0,0);lcd_putstr(" ");
sputdec(s,freq);
lcd_gotoxy(0,0);lcd_putstr(s);lcd_putstr("k ");
lcd_gotoxy(13*6,0);
if(rsrp)lcd_putstr("PAR");
else lcd_putstr("SER");
lcd_gotoxy(9*6,0);
if(rel) lcd_putstr(">.<");
else lcd_putstr(" ");
lcd_gotoxy(6*5,0);
if(cstatus & (1<<findex)) lcd_putstr("CAL");
else lcd_putstr("---");
//---------------------------------------------------------------------------
measure(&Z,1);
// zx = zom * (zsm-zxm)/(zxm-zom)
if( (cstatus & (1<<findex)))
{
cplx tmp1,tmp2;
tmp1.Re = Zs[findex].Re - Z.Re;
tmp1.Im = Zs[findex].Im - Z.Im;
tmp2.Re = Zo[findex].Re;
tmp2.Im = Zo[findex].Im;
cplxMul(&tmp2,&tmp1);
tmp1.Re = Z.Re - Zo[findex].Re;
tmp1.Im = Z.Im - Zo[findex].Im;
cplxDiv(&tmp2,&tmp1);
Z.Re = tmp2.Re;
Z.Im = tmp2.Im;
}
Z.Re = filter(0,Z.Re);
Z.Im = filter(1,Z.Im);
if(rel) {
Z.Re -= base.Re;
Z.Im -= base.Im;
}else{
base.Re= Z.Re ;
base.Im = Z.Im;
}
float ls = Z.Im/6.283185307/(freq*1000.0);
float cs = -1/6.283185307/(freq*1000.0)/Z.Im;
float d = Z.Re/Z.Im;
float d2 = d*d;
float q = 1/d;
if(rsrp) //PAR
{
ls = ls*(1+d2);
cs = cs/(1+d2);
Z.Re = Z.Re*(1.0+d2)/d2;
}
round++;
if(round>2)
{
round = 0;
printFloat(12,2,Z.Re,"Ohm");
// lcd_gotoxy(0,2);lcd_putstr(" ");
lcd_gotoxy(0,3);lcd_putstr("R>");
if(Z.Im > 0)
{
printFloat(12,4,ls,"H ");
// lcd_gotoxy(0,4);lcd_putstr(" ");
lcd_gotoxy(0,5);lcd_putstr("L>");
}else{
printFloat(12,4,cs,"F ");
// lcd_gotoxy(0,4);lcd_putstr(" ");
lcd_gotoxy(0,5);lcd_putstr("C>");
}
int qq = 10000*( 1.0+absolute(d)); if(qq >19999) qq = 19999;
sputdec(s,qq);
lcd_gotoxy(0,7);lcd_putstr("D .");lcd_putstr(&s[1]);lcd_putstr(" ");
qq = absolute(q); if(qq >9999) qq = 9999;
sputdec(s,qq);
lcd_gotoxy(8*6,7);lcd_putstr("Q ");lcd_putstr(s);lcd_putstr(" ");
// lcd_gotoxy(0,1);lcd_putstr("________________");
// lcd_gotoxy(0,6);lcd_putstr("----------------");
}
}
}Они там с определенной целью стоят, например верхние частоты перестают нормально работать без них.slav0n писал(а):ты кондеры пробовал удалять?
А какой подход? Я полагаю если человек вместо ответа на вопрос зачем менял начинает мычать невнятно и выкладывать исходники типа для сравнения, то это не дело и по большому счету не стоило ничего менять если результаты не поддаются описанию. Исходники выложены для тех , кто хочет что то улучшить или добавить, например использовать свой дисплей, сделать более удобный интерфейс ну и все в том же духе.slav0n писал(а):хм... с таким подходом нафига же тогда вообще было сорцы выкладывать?
возможно, но кто ими пользуется?Neekeetos писал(а):например верхние частоты перестают нормально работать без них.
именно для сравнения, чтобы без невнятного словоблудияNeekeetos писал(а):вместо ответа на вопрос зачем менял начинает мычать невнятно и выкладывать исходники типа для сравнения
наивноNeekeetos писал(а):Исходники выложены для тех , кто хочет что то улучшить или добавить, например использовать свой дисплей, сделать более удобный интерфейс ну и все в том же духе.
Я сходу вижу только то что там питание теперь не включается нормально поскольку строка нужная закоменчена, остальные "изменения" как то даже и не интересно глядеть. Зачем говнокодить и потом еще и выкладывать исходник на форум?slav0n писал(а):именно для сравнения, чтобы без невнятного словоблудия
А для чего они еще могут понадобиться? заменить надпись на экране на свое имя? Забор для этого есть.slav0n писал(а):наивно
странно... вот сижу уже полдня включаю - всё нормально включается... что не так?Neekeetos писал(а):питание теперь не включается нормально поскольку строка нужная закоменчена,
ну звиняй, если не угодил.Neekeetos писал(а):остальные "изменения" как то даже и не интересно глядеть.
весь мир пользуется, а тут пуп земли нашелсявозможно, но кто ими пользуется?
ждем с нетерпением новых перлови я думаю его еще можно оптимизировать в лучшую сторону
я тоже тебя понялozzy писал(а):о, теперь я понимаю почему
Код: Выделить всё
static int oldbtn =-1;
while (1)
{
btn = buttons();
if(btn == oldbtn)goto M1;
else oldbtn = btn;
if( btn & PWR_BTN ) bl_status = !bl_status; //pwr/backligt
if( btn & SP_BTN ) rsrp = ! rsrp; //ser/par
if( btn & REL_BTN ) rel = !rel;
if( btn & SP_BTNL )
{
*
*
*
M1:
measure(&Z,1);
// zx = zom * (zsm-zxm)/(zxm-zom)
if( (cstatus & (1<<findex)))
{
*
*
*
поддаются.Neekeetos писал(а):по большому счету не стоило ничего менять если результаты не поддаются описанию.
Нету их, тестовую прошивку я постоянно меняю, сейчас она вообще без экрана с выводом в компорт сырых данных. Если есть какой то особый интерес именно в этом, напиши в личку. Именно в т версии я переделал прерывание цап и поменял тайминги с тем чтобы он меньше влиял на измерения.Scelikr писал(а):А исходники 6.03t можно глянуть?
На моей прошивке то? Или вновь приобретенный косяк?slav0n писал(а):тут ещё обнаружилось что реальные частоты измерения не соответствуют программным
на твоих всё нормально.Neekeetos писал(а):На моей прошивке то? Или вновь приобретенный косяк?
Обрадовать не могу, исходники именно те из которых собрана 603. Может проц неверно тактироваться если ты не смог использовать стартап файл из моего архива, либо из за компилятора обработчики прерываний не успевают, там запас небольшой по времени, процентов 30.slav0n писал(а):Может в выложенных сорцах с тактированием ЦАПа что-то не так?
но ведь у меня реальная частота выше а не ниже...Neekeetos писал(а):либо из за компилятора обработчики прерываний не успевают
Код: Выделить всё
TIM2->ARR = 71;///63;