avatar
Мой друг использовал С++ для ATTINY1634-MU, там были несколько каналов PWM, чтение с ADC, чтение пинов для конвигурации. Всё работает. правда он не использовал new и delete. так что не могу с Вами согласиться…
avatar
Запретииииить!!!
Использование С++ для 8-битных контроллеров не надо, нельзя, нихт, кайн и т.д. и т.п.
Был опыт правда на ATmega128 (камень более жирный и по ОЗУ и по ПЗУ). Пытался делать некий пользовательский интерфейс на ЖК, с возможностью переконфигурирования (т.е. имелось несколько классов: Window, Label и т.д.). Больше 2-х окон было создать невозможно: тупо заканчивалась память. Вообще у меня сложилось мнение, что для меги надо использовать только С.
avatar
Точные резисторы бывают практически в любых корпусах. В своем приборе, о котором я писал на flyback.org.ru/viewtopic.php?p=4174002#4174002 я применил 0805 0.1% 25ppm от SUSUMU (https://ru.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-20&storeId=10173&categoryId=700000005450&st=RR1220P&pageSize=25&showResults=true) и ничего из под них нормально вымывается смесью изопропилового спирта с калошей. В таких приборах не настолько важна прецизионность, сколько температурная стабильность, а в цепях диф усилителей подобранные пары. Остальное все учитывается при SHORT и LOAD калибровках.
Проблемы у этих приборов 1. не берут малых индуктивностей и емкостей 2. Мал набор измерительных частот обычно 100Гц и 1кГц, желательно?, чтобы были еще 10кГц и особенно 100кГц для измерения ESR (я так понимаю 2-ое для этого прибора не актуально)
avatar
Мощность: 2кВт. Масса: ~17кг. Намотали харьковчане. А их цены меня крайне приятно удивили. На всякий случай не буду говорить точную сумму, в которую обошелся мой заказ, т.к. мне показалось, что у них индивидуальный подход к ценообразованию. Скажу лишь, что мелкий трансформатор, мощностью 60Вт с четырьмя вторичными обмотками, обошелся дешевле серийного такой же мощности.
avatar
Страшно представить сколько денег он стоит :-) а уж сколько он весит… Но вещь, несомненно, полезная! Какой мощности трансформатор?
avatar
Прикупил разделительный транс. Теперь можно заняться ремонтом жирных БП и ИБП.

avatar
да, уже нашел
avatar
В интернете всегда кто-то неправ.

Имелись в виду современные абсолютные энкодеры с аналогичным интерфейсом, коие есть, но гораздо проще найти абсолютный энкодер с профибасом или промэзернетом на выходе.

А если говорить о самом коде Баркера, то он вокруг нас где есть Wi-Fi.
avatar
Скрыть эти различия за интерфейсом IPwmChannel. Самый простой вариант — претвориться, что все таймера 16 битные и использовать только старшие 8 бит в 8 битных.

Более высокоуровневый подход — проценты заполнения ШИМ и из процентов пересчитывать в заполнение.
avatar
я думаю что видели…
avatar
а как быть с тем что указатели для OCR таймера0 и таймера2 — uint8_t*, а для таймера2 uint16_t*?
avatar
И если Вам вдруг попадется современный абсолютный энкодер, в том числе на сдвиговом регистре на входе, алгоритм считывания будет аналогичен.
Нет, ты ошибаешься!
avatar
Совершенно точный, но совершенно бесполезный ответ на ваш вопрос — у заказчика.

На основании некоторых ключевых слов в статье можно предположить, что была задача модернизировать что-то очень старое, но очень нужное. Если присмотреться в видео, то это что-то трехкоординатное, с двумя датчиками по X и по Y.

И если Вам вдруг попадется современный абсолютный энкодер, в том числе на сдвиговом регистре на входе, алгоритм считывания будет аналогичен.
avatar
Делимся радостью здесь, чтобы нас услышал издатель. Это очень важно!
avatar
Ура!!!
avatar
И где ты откопал этот почтенный датчик?
avatar
Мне кажется, или я этот пост уже где-то видел?
avatar
НОВОСТЬ! Переиздание двухтомника Джонсона ожидается в ноябре 2014. Ждите!
avatar
Если хочется ООП, то нужно сделать общий интерфейс и по классу — каналу, который реализует интерфейс. Пример:

class IPwmChannel {
public:
    virtual void Initialize() = 0;
    virtual void SetValue(int value) = 0;
}

class Pwm1 : public IPwmChannel {
public:
    void Initialize() { /* инициализация канала 1*/ };
    void SetValue(int value) { /* установка занчения канала 1*/};
}


А потом уже можно делать клас серво-машинки

class Servo
{
private:
        IPwmChannel *_pwm;  

public:
        Servo(IPwmChannel* pwm) { _pwm = pwm; }
        void Write(int data) { _pwm->SetValue = data; }
};


Ну и все. Как использвоать, думаю, очевидно.
avatar
Потому что в техническом задании была прописана именно такая задача.
Задача была сделать драйвер на С, который можно было вызывать из программы на FORTRAN, которая уже была, давно работает и ее совершенно невозможно поддерживать (синтаксис f-77).