Silicon Labs C8051

Здравствуйте. По работе нужно в короткие сроки освоить м/к C8051Fххх от Silicon Labs на уровне простых программ (для начала). Кто реально работал с ними, посоветуйте, пожалуйста, литературу (если такая есть, кроме даташитов) с которой можно начать. Доступ к железу получу через месяц, сейчас хочу хотя бы в теории что-то понять.

Летней халявы псто

Если кто еще вдруг не видел, то китайский радио-бутик Seeed прислал рекламу, в которой обещает сделать два заказа по цене одного ($5) по купону Seeed10 (до 6 августа).

Акромя этого, мне в спам свалилось письмо, где китайский же шоп boktech.cc обещает первый заказ за $1, и где-то по интернетам попадалась реклама, в которой pcbway обещает это же вообще бесплатно, т.е. $0.

Условия у всех трех, кажется, стандартные: 5/10 плат 100x100, шелкография с обоих сторон, HASL, зеленая маска, один дизайн на одну плату.

Налетай-подешевело!

PS. Аллокейшеном их чтоли так прибило?
Tags:

Помогите советом на счёт термодатчика

Доброго времени суток, коллеги!

Друзья, посоветуйте пожалуйста, кто в теме, небольшой по габаритам  (длиной миллиметров 50 +-) термодатчик с верхним температурным пределом  до 500 градусов. Желательно цифровой, если такие имеются, или  резестивный но, желательно, линейный (если такие бывают). Зонд из  термопар ставить не хочу — они длинные, нелинейные и погрешность у них  желает оставлять лучшего. Задача сводится к установке в дверцу  (чугунную) печи термодатчика и подключения к нему внешнего цифрового  термометра. 

Рябит и отключается экран ноута

ASUS N55SF. Начал глючить. Отключается экран. Непосредственно перед отключением рябит. Программы продолжают работать, но те, что работают с графикой, могут упасть, а могут и не упасть. Проблема случается так, то как накатит — и хана, погаснет, периодически включается и тут же снова гаснет, и так продолжается очень долго, прежде чем отпустит. Но бывает, что чуть порябит, и сразу прекращается.

Случается не только при высокой загрузке, вентилятор может при этом работать на низкой скорости. Шевеление крышки или попытки согнуть ноут видимого эффекта на проблему не оказывают.

Разбирал, визуально ничего не насмотрел. Что это может быть? Что-то отпаялось? Припаять назад смогут?

Или что-то перегревается? Температуру проца показывает нормальную, температуру видюхи не знаю, чем смотреть. Радиаторы, похоже, приклеены, не оторвёшь.

Ноут нравится: большие кнопки, хорошие динамики. Даже не уверен, что найду достойную замену.

Включение проблемных нагрузок в сеть 220в.

"Доподлинно известно, что вся электронная техника работает на белом дыме. Как только дым выходит — техника сразу перестает работать" - из философской книги радиолюбителя.
Для включения в сеть 220в проблемных нагрузок, был изготовлен стенд с защитой от замыкания:
0.jpg
.
[Читать далее]
Нагрузка включается через автоматический выключатель C4А, или C16А. При замыкании в нагрузке (например в ЭПРА, трансформаторе, светодиодной лампе) автомат отключается, без разрушения нагрузки.
.
4.jpg
5.jpg
Плюс устройства – можно видеть потребляемый ток, мощность, кВт*ч, напряжения в сети, что позволяет оценить состояние нагрузки, и заменить бытовой ваттметр. На фото нагрузка светодиодная лампа. Реальное напряжение/ток 238В 0,05А, показывает 240В 0,05А.
6.jpg
.
Устройство состоит из:
- ваттметра PZEM-061 с трансформатором тока
- автоматических выключателей брэндового производителя C4А, C16А
- корпуса 158*90*60 мм ABS piastic
- розетки.
Автоматические выключатели включены в параллель, что позволяет выбрать ток защиты от КЗ. Ваттметр имеет предел в 100А, измеряет ток с помощью трансформатора тока, что исключает выгорание ваттметра при замыкании.
Ваттметр закреплен на термоклее, автоматические выключатели вставляются в точно пропиленные отверстия в основании корпуса, и удерживаются за счет распорки между автоматами, которая выточена из отхода при пропилке прямоугольного отверстия под ваттметр. В дне высверлены четыре отверстия, куда термоклеем вклеены 4 опоры для материнских плат как ножки устройства.
Я долго искал корпус, оптимизацию компоновки. В итоге конструкция мне понравилась.
.
3.jpg
2.jpg

CAN на STM32F042

Смотрю в книгу RM, а вижу...
Что-то не получается у меня правильно сбрасывать коды ошибок, которые быстро накапливаются в том случае, если на линии нет никого, кто принял бы сообщение. В обработчике прерывания делаю так:
...
    if(CAN->ESR){ // Error
        last_err_code = (CAN->ESR & CAN_ESR_LEC) >> 4;
        MSG("CAN->ESR: ");
        printu(CAN->ESR);
        newline();
        CAN->ESR = 0;
    }
...

(MSG и далее — отладочные сообщения). Пока выдается отладочное сообщение, счетчик ошибок успевает инкрементироваться на 2 (последовательно получаю числа 0x200030, 0x400030, 0x600031 и далее 0x800033 вплоть до перезапуска watchdog'ом).
Помню, сталкивался с подобной проблемой 10 лет назад, когда на PICе пробовал реализовать CAN, но там была возможность периодически обнулять счетчики ошибок.
В надежде остановить автогенерацию посылок при ошибках установил бит CAN_MCR_NART регистра CAN->MCR. Это не помогло (но CAN->ESR принимал теперь значения 0x80030 при первом входе в прерывание и далее 0x80000 вплоть до перезагрузки).
UpdateCollapse )

Магазины 2018

А что, дяденьки и тётеньки, по-моему давно переписи магазинов не было. Давайте, а?

Вводная: интересуют интернет-магазины работающие с физиками, желательно с оплатой картой или ядом, с неэкзотическими способами доставки, вменяемым каталогом и хорошим складом. Основной паттерн использования — порыться по каталогу и посмотреть что вообще есть с примерно нужными параметрами. Про существование digikey, mouser, farnell и tme я знаю, но у меня заказы чаще мелкие (меньше ста баксов, чаще меньше 2000р) так, что стоимость доставки уже заметна, а на то чтобы играть в игру "найди детальку на диджикей и угадай кто из российских реселлеров сможет её привезти и в каком году" у меня уже никаких нервов не хватает.

Собственно, список (не в каком-то определенном порядке, прсото из головы):

длиннотаCollapse )

Что скажет общественность?

PS. Место действия: Россия, областной центр с населением >1млн.чел. примерно в 1 тыкм от Москвы.

PPS. Основные задачи — мелкая цифра, иногда мелкая силовуха <100Вт, несложный аналог (померять напряжение на шунте). Всякое (у)ретро не интересует, ремонт не интересует, радиоприемников не строю, аудиофилом не являюсь.

PPPS. Документальное оформление не интересует (в данный момент).

Трабл с таймером STM32

Что-то никак "не выходит каменный цветок" с таймером STM32.
Задача - генерить на выходе Output Compare импульсы Step для шагового двигателя.
Время между их передними фронтами меняется (разгон/торможение).
За основу взял известный принцип: 16-битный счетчик таймера считает постоянно по максимальному модулю 65536.
Очередная задержка формируется перезаписью регистра СС, с прибавлением её длительности к текущему значению СС.
Используется 2 канала CC, срабатывающих с фиксированным сдвигом.
Вначале срабатывает OC2; в его прерывании делаются расчёты и операции по подготовке шага.
Затем срабатывает OC1, по которому формируется собственно фронт шагового импульса.
Однако никак не получается запустить эти прерывания в нужной последовательности.
Сейчас застрял на том, что примерно один раз за цикл счетчика (~65 mc) возникают флаги прерывания в каналах СС 3 и 4, для которых и СС events, и генерация прерываний запрещены. Такое впечатление, что Update Event таймера сбрасывает все эти запреты, хотя оно тоже запрещено, да и даташиту такое поведение не соответствует.
Ниже - картинка с анализатора и текст обработчика прерывания.
Прошу не тратить буквы на то, чтобы лажать HAL и LL драйверы; тут явно в чем-то другом дело.

UPD: Описанная проблема решена, расчётные тайминги прерываний пошли. Но вот ещё вопрос, раз такое дело. Вот по CC Match изменился уровень внутреннего выходного сигнала OCxREF - я так понимаю, взвелся некий триггер. Как этот триггер программно вернуть обратно? Задать через регистр CCMR OCM=Forced active/inactive? И если да, сбрасывают ли его какие-то другие действия/события?



void TIM3_IRQHandler(void)
{
if (LL_TIM_IsActiveFlag_CC1(TIM3)) //начался импульс STEP1
{
LL_TIM_ClearFlag_CC1(TIM3);
sm_driver_PostStepA();
}
if (LL_TIM_IsActiveFlag_CC2(TIM3)) //подготовка к STEP1
{
LL_TIM_ClearFlag_CC2(TIM3);
speed_cntr_PreStep(0); //Из этой функции вызывается тестовый ногодрыг для Cannel1, дающий правильный тайминг
}
if (LL_TIM_IsActiveFlag_CC3(TIM3)) //начался импульс STEP2 - это прерывание и CC3 event запрещены!!!
{
LL_TIM_ClearFlag_CC3(TIM3);
//++++++++++++++++++++++++++++ А это тестовый ногодрыг для Cannel2, и сюда прога вообще не должна попадать
HAL_GPIO_WritePin(StpMotor2_Current_GPIO_Port,StpMotor2_Current_Pin,GPIO_PIN_SET); //Set PA4
HAL_GPIO_WritePin(StpMotor2_Current_GPIO_Port,StpMotor2_Current_Pin,GPIO_PIN_RESET); //Reset PA4
//++++++++++++++++++++++++++++
// sm_driver_PostStepB();
}
if (LL_TIM_IsActiveFlag_CC4(TIM3)) //подготовка к STEP2
{
LL_TIM_ClearFlag_CC4(TIM3);
// speed_cntr_PreStep(1);
}
}