Перейти к содержанию
    

Serega Doc

Свой
  • Постов

    264
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Serega Doc

  • Звание
    Местный
    Местный
  • День рождения 05.10.1981

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 056 просмотров профиля
  1. Срочно продам. Возможен торг.
  2. Доброго всем времени суток. Нашел у себя в заначке плату SAM7-EX256. Абсолютно новая (пару раз меняли тестовую прошивку). Подробности конфигурации платы: Отладочная плата фирмы OLIMEX. Установлен микроконтроллер AT91SAM7X256 ARM7TDMI-S. Плата позволяет разработчику загружать через порт USB или RS-232 пользовательскую программу, подключать внешний JTAG-эмулятор. На плате установлены все необходимые для быстрого старта компоненты. микроконтроллер AT91SAM7X256: ARM7TDMI-S™ 16/32 бит, 256кБ Flash-памяти программ, 64кБ ОЗУ, Ethernet 10/100, USB 2.0, CAN, часы реального времени, 10-битный АЦП 384ksps, ЦАП, 2 порта UART, I2C (TWI), SPI, три 32-битных таймера, SSC, DMA, ШИМ (четыре выхода), «WatchDogTimer», 5В совместимые входы/выходы, работоспособность до 60МГц (встроенный PLL); 18,432МГц кварцевый резонатор; JTAG-коннектор 2x10 пин, ARM-JTAG (Wiggler) совместимый; 128x128 TFT 12 бит цветной ЖКИ; Ethernet 10/100 PHY на базе KSZ8721BL; держатель карт MMC/SD; два порта RS-232 и USB интерфейс; аудио-интерфейс: стерео вход (микрофон) и стерео выход на наушники; две пользовательские кнопки и джойстик; напряжение питания 9V DC, 6V AC; термистор, подключённый к АЦП; разъём для внешнего источника питания; установленный регулятор на 3,3В с выходным током до 800 мА; свободные выводы микроконтроллера доступны на IDC разъёмах; размеры: 128 x 98мм Новая стоит порядка 160$ Свою отдам за 100$ или 800 грн. Я нахожусь в Одессе - Украина. Тел: 067 488 75 44 E-mail: [email protected]
  3. - поясните пожалуйста. Не понял что имеется в виду. Тестирование в не целевом окружении возможно лишь для задач не зависящих от железа как Если же существует контроллер с обвеской: регистры, ключи, кнопки, LCD экраны и прочее. И тестирование нужно проводить с учетом нюансов электронной схемы. Подскажите насколько правильна вот такая структура формирования тестов: И тогда можно получать информацию о прохождении тестов либо в симуляторе (например Протеус) либо в реальной плате + терминал COM порта.
  4. А вы под какую платформу используете googletest? И как вы интегрировали эти тесты с компилятором для железа? Что бы запускать их непосредственно из среды в которой пишем программу. Если можно то по подробнее пожалуйста.
  5. Доброго всем дня. Наткнулся на статьи Развитие в направлении разработки встроенных систем и Эффективная разработка встроенного ПО через тестирование про модульное тестирование для встроенных систем. Хочу уточнить есть unit тесты и mock объекты для компиляторов под AVR/STM8? Что бы свою программу на с++ можно было покрывать тестами. Вести разработку ПО максимально отделив логику от уровня железа. И при этом не испытывать проблем или же минимизировать вопросы перехода с одной платформы на другую. Как например есть программа для контроллера AVR и по каким либо причинам (дефицит, цена, характеристики) решили перейти на STM8. Переписываем классы взаимодействия с аппаратурой контроллера и в минимальные сроки получаем работоспособную (не проваливающую тесты) программу.
  6. Можно и два списка по 32. Вопрос не в этом. Обычно на spi все регистры висят последовательно. Как два списка будут работать с одной колбаской из 8-ми регистров? скажем даже так есть два регистра IN и два OUT. Можно ли описать их двумя списками по 16 бит, но при этом что бы списки по SPI работали каждый со своими регистрами?
  7. to neiver Добрый день. Можешь посоветовать как описать набор из n регистров 74HC595(выходы) и 74HC597(входы) для работы с произвольными pin этого набора. Если в связке будет до 8 регистров или 64 входа/выхода в зависимости от конкретной схемы. В статье описано как работать с одним регистром. А вот как описать пины для большей разрядности не понятно. Заранее спасибо. .... Кажется понял template<class ClockPin, class DataPin, class LatchPin, unsigned ID, class T = uint8_t> class ThreePinLatch { public: typedef T DataT; // нужен для сортировки портов в списках линий enum{Id = ID}; //разрядность регистра enum{Width=sizeof(DataT)*8}; // запись значения static void Write(T value) { _currentValue = value; for(uint8_t i=0; i < Width; ++i) { DataPin::Set(value & 1); ClockPin::Set(); value >>= 1; ClockPin::Clear(); } LatchPin::Set(); LatchPin::Clear(); } static DataT Read() { return _currentValue; } static void ClearAndSet(DataT clearMask, DataT value) { Write(_currentValue = (_currentValue & ~clearMask) | value); } static void Set(DataT value) { Write(_currentValue |= value); } static void Clear(DataT value) { Write(_currentValue &= ~value); } static void Togle(DataT value) { Write(_currentValue ^= value); } static void DirWrite(DataT value) { /*не можем менять направление*/ } static DataT DirRead() { return 0xff; //всегда выход } static void DirSet(DataT value) {/* не можем менять направление */} static void DirClear(DataT value) {/* не можем менять направление */ } static void DirTogle(DataT value) {/* не можем менять направление */} protected: // текущее значение в регистре static DataT _currentValue; }; template<class ClockPin, class DataPin, class LatchPin, unsigned ID, class T> T ThreePinLatch<ClockPin, DataPin, LatchPin, ID, T>::_currentValue = 0; и объявление из статьи typedef ThreePinLatch<Pa0, Pa1, Pa3, 'R1'> ShiftReg1; typedef TPin<ShiftReg1, 0> Rg0; typedef TPin<ShiftReg1, 1> Rg1; typedef TPin<ShiftReg1, 2> Rg2; typedef TPin<ShiftReg1, 3> Rg3; typedef TPin<ShiftReg1, 4> Rg4; typedef TPin<ShiftReg1, 5> Rg5; typedef TPin<ShiftReg1, 6> Rg6; typedef TPin<ShiftReg1, 7> Rg7; но можно же определять сдвиговый регистр как typedef ThreePinLatch<Pa0, Pa1, Pa3, 'R1', unsigned long> ShiftReg1; typedef TPin<ShiftReg1, 0> Rg0; typedef TPin<ShiftReg1, 1> Rg1; typedef TPin<ShiftReg1, 2> Rg2; typedef TPin<ShiftReg1, 3> Rg3; typedef TPin<ShiftReg1, 4> Rg4; typedef TPin<ShiftReg1, 5> Rg5; typedef TPin<ShiftReg1, 6> Rg6; typedef TPin<ShiftReg1, 7> Rg7; ... typedef TPin<ShiftReg1, 27> Rg27; typedef TPin<ShiftReg1, 28> Rg28; typedef TPin<ShiftReg1, 29> Rg29; typedef TPin<ShiftReg1, 30> Rg30; typedef TPin<ShiftReg1, 31> Rg31; И немного переписать методы DataT Read() и void Write(T value) что бы обновлялись регистры значениями из переменной _currentValue и наоборот. Но тогда не вижу как можно сделать больше чем 32 пина?
  8. Решил все сделать через указатель на функцию. Огромное спасибо. Только вопрос в чем разница между кодом как привели Вы: class Bar { public: Bar(WriteFuncPtr func) :_func(func) {} и кодом который работает аналогично только занимает на 10 байт больше: class Bar { public: Bar(WriteFuncPtr func) { _func = func; } И если я передаю в конструктор два указателя на функцию. Как это описать?
  9. Добрый день. Есть вопрос по С++. В этом топике выше подымалась тема библиотеки статических классов по управлению портами. При работе с этой библиотекой возник вопрос. Можно ли различные списки пинов привести к какой либо ссылке что бы в классе который реализует одинаковую логику но для разных списков использовать просто указатель на список. Пример чего хочу: typedef PinList <Pb6, Pb7> TestList1; typedef PinList <Pb4, Pb5> TestList2; template <class lst> class A { public: unsigned char Read(void) { lst::Read(); } } class B { public: B(A *ptrA)(pA = ptrA;) unsigned char Calc(void) { unsigned char data; data = pA->Read(); // преобразования data; return data; } private: A *pA; } Но ничего не выходит потому что указатель класса B объявлен без списка параметров. Пока реализовал класс B с шаблоном по списку пинов, но не устраивает что несколько членов-методов которые работают с данными из шаблона дублируются столько раз сколько раз я определяю шаблон. Есть ли выход из данной ситуации. Или это оптимальное решение. Все компилирую на IAR.
  10. Спасибо большое. JMP изящнее на мой взгляд чем просто переходное отверстие с жестко нарисованной перемычкой. В таком вариате в процессе трассировки есть возможность выбора где проводить перемычку в TOP или BOTTOM. Лучше не получится.
  11. Добрый день. Я могу купить на радио базаре Реле NPA-5A-DC12V и NPA2-5A-DC12V (pdf в приложении) Эти реле отличаются только положением одного вывода на корпусе. Можно ли нарисовать патерн что бы в нем два пада считались одним выводом в компоненте. Что бы не зависимо от того какое из реле есть в наличии спокойно паять на плату. Как вариант решил в патерн добавить переходное отверстие и к нему подвести дорожку от того пада который уже есть. Но мне кажется что это кривое решение. Подскажите как правильно p_npa_as5_05.pdf
  12. Спасибо за рекомендации. inline я активно использую в header файле. И для данной функции это бессмысленно из-за дублирования кода. Я в принципе тоже так думал что нет такой возможности. Но надеялся что я чего-то не ведаю. Еще раз спасибо.
  13. Добрый день. Неожиданно был удивлен что здесь из-за такого вопроса получился холивар. Считаю что разработчик сам должен для себя решить на каком языке и с какой эффективностью он будет реализовывать проект. Так что считаю вообще спор бессмысленным. И прошу его прекратить. И если можно ответить еще на один вопрос. Можно ли каким либо образом сделать переход из одного метода класса в другой не вызовом его через Call а переходом через Jmp. Вернее что бы компилировалось так. А то сейчас у меня два метода которые возвращают один и тот же тип WatcherState Но при этом один просто выполняет проверки и возвращает значение Второй же более длинный по времени выполнения выполняет расчет и так же возвращает WatcherState Вот как я это пока написал if (Tvalue == TimerValue) { return Next(); } else { return WAIT; } Что можете посоветовать?
  14. Спасибо все заработало. Что бы не плодить тем буду в будущем писать сюда по вопросам проектирования. Жаль что мне самому не пришла идея использовать указатель на SPI.
  15. Это глупый вопрос который обсуждали миллион раз?
×
×
  • Создать...