Пультоскоп на Arduino 27МГц!!!

tolkach
Offline
Зарегистрирован: 05.02.2017

Всем здравствовать.Слежу за проектом не один день,перечитал все страницы но нужной информации пока не нашел.У меня дисплей с контроллером ST7781.Заливал прошивку с японского сайта она есть здесь на страницах,работает но нет выбора развертки а без этого все превращается в игрушку.Есть на страницах разработки с фото для этого контроллера но автор не выкладывает прошивку,говорит пока все сырое.Может есть у кого наработки для этого контроллера?Буду признателен за любую информацию.Денег за комплектуху не жаль,обидно что не доведено до ума.

sakatgg
Offline
Зарегистрирован: 09.03.2017

bulat943 пишет:
про 5 в-это опорное для измерения напяжения батареи,оно равно напряжению питания атмега328(если питание 3,3 в то ставим VCC=3.3

измеряетсянапряжение на батарее!!!после него стоит стабилизатор на 5 в(или на 3,3 в),от которого запитана схема

Пробую так, подаю с DC-DC U=7.6В на A5 через 10кОм и на вход стабилизатора, на выходе 5В для питания схемы - на дисплее 5В все равно (в скетче тоже 5В). Для наглядности прилепляю фото (полноразмерное, а то тут обрезает)

http://i90.fastpic.ru/big/2017/0313/5c/1faf57c8e239315212813aed6582d75c.jpg

 

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

для sakatgg 

1. подай на питание ардуино 5 В с DC-DC (также можеш подать 5в на AREF)

2.подай на А6 - напряжение  непосредственно с аккумулятора  ,

3.в начале скетча, где описывают переменные найди

float   Vcc = 4.30      ; // напряжение на Arduino 5V pin ( Mesured by Multimeter )!!!

и поставь вместо 4,30  напряжение которое ты подаешь для питания ардуино  или AREF (5.00в).

 

 

sakatgg
Offline
Зарегистрирован: 09.03.2017

Stashevskiy68, 

Так у меня на фото так и есть: питание на  328 = 5В (через стабиизатор), c DC-DC 7.6В (вместо батареи, т.е. считай что 7.6В с неё идет) на A5. AREF ток не подсоединен.  

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

sakatgg

без схемы не разобрать. сдесь у каждого своя.

sakatgg
Offline
Зарегистрирован: 09.03.2017

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

P.S. Поменял строку



    ssd1306_string(analogRead(akb)*VCC/1024, 2);

на



    ssd1306_string(analogRead(akb)*VCC/1024, 1);

Подсоединяю для теста на A5 пальчиковую батарейку- показывает уже нормально 1.3В, литиевый аккумулятор - показывает 3.9В тож нормально, но выше 5В с DC-DC - все равно 5В кажет.

Evg-Chugunov
Evg-Chugunov аватар
Offline
Зарегистрирован: 22.08.2015

sakatgg, Так у тебя измеряемое напряжение больше, чем образцовое))). АЦП зашкаливает. Тебе нужно делителем поделить напругу с DC-DC пополам (ну или по другому, главное чтобы в диапазон попасть. Далее в скетче поправить чтобы соответствовало реальному напряжению

ArduinoFart
Offline
Зарегистрирован: 14.02.2017

В процессе переписания осцилла,застабил показометр частоты,меряет длительность,к сожалению коэф.заполнения -100%,даже не погу понять почему,мы же меряем только пол волны,должен быть 50%.Как приведу всё в удобоваримый вид,приклею автомат на прескаллер,выложу.

bulat943
Offline
Зарегистрирован: 19.09.2016

sakatgg

с батаеи ставьте делитель из 2 резисторов,у меня они по 10 ком

среднюю точку делителя ко входу ацп(вроде А5-извините,экстасенсорными способностями не обладаю,так что без скетча понятия не имею что вы там изменили)

формулу 

ssd1306_string(analogRead(akb)*VCC/1024, 2);

меняем на

ssd1306_string(2*analogRead(akb)*VCC/1024, 2);

на AREF поставить конденсатор 0,1 мкф и больше ничего(по фото я понял у вас там резистор,а это зло!)

и скетч бы глянуть

sakatgg
Offline
Зарегистрирован: 09.03.2017

bulat943, Скетч  http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=52#comment-262222 , я ток delay добавил

































void setup() {
  delay(500);// ожидаем 0.5 сек
  // автоматическое определение подключение кнопок
  byte key_test=0;
  // подтянули кнопки к питанию

На AREF  кондёр на 1nF стоит.

tolkach, у меня по ходу такой же дисплей с контроллером ST7781 (думал с SPFD5408, похожи)

Поставил PULTOSCOPE_TFT (Pultoscop v2) - облом.

Нашел скетч в теме Мини осциллограф Arduino на LCD 5110 http://arduino.ru/forum/proekty/mini-ostsillograf-arduino-na-lcd-5110?page=5#comment-158183 от fly245    - завелся

We4nost
Offline
Зарегистрирован: 30.01.2017

 Фотки не вставляются(((Обьясните. Пожалуйста

sakatgg
Offline
Зарегистрирован: 09.03.2017

А так http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume#comment-156836

Тут теги не поддерживаются, и копи-паст через комбинацию клавиш Ctrl+C и Ctrl+V проще делать

Меня уведомление с темы забомбили на ящик, вроде выставил чтобы не уведомляли, но они приходят всё равно :) Это ток с одной темы, а если еще в другой засветюсь, то ваще заспамят ящик:)

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

sakatgg пишет:

Поставил PULTOSCOPE_TFT (Pultoscop v2) - облом.

Я когда-то давненько запускал "Пултоскоп v2" на таком TFT (наверное на таком), и делал изменения, специально сохранил снимок - какие. Может и вам пригодитса:

sakatgg
Offline
Зарегистрирован: 09.03.2017

Да, читал http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=1#comment-167136 что две разновидности на SPFD5408 есть, но у меня  ST7781, давно пробовал либу на st7783, ток на ней завелся, там даже тач вроде работал, если не путаю

P.S. 

bulat943,  сделал делитеть на АКБ и скетч поправил - нормально показывает 7.8В :) Спасибо

 

sega66
Offline
Зарегистрирован: 09.11.2011

Stashevskiy68. Можете мне на почту прошивку для Сименса с граф библиотекой U8glib скинуть? sega66@yandex.ru

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

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

ДЛЯ sega66

прошивку чего ? я на С55 делаю анализатор емкости  Li-ion аккум. пультоскоп у меня на на NOKIA 5110 и 5200 (переделывал один из первых вариантов, но не доделал хотя собираюсь ) библиотекка имеется в IDE Arduino в директории Libraries\U8glib . сейчас появилась новая версия U8g2.

tolkach
Offline
Зарегистрирован: 05.02.2017

Всем здравствовать.sakatgg.Да Вы правы скетч с темы мини осциллограф работает с ST7781,я уже писал там нет управления разверткой,как пробник сигнала он потянет но не более.Задавал вопрос st77 но ответа нет.

juris Фото Ваше видел.Сейчас поздно,попробую завтра сравнить изменения в скетче, может поможет.

Пытаюсь найти как отправить сообщение пользователю но что-то пока не вижу как это сделать.

sakatgg
Offline
Зарегистрирован: 09.03.2017

tolkach, Почитал тут http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=27&

Подключил либу последнюю Mcufriend_kbv_2.92, закоментил две строчки в скетче Pultoscop v2 TFT  и две добавил, завелся на моём 2.4″ 320X240 TFT Touchscreen Shield на st7783 (если верить ID) Pultoscop v2 TFT :)  















//страничка проекта http://srukami.inf.ua/pultoscop_v2.html
//дистплей TFT SPFD5408
#include <Adafruit_GFX.h>    // Core graphics library
//#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

 

VetalST
Offline
Зарегистрирован: 29.12.2015

Xumuk пишет:

у меня ls020, Вы как то просто говорили, что можете переделать под 8 бит, но потом как я понял вас долго не было и у вас сломался компьютер, поэтому и спрашиваю не делали ли)

B ослике VirtOS библиотека 8 бит или 16 бит но ее нужно добавлять в папку с скетчем. Вот примеры https://yadi.sk/d/yuOUYFOz3Fv2cm вдруг че не поймете пишите.

 

tolkach
Offline
Зарегистрирован: 05.02.2017

sakatgg.Спасибо за информацию.Будем танцевать дальше.

ywor
Offline
Зарегистрирован: 16.01.2017

 а мне вот удалось запустить на таком динозавре 480х320  

Electronik83
Offline
Зарегистрирован: 06.12.2015

Можно код глянуть? Дисплей какой чип? Не тормозит?

Electronik83
Offline
Зарегистрирован: 06.12.2015

Можно код глянуть? Дисплей какой чип? Не тормозит?

ywor
Offline
Зарегистрирован: 16.01.2017

контроллер дисплея HX8357 вроде не тормозит у меня ардуино мега2560

ywor
Offline
Зарегистрирован: 16.01.2017

Одна проблема надо ввесь код править мне пока только часть удалось поправить на фото видно

sakatgg
Offline
Зарегистрирован: 09.03.2017

Вроде здесь читал, что на 2560 не будет работать, тоже бы попробовал на 2.4″ 320X240 TFT Touchscreen Shield на st7783, сравнил бы скорости

Подкажите, PULTOSCOPE_TFT v2, как кнопки просто на землю замыкание сделать, без резюков, как сделано в   PULTOSCOPE_SSD1306_final2_DDS_Z_EL83_EDITION? Спасибо

P.S. На версию с Oled дисплеем поставил кварц на 25Мг (снял с МП), вроде пашет, на 32Мг - мусор на дисплее

satelit 2
Offline
Зарегистрирован: 04.12.2016

мое предложение про esp12(80мгц) ни кто не поддержит, или все таки ацп решает.

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

satelit 2 пишет:

мое предложение про esp12(80мгц) ни кто не поддержит, или все таки ацп решает.

Вы настойчивы раз спрашиваете второй раз, но увы там АЦП хуже чем в Атмега328,

даже затрудняюсь сказать на сколько, раз в 10 минимум.

Да там не АЦП а просто огрызок.

satelit 2
Offline
Зарегистрирован: 04.12.2016

по характеристикам и тут и там 10 бит, глубже я не разбираюсь(меня частота 80 мгц порадовало, две штуки на руках)

Electronik83
Offline
Зарегистрирован: 06.12.2015

Всем привет! Кому интересно, тестим. Мой релиз на LCD5110, долго сидел, много думал.

Хочу подметить, что занимает половину флэши, и почти всю рам: из-за дисплейного буфера и ацп-буфера.

uFAQ_1: "А как надо подключать кнопки на прошивке версии от Electronik83?".

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

uFAQ_2: "В DDS-генераторе не выбирается форма сигнала, почему так?".

В работе DDS-генератора не надо подтверждать ничего. Переключил форму сигнала, и она уже весит на выходе.

uFAQ_3: "При компиляции ошибка Low memory available, stability problems may occur.???"

Эт нормально, прошивайте, и будет счастье)

uFAQ_4: "У меня не компилируется, всякие ошибки. Почему?"

Берите Arduino IDE с сайта автора http://srukami.inf.ua/pultoscop_v25110.html, и все должно работать.

uFAQ_end;

Про изменения можно почитать в скейтче, в самом начале. 

ссылка на скейтч: https://yadi.sk/d/uGw4uOME3G2sDP

P.S. Bodriy2014, тебе привет и спасибо. Если есть желание, размести на своём сайте этот релиз.

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

для  Electronik83:

залил новую прошиву! ЗАЧЕТ ! входит во все режимы ! перезапуск с кнопок работает!  в DDS  все наглядно ,хотя  я бы еще значение частоты вывел. в генераторе сделал бы цифры крупнее. буду дальше следить за развитием! завтра попробую на работе потестировать (если время будет).  

Electronik83
Offline
Зарегистрирован: 06.12.2015

Stashevskiy68 пишет:
Перезапуск с кнопок работает!

С осцилла тоже перезапускается? Кнопки с подтяжкой к земле?

Stashevskiy68 пишет:
В DDS  все наглядно ,хотя  я бы еще значение частоты вывел.

Не буду и не хочу почему то:) Т.к. тут выше килогерца не подняться.

Stashevskiy68 пишет:
В генераторе сделал бы цифры крупнее.

Не влезет тогда ничего в дисплей....

 

sakatgg
Offline
Зарегистрирован: 09.03.2017

sakatgg пишет:
Подкажите, PULTOSCOPE_TFT v2, как кнопки просто на землю замыкание сделать, без резюков, как сделано в   PULTOSCOPE_SSD1306_final2_DDS_Z_EL83_EDITION?

Добавил в скетч две строки:









void setup(){  
  // подтянули кнопки к питанию
  digitalWrite(levo, HIGH); digitalWrite(pravo, HIGH); digitalWrite(ok, HIGH);
    Vakb=analogRead(A6)*5.3/1024;//проверка напряжения на АКБ

И значение на кнопках везде перевел c HIGH на LOW (несколько мест). Вроде нормально работают без резюков, с замыканием на землю :)

profinrus
Offline
Зарегистрирован: 18.03.2017

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

пытаюсь подружить ваш пультоскоп с Mega2560 и вот с таким экраном https://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-module-Ultra-HD-320X480-for-Arduino-MEGA-2560/32607435835.html?spm=2114.13010608.0.0.fHYx2m

и ничего не получается,что может быть?

Electronik83
Offline
Зарегистрирован: 06.12.2015

profinrus пишет:

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

пытаюсь подружить ваш пультоскоп с Mega2560 и вот с таким экраном...

и ничего не получается,что может быть?

Что то не так делаете. А так - тут на форуме экстрасенсов нет, никто гадать не умеет.

У меня с первого раза с этим экраном все получилось. Ищите нужный скейтч. И к стм32 я тоже его успешно подключил...

sakatgg
Offline
Зарегистрирован: 09.03.2017

Electronik83, Сколхозил по быстрому на 5110 :) Запитывал через стаб на 3.3В

Проверил терминал, шустро выводит, роутер выключаю - практически мгновенно прекращается вывод , подключаю - продолжается.

На SSD1306 версии бы так ускорить вывод :) экран побольше расрешением всё-таки.

Из меню осциллографа по нажатию +и- (к GND, без резюков) - имеем цветок на экране, в остальных режимах нормально.

Еще, мож это от моих пленочных кнопок так, но иногда по несколько значений перескакивает (типа дребезг). Где там можно подрегулировать? Спасибо за труды. :)

ywor
Offline
Зарегистрирован: 16.01.2017

ну вот и на меге запустил с дисплеем 480х320 будем растягивать. да скорость порадовала.

vltab
Offline
Зарегистрирован: 02.08.2016

Помогите с библеотекой под китайский дисплей 3310 

скетч PULTOSCOPE_LCD5110_final2_DDS_Z_EL83_09022017 на дисплее снизу и справо мусор

пользуюсь arduino-1.6.5-r5

Winstonn
Winstonn аватар
Offline
Зарегистрирован: 25.02.2017

Electronik83 пишет:
ссылка на скейтч: https://yadi.sk/d/uGw4uOME3G2sDP

Привет, вернулся из командировки, а тут у тебя уже выложен чёткий релиз !, стжу, тестирую, изучаю код и переучиваюсь ))

Резет через <&> из осциллоскопа у меня таки виснет, как ты и описывал, на чертополохе. Залечил это следующим:

#include <avr/wdt.h>                               // это добавил с самом начале

while (flag_key-!digitalRead(key_down) || flag_key-!digitalRead(key_up)) {} 
    delay(1000);             
    wdt_enable(WDTO_30MS);                        //  а сюда вписал это  
    ResetAvr();  

Пора делать нормальный delay для кнопок! Ато в осциллоскопе не успеваю ничего нажать, всё мелькает даже на 16Мгц. Подбираю сейчас для этого наилучший коэфициент , пока стоит вот этот:


int del = 300*overclock/16;              //защита от дребезга на разных кварцах

delay(del);                              //защита от дребезга

 

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

для Winstonn

а стоит ли реализация сомнительной  функции  нескольких килобайт памяти (подключение  AVR/WDT.H ). я тут, на медне, столкнулся с тем что отключив пару фонтов  освободил 8 килобайт памяти для реализации дополнительных функций. может поискать другой путь выхода в меню например длительное нажатие на OK  или структруировать и оптимизировать код. понимаю что работы добавиться но  все равно в это упремся.

 

Winstonn
Winstonn аватар
Offline
Зарегистрирован: 25.02.2017

для Stashevskiy68

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

Electronik83
Offline
Зарегистрирован: 06.12.2015

Winstonn пишет:

Резет через <&> из осциллоскопа у меня таки виснет, как ты и описывал, на чертополохе. Залечил это следующим:

#include <avr/wdt.h>                               // это добавил с самом начале

while (flag_key-!digitalRead(key_down) || flag_key-!digitalRead(key_up)) {} 
    delay(1000);             
    wdt_enable(WDTO_30MS);                        //  а сюда вписал это  
    ResetAvr();  

За это респект:))) Пока оставлю так. Но с собакой разбираться надо...

Winstonn пишет:

int del = 300*overclock/16;              //защита от дребезга на разных кварцах

delay(del);                              //защита от дребезга

Давай не будем тратить целых два байта оперативы и пропишем так:

#define del 300*overclock/16

// ...

delay (del);

----------------------

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

----------------------

Еще изучаю код ESR транзистор-тестер. В принципе можно интегрировать его в пультоскоп. Памяти по моим прикидкам хватит. Правда проблема - надо 6 цифровых выходов и 3 аналоговых входа. Так что пока опять я ухожу в подполье. Буду сидеть думать:)

Electronik83
Offline
Зарегистрирован: 06.12.2015

vltab пишет:

на дисплее снизу и справо мусор

У тебя не 3310, а 3410 - у него разрешение больше немного - вот тебе и мусор.

Electronik83
Offline
Зарегистрирован: 06.12.2015

sakatgg пишет:

Проверил терминал, шустро выводит, роутер выключаю - практически мгновенно прекращается вывод , подключаю - продолжается.

На SSD1306 версии бы так ускорить вывод :) экран побольше расрешением всё-таки.

Дак там надо одну задержку внутри цикла приема убрать - и будет так же работать. Еще будет порт этой версии на ssd1306. Правда по времени не буду обещать, когда. А так да - мне 1306 тоже больше нравится, нежели 3310....

Еще есть задумка сделать один скейтч на несколько дисплеев. Через дефайны можно чудеса творить:)

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

 набросал для своего проекта, но  не смог померить с U8glib  ( в ней вывод на экран,  для меня не очень удобен порой приходится данные засовывать в массив  а из функции вывода на экран  их вызывать) не всегда работает внешняя функция .   может кто попробует

//********************************************************************************************************************************************************************************
// функция опроса клавиатуры  -  возвращает  int число  для последующей обработки
// возвращает цифру в зависимости от комбинации клавиш
// вызов функции   int Press_key = opros_key(key_ok, key_up, key_down)
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 int opros_key (int ok,int up,int down ) {
 int key = 0                                                                        ; // внутренняя переменная    
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  if (!digitalRead(ok)){key=0;delay(100);}                                           // если нажата кнопка ok           , бикнуть, задержка 0.1с
  if (!digitalRead(up)){ key=1;delay(100); }                                         // если нажата кнопка вверх
  if (!digitalRead(down)){ key=2;delay(100); }                                       //                    вниз 
  if (!digitalRead(ok)&&(!digitalRead(down))){key=3;delay(100);}                     // если нажата кнопка ok + вниз
  if (!digitalRead(up)&&(!digitalRead(ok))){key=4;delay(100);}                       // если нажата кнопка вверх + ok
  if (!digitalRead(up)&&(!digitalRead(down))){key=5;delay(100);}                     // если нажата кнопка вверх + вниз
  if (!digitalRead(up)&&(!digitalRead(down))&&(!digitalRead(ok))){key=6;delay(100);} // если нажата кнопка вверх + вниз
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  return key;
 }
//*****************************************************************************************************************************************************************************

 

Electronik83
Offline
Зарегистрирован: 06.12.2015

Stashevskiy68 пишет:

 набросал для своего проекта, но  не смог померить с U8glib  ( в ней вывод на экран,  для меня не очень удобен).   может кто попробует

//********************************************************************************************************************************************************************************
// функция опроса клавиатуры  -  возвращает  int число  для последующей обработки
// возвращает цифру в зависимости от комбинации клавиш
// вызов функции   int Press_key = opros_key(key_ok, key_up, key_down)
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 int opros_key (int ok,int up,int down ) {
 int key = 0                                                                        ; // внутренняя переменная    
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  if (!digitalRead(ok)){key=0;delay(100);}                                           // если нажата кнопка ok           , бикнуть, задержка 0.1с
  if (!digitalRead(up)){ key=1;delay(100); }                                         // если нажата кнопка вверх
  if (!digitalRead(down)){ key=2;delay(100); }                                       //                    вниз 
  if (!digitalRead(ok)&&(!digitalRead(down))){key=3;delay(100);}                     // если нажата кнопка ok + вниз
  if (!digitalRead(up)&&(!digitalRead(ok))){key=4;delay(100);}                       // если нажата кнопка вверх + ok
  if (!digitalRead(up)&&(!digitalRead(down))){key=5;delay(100);}                     // если нажата кнопка вверх + вниз
  if (!digitalRead(up)&&(!digitalRead(down))&&(!digitalRead(ok))){key=6;delay(100);} // если нажата кнопка вверх + вниз
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  return key;
 }
//*****************************************************************************************************************************************************************************

Блин, извини, ну кто так пишет.....

1. delay(100); удали везде и пропиши один раз перед возвратом, в конце процедуры, используя else. Или сделай key = 0 - это когда ничего не нажато и проверяй перед выходом из функции и делай задержку.

2. Кнопки можно собирать в переменную ПОБИТНО - меньше будет условий, или вообще не будет.

3. Не надо тыкать int где ни попадя - это два байта, а используется меньше байта. Пиши byte или unsigned char или uint8_t.

4. И не надо стремиться каждый кусок кода объеденить в отдельную функцию/процедуру - иногда это не есть хорошо. Т.к. вход и выход из процедуры занимает много ресурсов камня.

5. И да, Winstonn прав - под разные кварцы надо делать свою задержку дребезга. И ваще нужно/можно обработку кнопок сделать в прерываниях. Будет нажиматься четче.

6. И еще смотри - не обязательно делать входные данные в функцию в виде переменных в оперативе key_ok, key_up, key_down. Можно их в начале программе в #define задать и потом использовать повсюду. Т.е. сделать, чтоб функция не принимала данных, а возвращала код нажатой кнопки. Ведь мы не собираемся по ходу программы менять подключение кнопок, так?  

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

для Electronik83

согласен  со всем что ты написал. но я нахожусь в стадии обучения (я вообще не писал на таких языках). писал на CLIPPER 5(базы данных), он как бейсик(там такого кол-ва  типов переменных не было) по этому и такой стиль написания. а потом была   1С бухгалтерия - нужно было семью кормить  в 90-е.

   

Electronik83
Offline
Зарегистрирован: 06.12.2015

Stashevskiy68 пишет:

для Electronik83

согласен  со всем что ты написал. но я нахожусь в стадии обучения (я вообще не писал на таких языках). писал на CLIPPER 5(базы данных), он как бейсик(там такого кол-ва  типов переменных не было) по этому и такой стиль написания. а потом была   1С бухгалтерия - нужно было семью кормить  в 90-е.

Дак форум для того и нужен, чтобы меняться опытом. И тебе повезло, что я - добрый человек. Ты посиди, подумай. Может придумаешь что сам - будет полезно тебе. А я, завтра вечером, скину свой код твоей функции..:)) Мерятся пиписьками не будем - не люблю.

Я с БД тоже работал - там такое ощущение, что оперативы и прочих ресурсов ваще немерянно)) Особенно меня взбесило писать программы на русском языке:) Я ваще в шоке был поначалу... 

А бэйсик - это ваще ностальгия. Я с него на спектруме начинал... Но потом быстро на ассемблер перешёл:)))

Извиняйте за флуд:))

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

Electronik83

 да ты непарься. я занят другим проектом.закончу выложу. там уж  накритикуешься. хотя у меня был друг портной так он говорил если платье носится значит оно пошито хорошо так-же и с кодом работает без глюков и слава богу а если им еще и люди пользуются вообще  КЛЛАС. Совершенствовать программу можно бесконечно(вплоть до ассемблерного кода) - главное программера ограничить во времени!!!

я в свое время тоже пару спектрумов собрал (ленинград 2 -48к) пару неделек поигрался и купил себе AMD-100 (1996.)

Electronik83
Offline
Зарегистрирован: 06.12.2015

Я и не парюсь. До бани ехать 28 киллометров:) Шутка:)

А на свой проект ссыль тут кинь или на почту мне:)

Li-ion батналайзер?