• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
Valerius_San

Простые вопросы новичка.

68 сообщений в этой теме

Всем здравствуйте.

Помогите начинающему и необразованному в сфере микроконтроллеров.

Взялся разбираться с Atmega8A
Пытался я рыть примеры в интернете, все они грубо заточены и новичку толком не понять.
В свое время я сталкивался с инструкциями в PHP. Там есть справочник свой.
В любом языке есть зарезервированные комманды, макросы, и переменные.
Где найти справочник комманд и интсрукций?
Я не думаю что написав - PORT_Strob_Signal_E, человек сидел накуренный и летал в фантазиях.

 

Есть такое (для LCD)

 

#define PORT_Strob_Signal_E PORTC
#define PIN_Strob_Signal_E 1

 

#define PORT_Strob_Signal_RS PORTC
#define PIN_Strob_Signal_RS 0

 

Что тут написано, это мне более-менее понятно. Я немогу найти никакого обьяснения, как сделать что-бы 

 

Были выводы для одного дисплея
#define PORT_Strob_Signal_E PORTC
#define PIN_Strob_Signal_E 1

 

#define PORT_Strob_Signal_RS PORTC
#define PIN_Strob_Signal_RS 0

 

А это были выводы для другого дисплея
#define PORT_Strob_Signal_E PORTC
#define PIN_Strob_Signal_E 3

 

#define PORT_Strob_Signal_RS PORTC
#define PIN_Strob_Signal_RS 2

 

По сути мне нужно вывести 2-а дисплея через каждый отдельный программный SPI(если я правильно понял).

 

Возможно-ли вообще сделать 2,3,4,5 Программных SPI или UART? И как? (особо важно)

 

Второй вопрос общеобразовательный.

 

Ни где не смог найти примеры кода или библиотек.
Нужен пример кода где микроконтроллервыводит на семисегментный индикатор то число (5 к примеру), которое написано в коде.
И такое-же самое, но со сдвиговым регистром 74HC595 (пока ковыряю эту детальку, а там разберусь как работают другие).

 

Зарание спасибо.

Изменено пользователем Valerius_San

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Alexeyslav    590

Справочник всех команд есть в даташите на контроллер. Это что касается ассемблера, и судя по приведённым кускам он и изучается.

Есть отдельный документ по всем командам семейства AVR-контроллеров, он тоже крайне легко гуглится.

Те куски что у вас написаны это называются ДИРЕКТИВЫ, и собственно сама директива DEFINE работает на уровне предпроцессора исходного текста тупо заменяет все найденные по исходнику левые части на правые. Это удобство чтобы назвать порт или какую-то константу понятным по контексту названием. Обратите внимание на директиву .def которая использется ТОЛЬКО для именования регистров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не до конца показал. Наверное стало и не понятно.
 

#ifndef HD44780_Config_D
#define HD44780_Config_D

#define uchar unsigned char
#define Sbit(reg,bit) (reg|=(1<<bit))
#define Cbit(reg,bit) (reg&=~(1<<bit))
#define CheckBit(reg,bit) (reg&(1<<bit))
#define FirstStr_StartPosition_DDRAM_Addr 0x80
#define SecondStr_StartPosition_DDRAM_Addr 0xC0
#define Data_Length 0
#define NumberOfLines 1
#define Font 1

/*
 *указываем порт МК, к которому подключена линия E
 *указываем номер бита порта МК, к которому подключена линия E
 */
#define PORT_Strob_Signal_E PORTC
#define PIN_Strob_Signal_E 1

/*
 *указываем порт МК, к которому подключена линия RS
 *указываем номер бита порта МК, к которому подключена линия RS
 */
#define PORT_Strob_Signal_RS PORTC
#define PIN_Strob_Signal_RS 0

/*
 *порты ввода-вывода шины данных дисплея D4-D7
 *номер бита порта ввода-вывода шины данных дисплея D4-D7
 */
#if Data_Length==0
   #define PORT_bus_4 PORTD
   #define PIN_bus_4 4
   #define PORT_bus_5 PORTD
   #define PIN_bus_5 5
   #define PORT_bus_6 PORTD
   #define PIN_bus_6 6
   #define PORT_bus_7 PORTD
   #define PIN_bus_7 7
#endif

void LCDb_Init(void);
void LCDb_Full_Clean(void);
void LCDb_CursorPosition_ToStart(void);
void LCDb_AutoMovCurDispDirect(uchar I_D, uchar S);
void LCDb_DisplEnable_CursOnOffBlink(uchar D, uchar C, uchar B);
void LCDb_MovingCurDispDirection(uchar S_C, uchar R_L);
void LCDb_Show(uchar Addr, uchar Str, uchar Cursor);
void LCDb_UserSymbolsWrite(uchar Addr, uchar *data);
void BusLinesStateb(uchar *data, uchar RS);

#endif
 

Это Си. 
За подсказку спасибо (новенькое, будем рыть значит).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 286
55 минут назад, Valerius_San сказал:

Возможно-ли вообще сделать 2,3,4,5 Программных SPI или UART?

SPI допускает подключение нескольких устройств к одним и тем же выводам МК (Вики). Но возможны подводные камни из-за целого зоопарка стандартов, точнее отсутствия единого стандарта. Но ничто не мешает написать несколько (насколько хватит ножек) интерфейсов со своими алгоритмами общения. Поскольку интерфейс синхронный, то строгая стабильность временных диаграмм обмена не нужна. Чего не скажешь об USART, где отклонение скорости от стандартной критично.
Для начинающих хорош BASCOM, если есть желание использовать в дальнейшем другие семейства МК, тогда учи Си. Неплохая книга М. Б. Лебедев "CodeVisionAVR. Пособие для начинающих". Не обязательно писать именно в этой среде, там хорошие примеры использования языка Си. 

Изменено пользователем oldmao

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
1 час назад, Valerius_San сказал:

В любом языке есть зарезервированные комманды, макросы, и переменные.
Где найти справочник комманд и интсрукций?

Вот и читайте книгу по Си, там будут все команды. Крайне желательно сначала на ПК потренироваться в программировании, а потом уже браться за МК.

 

1 час назад, Valerius_San сказал:

Я не думаю что написав - PORT_Strob_Signal_E, человек сидел накуренный и летал в фантазиях.

Вместо этого может быть написано все, что угодно, это просто название, которое пришло автору в голову, важно то, что написано через пробел.

 

1 час назад, Valerius_San сказал:

Пытался я рыть примеры в интернете, все они грубо заточены и новичку толком не понять.

Примеры в инете как раз заточены под новичков. Только не надо сразу пытаться лезть в сложные программы, начните с простого, типа мигания светодиодом, изучения таймеров и интерфейсов.

 

1 час назад, Valerius_San сказал:

По сути мне нужно вывести 2-а дисплея через каждый отдельный программный SPI

Если не смущает то, что вывод будет тормознутым, то можно и так. А так оба дисплея подключаются к одному SPI. Опять же, для начала прочтите, как вообще работает SPI.

 

1 час назад, Valerius_San сказал:

Нужен пример кода где микроконтроллервыводит на семисегментный индикатор то число (5 к примеру), которое написано в коде.

А что там трудного? Число на таком индикаторе - определенная последовательность включенных ножек. Если цель стоит в том, чтобы написать прошивку, а не научиться, и больше с МК дела не иметь, то имеет смысл взять ардуйню, там и примеров валом, и библиотек целый табун. Но опять же понадобятся знания Си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 286

Попытался я в среде Ардуино переписать одну программку, которую до этого на BASCOM написал. Используя нативные ардуиновские библиотеки. Так там с библиотеками такой цирк с конями... То, что компилируется в одной версии IDE не факт, что скомпилируется в другой, с другими версиями стандартных(!!!) библиотек. И сторонние библиотеки могут компилироваться только в определённой версии IDE. И всё это нужно подобрать методом тыка или исправить бибилиотеки. Помучался и перешёл на CodeVisionAVR. Где за пару часов всё сделал, заодно обучаясь языку (ну не люблю из-за мозголомного синаксиса, а потому плохо знаю Си).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

Вывод на светодиодный семисегментный надо осуществлять через таблицу преобразования цифра-набор_сегментов причем так хорошо совпало что самые популярные индикаторы укладываются в 8 бит - значит достаточно завести массив на 16 байт(кто скажет навскидку почему удобно 16 а не 10?), а в качестве индекса брать входное число с погашенными(во избежание выхода за границы) старшими 4-мя битами операцией '...AND 0xF0'

Если надо вывести допустим 5-разрядное число, то сначала его надо пропустить через алгоритм разложения на цифры (обычно такие алгоритмы зовутся BIN2BCD и есть разные реализации по сложности и разрядности) в результате которого получаешь BCD-представление исходного числа, делишь его на тетрады по 4 бита пропускаешь через массив и получаешь сразу наборы сегментов которые надо зажечь, их остаётся загрузить в регистры сдвига и число у тебя на индикаторе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Начинаю кое что понимать.

То что нужно писать библиотеку с битностью по цифрам я понял.

Но вот мозгую  как эту битность делать как-бы динамической (грубо говоря как переменная).

 

Но в принципе навели на мысли более логические.

Спасибо. Большое. Тут дальше дело за мною.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

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

Отправлено с моего Nexus 5 CAF через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

7-сегментники луче всего подключать при помощи регистра сдвига совмещённого с драйверами светодиодов. Когда-то на ибее взял 20 штук и они почти сразу пропали из продажи. Тот же регистр, как HC595 только с стабилизаторами тока на выходе, ток регулируется одним выводом для всех в пределах 2...80мА на каждый вывод и никаких внешних ограничителей тока в виде резисторов что актуально при большом количестве светодиодов. Сейчас больше популярны такие микросхемы на 16 бит - stp16cp05 например. Или вовсе готовый драйвер с SPI управляющий 8-ю 7-сегментными индикаторами в динамической индикации, только задаёшь где какую цифру засветить и всё...

А если надо реально много светодиов зацепить... HT1632 - матрицу 32*8 или 16*24 светодиода, с 4-мя уровнями яркости для КАЖДОГО. тоже SPI интерфейс на входе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Зачем такие сложности с редкими драйверами? Есть же max7219, там не только драйвер, но и кое какие мозги есть. И подключить можно 8 знакомест или вообще матрицу 8х8. Плюс можно включать их один за одним. На али их валом и стоят недорого.

Отправлено с моего Nexus 5 CAF через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Знаете...

Я так скажу откровенно.


В свое время я программировал на С++. Знаю PHP JavaScripts Linux Shell. Сам по себе я занимался программированием сетей и серверов.

Казалось-бы "что тебе решать тут детскую задачу"?!
Аж нет. Все не так как кажется. Когда работал на C++ То ты имееш дело с графикой и операционной системой. По факту ты не можеш через программу сказать операционной системе, сделать то о чем она не догадывается. По факту работы - программист, пишет графическую оболочку при этом манипулируя библиотеками. А если не хватает, КЛЯНЧИТ у производителей (Visual C++, Net Frameworck). 
Грубо говоря - играются в игрушки, рисуя картинки.

В контролерах, все сложнее (вернее вопросы и ответы).
Я встречал были такие глупости и понты у людей, когда программер написал код термостата и всунул "обработчик" для сверки данных.

Бред и понты я тоже могу отличить (жаль не было обратной формы связи) - на кой хрен лепить обработчик?


Если контролер может выcчитать частоту, поставить интервал по времени - он-же откуда-то знает что больше и что меньше. Зачем писать тома Достоевского?
Значит там есть библиотеки. А если они есть, то значит есть и инструкции.

Я не в критику и без притензий нивкоем случае.
Просто меня интересуют эти инструкции. Как туда попасть через Cи (а что там производитель припрятал то это дело каждого разбираться или нет - а припрятал). 
Мне очень интересно, как цепляться к ячейкам памяти. Что-бы один блок памяти весел, а другой обновлялся (про скорость обработки я не переживаю, 8 Мгрц ).
Вы только вдумайтесь в скорость! 8000000, вы 50 - глазами не видите , а если что-то тормозит и блымает - значит код написан не то что ПЛОХО, а Х.....О (какие-бы ордена на сиськах программиста не висели).


P.S.
Я ради опыта один раз прикольнулся - написал одну HTML страницу, и JavaScript-ом повесил камень компьютера (меню создал), что мышка ели шевелилась. И буквально 8-ю строками создал такое-же меню, но там ничего не тормозило и создавалось автоматически из MySQL.
Если у вас тормозит компьютер, медленно открываеться страница, лезут вирусы, лезет "ненавящевая реклама" - отключаете JavaScripts и наслаждаетесь колоссальными скоростями, где ваш даже старенький компьютер будет выплевывать и не задумываться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Не надо обольщаться тем, что там 8МГц. На самом деле это очень медленно, особенно, когда речь идёт о выводе на дисплей. Особенно, когда интерфейс написан программно. Любая программная реализация на порядок медленнее, чем аппаратный блок в МК. Плюс если дисплей графический, то нужна не одна команда, чтобы вывести пиксель, а пикселей выводится много. Так что о скорости думать надо в первую очередь. Особенно учитывая то, что интерфейс последовательный. Даже аппаратный интерфейс не работает на тактовой частоте МК. Приведу пример. МК с частотой 72МГц, к нему подключен цветной дисплей 160х220 пикселей по SPI. SPI аппаратный на частоте 36МГц. Так вот, таких параметров не хватает для того, чтобы незаметно зарисовать весь дисплей одним цветом. Идём дальше, цепляем к этому же МК дисплей 320x240, но используя параллельный интерфейс 8бит. В итоге скорость работы возрастает в разы. А mega8 справится максимум с ч/б дисплеем от nokia3310. И дело тут не в коде, а в аппаратных ограничениях. А ещё стоит помнить, что 8битные МК очень медленно работают с теми же числами с плавающей запятой. А к этому ещё кучу нюансов. Например то, что все инструкции выполняются только последовательно. Распараллелить процессы в МК невозможности.

 

 

А все инструкции описаны в заголовочном файле для вашего МК и в даташите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 286

Даташит - в нём описаны все нюансы конкретного "камня". А что касается быстродействия - AVR не имеет развитой периферии, работающей независимо от ядра. В отличие от ARM. Там и порты (SPI, I2S, USART) не тормозят работ, а используют DMA. То есть закинул в память данные для отправки, дал команду "отправить"  - и занимайся дальше другими делами, всё отправится без участия ядра. То же и с приёмом - выделяется буфер, как только он заполнится (не требуя участия ядра!), вызывается аппаратное прерывание для обработки принятого. 
А в AVR работа с портами лежит на плечах ядра, хотя можно исхитриться и работать по прерываниям. Даже многозадачные микро-ОС есть.
Вас испортила объектная ориентированность, когда объекты работают независимо друг от друга. То есть задал объекту Line отрисоваться на Canvas - он это сделает. Как - вам знать не обязательно, для этого есть ОС с графической подсистемой и драйверами. А в МК нужно самому определить, какие байты отправить индикатору,  чтобы пиксели с нужными координатами отобразить нужным  цветом. И помнить, что в это время МК ничем другим заниматься не может - ни кнопки опросить, ни АЦП запустить. Правда, существенно облегчает наличие прерываний, но тут нужно выработать соответствующий стиль программирования. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ого...........

Такого облома я даже не ожидал.


Теперь я понял. Mega 8 - однопоточный как первый DOS.

 

Мой вопрос, просто не имеет смысла. Ему незачем поднимать 2 SPI и 2 MOSI.
Я так понял дешевле гнать аппаратные возможности и не умничать. Будет и быстрее и дешевле для нервов.


А я от него требую нереальное. Он тут просто ляжет или роды будут те еще...
Значит - либо менять камень, либо добавлять камни (смешно будет выглядеть).

Вымерять температуру с 2-х датчиков, сопоставить с заданным в оперативке (а их там ничего не останеться), вывести на дисплей, подать включить или выключить да и еще высокой точности....
Скорость чипа достаточная (я так считаю) и памяти достаточно. Но не на одном потоке читать 5м памяти, занимать оперативку и на тормозах остатков пытаться еще что-то посчитать и выполнить.

Тогда зачем их производят? Это-же мусор.
Есть все в нем, но толку?

Приятный холодный душ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 286

Ну, опросить 8 датчиков и отработать 16 порогов сигнализации (или дискретно вкл/выкл нагревателей или вентиляторов) с одновременной индикацией - для mega8 раз плюнуть. Ещё и время на опрос кнопок (с алгоритмом антидребезга) и работы с меню уставок хватает. Просто нужно отвыкнуть от перекладывания максимальной части задач на плечи ОС и перейти к линейному программированию. Наиболее часто применяется парадигма "конечного автомата". Которая прекрасно реализуется на прерываниях (от таймера или состояния порта при опросе кнопок).

А ничего, что ПО современных томографов - на базе MS-DOS 6.22, ну может с надстройкой Windows-98? Так что С++ вас разбаловал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Ваша задача очень простая, особенно в случае грамотного использования прерываний. МК целыми двигателями в машинах управляют, а у вас всего лишь опрос датчиков. Для начала заложите временные рамки, в которых должен произойти опрос датчика и выдача действия, чтобы было понятно, к чему стремиться. Затем определитесь, что за датчики вы хотите использовать. От этого будет сильно зависеть все остальное. Далее надо выбрать дисплей. Зачем вам обязательно SPI? Что мешает использовать символьные дисплеи со встроенным знакогенератором? С ними МК будет летать.
Ну а по поводу написания программы необходимо усвоить, что надо по максимуму использовать аппаратные модули МК, т.к. их скорость работы всегда выше, чем у программных реализаций. А также изучить работу интерфейсов передачи данных. Так к одному SPI (и это не только к SPI относится) можно подключить хоть 20 устройств, лишь бы у МК хватило выводов переключать линии CE. Так что два SPI вам совершенно не нужны. Кроме того, если на обоих дисплеях должно отображаться одно и то же, то их вообще можно соединить параллельно и вывод на них будет идти одновременно. А за константы для сравнения данных, хранящиеся во флеш памяти можно вообще не переживать, компилятор сам распределить их вызов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    248
2 часа назад, BARS_ сказал:

Приведу пример. МК с частотой 72МГц, к нему подключен цветной дисплей 160х220 пикселей по SPI. SPI аппаратный на частоте 36МГц. Так вот, таких параметров не хватает для того, чтобы незаметно зарисовать весь дисплей одним цветом.

Что за камень был? Потому что мне на stm32 с той же частотой ядра и SPI удалось выжать 11-20 кадров в секунду на трехмерной графике, правда, с DMA. Но уж одним цветом залить можно и быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

F103. Заливка была ощутимо видно глазом. Дисплей от сименса. DMA, правда, не использовал. Вот через fsmc все летает даже при шине 8бит и без DMA Кстати, частоту поднимать ядра не пробовали? STM32 неплохо разгоняются.

 

 

У вас вообще круто получилось, как-то даже не задумывался, что можно такое сделать на STM. Изображения в памяти МК хранятся?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BARS_ сказал:

Ваша задача очень простая, особенно в случае грамотного использования прерываний. МК целыми двигателями в машинах управляют, а у вас всего лишь опрос датчиков. Для начала заложите временные рамки, в которых должен произойти опрос датчика и выдача действия, чтобы было понятно, к чему стремиться. Затем определитесь, что за датчики вы хотите использовать. От этого будет сильно зависеть все остальное. Далее надо выбрать дисплей. Зачем вам обязательно SPI? Что мешает использовать символьные дисплеи со встроенным знакогенератором? С ними МК будет летать.
Ну а по поводу написания программы необходимо усвоить, что надо по максимуму использовать аппаратные модули МК, т.к. их скорость работы всегда выше, чем у программных реализаций. А также изучить работу интерфейсов передачи данных. Так к одному SPI (и это не только к SPI относится) можно подключить хоть 20 устройств, лишь бы у МК хватило выводов переключать линии CE. Так что два SPI вам совершенно не нужны. Кроме того, если на обоих дисплеях должно отображаться одно и то же, то их вообще можно соединить параллельно и вывод на них будет идти одновременно. А за константы для сравнения данных, хранящиеся во флеш памяти можно вообще не переживать, компилятор сам распределить их вызов.

"Что мешает использовать символьные дисплеи со встроенным знакогенератором? С ними МК будет летать. " - именно так и выбрал.
Я может и не правильно мыслю, но мне кажеться: - для экранчиков по круче, лучше добавлять что-то графическое (может и дешифратор).
Для TFT использовать графические чипы (соответственно параметры/требования).


Просто один дисплей выдает 2 параметра которые показывает 2-е ТЕРМОПАРЫ. Другой показывает "программирование 2-ух порогов".
(Мне для литья металлов.
Там на самом деле идет 2-е печки. Одна плавит металл, другая греет форму. Если без предварительного нагрева, то заготовка в лучшем случае будет запартачена (будут не гладкие стенки краев, а пузырчатые), но зачастую взрыв так как форма полюбому набирает влагу и при 1350 градусов вода не успевает выпариться через поры и она просто пробивает себе дорогу как ей хочеться.
Отсюда мне и нужна регулеровка температуры без всяких пуск/задано (форму слишком быстро тоже нагревать нельзя) - это назыветься отпуск метала. 25-40 мин держиш 250 гр (сам смотриш), потом поднимаеш до 600 на 60-90 мину, потом 900-1000 еще на полтора часа.
)

Но это моя первая задача для себя, потом нужно будет себе сделать ЧПУ-фрезер. Но это все потом, нужно сначала еще азы освоить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
1 минуту назад, Valerius_San сказал:

Я может и не правильно мыслю, но мне кажеться: - для экранчиков по круче, лучше добавлять что-то графическое (может и дешифратор).
Для TFT использовать графические чипы (соответственно параметры/требования).

Абсолютно неправильно. Ничего "графического" туда добавить нельзя. Оно все должно быть в МК и ПО. Графических чипов тоже нет (есть дорогие и мощные МК с ARM ядром, в них встроен графический акселератор и можно даже игрушки запускать, но для базового GUI вполне хватает обычных МК), вся графика реализуется руками. Вы пройдите по ссылке, что выше давали и посмотрите видео. Там голый МК, причем копеечный, и дисплей.

3 минуты назад, Valerius_San сказал:

Просто один дисплей выдает 2 параметра которые показывает 2-е ТЕРМОПАРЫ. Другой показывает "программирование 2-ух порогов".

А не проще все выводить на одном дисплее? Например таком:

LK204-25-2.jpg

Под него и библиотеки в инете готовые есть, и не надо самому пиксели рисовать, достаточно послать ему номер сроки и сдвиг символа относительно начала строки, а затем строку текста. Далее дисплей уже сам все отобразит.

5 минут назад, Valerius_San сказал:

это назыветься отпуск метала. 25-40 мин держиш 250 гр (сам смотриш), потом поднимаеш до 600 на 60-90 мину, потом 900-1000 еще на полтора часа.

А аналоговая часть у вас уже есть, которая будет между термопарой и МК? Да и заставить встроенный АЦП точно измерять напряжения тоже целая наука. А если нужна точность измерения до десятичных знаков, то это многократно усложнит задачу. Ну а программу тут реализовать очень просто. Вам надо всего лишь опрашивать 2 канала АЦП и по формуле переводить полученные значения в температуру. Далее переключать нагрузки и слать данные на дисплей. При желании можно и клавиатуру подключить для управления или связь с ПК организовать:

1111111111111111111111111111111111111111

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 286

Во-первых процесс не настолько быстрый, что нужно одновременное наблюдение сразу всех параметров. Минимальный вариант - четырехзначный семисегментник с контроллером TM1637, типа такого:
59d1207c134ad_Untitled-2copy.jpg.36aa5ed4628b343446cd6f7934a45bc6.jpg

Для подключения к МК нужно всего две ножки. Для индикации названия параметра - четыре светодиода. Или даже два: первый горит/не горит = термопара 1/2, второй = уставка/текущая температура.
Хочется больше информативности - такой с контроллером MAX7219, будет видно сразу две температуры или уставки:
59d12216c5df5_Untitled-3copy.jpg.1aaa0a05b2f3c5c8256d5af7b682f82d.jpg

Ещё лучше использовать двухстрочный ЖК:
EK66871_B.PNG

Во-вторых для вашей задачи скорость процессора - вообще дело десятое! Опросить два канала АЦП раз в секунду, а то и реже, перевести из "попугаев" в реальные градусы и отправить это на индикатор - это вообще задача плёвая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, BARS_ сказал:

Абсолютно неправильно. Ничего "графического" туда добавить нельзя. Оно все должно быть в МК и ПО. Графических чипов тоже нет (есть дорогие и мощные МК с ARM ядром, в них встроен графический акселератор и можно даже игрушки запускать, но для базового GUI вполне хватает обычных МК), вся графика реализуется руками. Вы пройдите по ссылке, что выше давали и посмотрите видео. Там голый МК, причем копеечный, и дисплей.

А не проще все выводить на одном дисплее? Например таком:

LK204-25-2.jpg

Под него и библиотеки в инете готовые есть, и не надо самому пиксели рисовать, достаточно послать ему номер сроки и сдвиг символа относительно начала строки, а затем строку текста. Далее дисплей уже сам все отобразит.

А аналоговая часть у вас уже есть, которая будет между термопарой и МК? Да и заставить встроенный АЦП точно измерять напряжения тоже целая наука. А если нужна точность измерения до десятичных знаков, то это многократно усложнит задачу. Ну а программу тут реализовать очень просто. Вам надо всего лишь опрашивать 2 канала АЦП и по формуле переводить полученные значения в температуру. Далее переключать нагрузки и слать данные на дисплей. При желании можно и клавиатуру подключить для управления или связь с ПК организовать:

1111111111111111111111111111111111111111

 

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

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

Я взял два LCD 1602 (больше просто нет смысла).

Один экран это как-бы упрощает, но на самом деле усложняет (очень сильно отвлекаешься на эти надписи когда стоиш возле 600 гр).

"А аналоговая часть у вас уже есть, которая будет между термопарой и МК? " - я склепал на скорую руку LM358, подобрал сопротивление и просто вывел на стрелку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
Только что, Valerius_San сказал:

Имеются ввиду экранчики типа планшетов 7-ми дюймовых.

Там уже и частоты МК совсем другие нужны. Даже 72МГц маловато будет.

1 минуту назад, Valerius_San сказал:

Я взял два LCD 1602

Даже с  двумя такими дисплеями все будет летать. SPI там даром не нужен. Используется 6 ножек МК, 4 из которых надо подключить к одному порту. Тут можно 4 линии данных обоих дисплеев соединить вместе, а линии управления раскидать на разные ноги МК. Или же вообще все на одном дисплее отобразить, просто по кнопке переходить в режим настройки, а все остальное время отображать текущую температуру. Интерфейс будет программным, т.к. это параллельная шина данных и Mega8 такого не умеет. Да и нет смысла под такие простые дисплеи использовать что-то аппаратное. 

 

5 минут назад, Valerius_San сказал:

я склепал на скорую руку LM358, подобрал сопротивление и просто вывел на стрелку.

Ну если точность +/- лапоть устраивает, то все еще проще.

 

P.S.

Не цитируйте полностью сообщения, модераторы этого не любят. Выделяйте интересующий вас участок текста и жмите всплывающую кнопку "Цитата".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Сообщения

    • спасибо за комент! дошел  до кода  с компарированием   
    • @Dr. West , Если вы знаете более компактный аналог WS2812 - можно рассмотреть.
      Но я к сожалению таких не знаю.
      У меня между стенкой корпуса (на которой будет лого) и платой около 6 мм.
      Размер корпуса WS2812 примерно 5x5x1.6 мм.
      Боком его конечно можно поставить, но с трудом, ибо будет мешать плате сам светодиод и кусок оргстекла в 5 мм толщиной.
      Потому надо либо срезать бока корпуса WS2812 (к чему прибегать вообще не хочу, да и сточить получится без повреждений максимум 1 мм), либо искать более миниатюрный аналог...
    • Тогда очень странно, что вы не понимаете очевидных вещей: 1. Конструкция существующих  пилотов очень проста и потому надёжна (явное некачественное фуфло не рассматриваем). А также дёшева и технологична. Там всё на своём месте - ни убавить, ни прибавить. Модульно - кассетная же конструкция сразу резко увеличит стоимость и, одновременно, снизит надёжность, как механическую, так и электрическую. 2. Большинству потребителей нафиг не надо собирать какой-то там непонятный конструктор, он в этом не разбирается, ему нужен просто удлиннитель с N-ным количеством розеток и, желательно, подешевле. Благо выбор на рынке есть на любой вкус и кошелёк. 3. Универсальный мультитул "на все случаи жизни" всегда менеее удобен и стоит дороже, чем специализированный инструмент для одной операции. Т.е. на вопросы "Чем изобретение лучше существующих аналогов" и "Кому это надо" убедительных ответов нет. Итого - ваша задумка и есть то самое ведро для сортира, да ещё и телескопически раздвигающееся - в зависимости от потребного объема.
    • У дисплеев засветка идёт за счёт рассеивания в толще материала. Т.е. светодиод светит в торец листа пластика. Рассмотрите этот вариант.
    • Желательно чтоб ресурсов МК хватало для редкой смены цвета одного светодиода WS2812...
    • @Dr. West , на расстоянии не получится, в корпусе места едва ли на светодиод хватит...
      Ну и потом, в дисплеях типа 1602 светодиод с рассеивателем одно целое, никаких расстояний нет, и засветка довольно равномерная. Сам пользовался таким дисплеем, и знаю что говорю )
      Да и по фото во вложении места раз в 5 меньше в том месте, а ведь работает тоже без расстояний ) Пластик от подсветки мониторов вроде как оргстекло, есть у меня кусочек, но он по толщине не равномерен (), и раза в два-три толще чем удастся уместить...