Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

veso74,
Да, понял, спасибо, исправил.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1922
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Не пишите много раз в EEPROM, там ресурс совсем не большой (100 000 раз, на самом деле в напр. ~10 раз больше). EEPROM быстро создаст проблемы. Напр. сохранять только статические настройки, изменения при выключения/вкл. и т. д.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

electroget
Вывод в порт у любой ардуинки возможен. Разница между мега 2560 и мегой 328 только в наличии "полных портов" на 8 бит.
И то... если в 328й использовать только как порт PD - будет вариант 8-битного вывода (но забываем про Rx/Tx, прервыания и перепрошивку через бутлоадер). Да еще можно без внешнего кварца PB использовать - но то уже не "классическая" нанка/про-мини, а некий самодел под специализированной "платформой".
Для простейших тренировок можете воспользоваться симулятором
статья
http://sheepdogguides.com/arduino/aht9simsimm.htm
сайт с симулятором
https://www.sites.google.com/site/unoardusim/
8)
Совет - прячьте код под спойлер - иначе занимает много места и отвлекает внимание от вопроса.
Для тестов лучше библиотеки не использовать (та же EEPROM) - добавляют трудностей на начальном этапе освоения.
Достаточно обычного массива в ОЗУ.
avr/io.h и так "по умолчанию" в ардуиноIDE подключен.
:tea:
Поставщик валерьянки для Кота
Сообщения: 1922
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

https://wokwi.com/projects/new/arduino-mega
и Ваш код смоделирован там. Дело за 5 секунд.

Изображение

Но это все равно симулятор - есть несоответствия напр. по определенным действиям/операциям/алгоритмам.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

[uquote="veso74",url="/forum/viewtopic.php?p=4565054#p4565054"]Не пишите много раз в EEPROM, там ресурс совсем не большой[/uquote]
Благодарю за совет, но это пока всё тестовые наработки, если дело когда-нибудь дойдёт до реальной схемы, то eeprom конечно же будет внешний, на чипе 25LC08 например.

Добавлено after 1 minute 10 seconds:
BOB51,
Понял, спасибо.

Добавлено after 4 minutes 41 second:
veso74,
Пока не вижу необходимости пользоваться симулятором. У меня есть живая плата и живой Ардуино IDE, так оно как-то привычнее людям старой школы.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1922
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Я тоже, по-старому :). Моделирование в симуляроре только как идея, напр. думать о наших делах для хобби в местах, где включение железа невозможно, на работе например :).
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

veso74,
Я этим всем занимаюсь только в любительском плане и только дома, по выходным в основном. Живое железо имеет то преимущество, что нет сомнений в полученном или не полученном результате. А для неспециалиста (а я не специалист в программировании микроконтроллеров) это очень важно.
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Симулятор (да еще и с симуляцией простейшей внешней обвязки) дает возможность просмотреть пошаговое выполнение программы и состояние переменных. Полезно при отладке простых алгоритмов.
Более сложные моменты проверяются отладкой в железе с выводом контрольной информации на терминалку IDE.
8)
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

[uquote="BOB51",url="/forum/viewtopic.php?p=4565129#p4565129"]Симулятор (да еще и с симуляцией простейшей внешней обвязки) дает возможность просмотреть пошаговое выполнение программы и состояние переменных.[/uquote]
Это интересно, благодарю за информацию.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

BOB51 писал(а):Разница между мега 2560 и мегой 328 только в наличии "полных портов" на 8 бит
я бы так не сказал, разница гораздо больше, одной FLASH-памяти 256К против 32К - это несущественно?! 4 штуки 16-битных таймера, 4 USART - это мелочи?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

В данном случае человека интересовали именно порты с байтовой организацией.
За начинку разговор пока еще не шел (начало освоения).
Интерес к аппаратным вкусностям будет позже проявляться.
8)
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Коробейка "на DIP микросборках":
https://www.rlocman.ru/news/new.html?di=665979
Так что форм-фактор ардуино-нано /про-мини и подобных имеет право на развитие...
:idea: 8)
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

BOB51, стоимостью лучше даже не интересоваться...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Речь о применимости форм-фактора "DIP микросборка" элементной базы вида "ардуиноподобные".
Ежли далее пойдет станет стандартом блочно-модульный вариант но с меньшим размером модулей при одновременном росте их функциональности и надёжности.
То, о чем ранее говорилось.
8)
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Весьма интересный редактор текстов для смартфона...
https://www.rustore.ru/catalog/app/ru.w ... editorfree
поставил для работ с исходниками вдали от компа...
:hunger:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Попались для коллекции адуринки с atmega 328PB
https://img.radiokot.ru/files/20529/3gqj8doppv.jpg
:hunger:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Навеяло по мотивам:
https://radiokot.ru/forum/viewtopic.php?f=57&t=193692
одиночная кнопа с селекцией по длительности удержания (черновик - тест на нанке под ардуино IDE)
Спойлер

Код: Выделить всё

/*
*---- шаблон главного файла проекта ----*
*------------  TEST  -------------------*
*            test.ino
*/
//---------------------------------------------------------
/*
* раздел подключаемых файлов, обьявлений
* и размещения конструкторов классов
*/


//#include "test.h" // файл глобальных дефайнов текущего проекта


#define LED 7 // control led active 1
#define knop 14 // кнопка active 0

#define skstm 35 // (antizvon) значение антидребезговой паузы в mS
#define cnt1_data 15 // значение кванта для указателя(вектора) в 1015mS

volatile byte SnDat = 1; // буфер предыдущего значения кнопки
volatile int cnt1 = 0; // счетчик досчета "условных единиц" для вектора исполняемой программы
volatile byte ptrr = 0; // указатель(вектор) исполнительной программы
volatile byte count = 0; // счетчик количества коротких нажатий
// обнуляется "длинным удержанием"

volatile byte flag1 = 0; // флаг "зафиксировано изменение статуса кнопки"
volatile byte flag2 = 0; // флаг "изменение статуса кнопки подтверждено"
volatile byte en_cnt1 = 0; // флаг "счет интервала разрешен"

// инициалзация выводов МК и генератора сетки опроса сенсоров/кнопок
void skan_init();


//---------------------------------------------------------

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
    skan_init();
}

//---------------------------------------------------------

void loop() {
  // put your main code here, to run repeatedly:
   if(flag2)
   {
    flag2=0;
    // если кнопка стала равна 0
    if (!SnDat)
     {
       ptrr = 0; // сброс вектора в 0
       cnt1 = 0; en_cnt1 = 1; // активировать счет
     }
    // если удерживается статус 0
      //продолжить счет

    // если кнопка стала равна 1
    else{
      en_cnt1 = 0; // остановить счет
      // отработать исполнитель согласно вектора
   switch (ptrr) {
    case 0:
      //do something when var equals 1 фальстарт(0-525mS)
      break;
    case 1 ... 5:
      //do something when var equals 2 интервал номер 1 (525 - 2625mS)
      digitalWrite(LED, HIGH); count++;
      Serial.println(count, DEC);      
      break;
    case 6 ... 15:
      //do something when var equals 3 интервал номер 2 (3150 - 7875mS)
      digitalWrite(LED, LOW); count = 0;
      break;
    case 16 ... 25:
      //do something when var equals 6 аварийный сброс по "залипанию" (8400- 13125mS)
      break;
    default: 
      // if nothing else matches, do the default
      // default is optional
    break;
   }
  }

    // если удерживается статус 1
      // ничего не делать
   }
}

//---------------------------------------------------------
/*
* "подвал" с описанием функций
*/

// инициалзация выводов МК и генератора сетки опроса сенсоров/кнопок
void skan_init()
{
 digitalWrite(knop, HIGH);
 pinMode(knop, INPUT_PULLUP);
 digitalWrite(LED, LOW);
 pinMode(LED, OUTPUT);
 
 cli(); //noInterrupts();
 OCR0A = 127; TIMSK0 |= (1<<OCIE0A);
 sei(); //interrupts();
}

/* генератор сетки опроса сенсоров/кнопок (1mS)
 * и самого опроса ЛВК
 * по выходу при подтвержденной комбинации
 * flag2=1, SnDat = значению кнопки,
 * skstm = время удержания комбинации в mS*skstm (50mS)
 */
ISR(TIMER0_COMPA_vect)
{
 static byte Cnt_A=0; // счетчик досчета для антидребезговой паузы в uS
 static byte sn_tmp0; // буфер текущего значения кнопки
   Cnt_A++;
   if (Cnt_A == skstm)
    {
     Cnt_A=0;
     sn_tmp0 = digitalRead(knop); // читаем порт в буфер текущего значения
     // действия при совпадении с предыдущим значением
     if (SnDat == sn_tmp0)
      {
       if (flag1)
       {
        flag1=0; // антидребезг отработан, значение подтверждено
        flag2=1; // запрос на обработку в основном цикле программы
          // сбрасывается в основном цикле программы
       }
      }

     // действия при несовпадении с предыдущим значением
     else {flag1=1; SnDat = sn_tmp0;}

    // вычисление вектора по количеству переполнений счетчика длительности
       // cnt1 если данное действие резрешено основной программой
     if (en_cnt1)
     {
      cnt1++;
      if (cnt1 == cnt1_data){cnt1=0; ptrr++;}
     }
     
    }
}



//---------------------------------------------------------
//-------------конец файла/end of file---------------------
test.rar
(3.12 КБ) 91 скачивание
:sleep:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Несколько дополнений для пользователей Dev-C++ из тырнета:
https://kpolyakov.spb.ru/school/c/faq.htm#bgi
:roll:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1352
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

[uquote="BOB51",url="/forum/viewtopic.php?p=4593751#p4593751"]Несколько дополнений для пользователей Dev-C++ из тырнета:
https://kpolyakov.spb.ru/school/c/faq.htm#bgi
:roll:[/uquote]
угу. Dev.C это хорошо.
з.ы. майл.ру навязывает сервис новый, Mail Space. Пробовал заглянуть туда,там письма мои лежат за 2006 год.
короче,двадцатилетней давности. Естественно,не помню че там с кем переписка,но почитать забавно.
Нездоровая какая то фигня. :o кому надо хранить это? причем с обычного ихнего сайта это
недоступно.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15663
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

То ли стервис то ли очередное мошенничество.
На сегодня мошенники в тырнете основной контингент после желающих бабло срубить.
:twisted:
Относительно того Dev-C++ и статеек...
Получается успел урвать несколько из того, что тяжко найти... Там было деление на статейки относительно просто Си (они легкодоступны) и их варианты относительно Dev-C++...
Вот их на всяк случай прицеплю (ибо сегодня проверяя ссылки их второй раз не обнаружил - остались лишь по простому Си)
Глава 1 (Dev-C++).pdf
(904.98 КБ) 120 скачиваний
Глава 2 (Dev-C++).pdf
(808.55 КБ) 88 скачиваний
Глава 4 (Dev-C++).pdf
(684.97 КБ) 212 скачиваний
:(
Ответить

Вернуться в «Разные вопросы по МК»