Оптимизация кода. Что еще можно?

Тема в разделе "Микроконтроллеры AVR", создана пользователем issida, 17 фев 2017.

  1. AlexU

    AlexU Гуру

    Да с такого. Завтра автор вопроса или кто другой возьмёт Arduino UNO R4 Minima, и Ваш код принесёт ему головную боль. Почему? Да потому, что там int 32-битный и 6-ти байт уже не хватит.
    И сейчас не понятно какую платформу использует автор. Вы дали совет, исходя из предположения, что используется 8-битный AVR.
    Ваш код выигрывает 400 байт (300 байт, если не использовать флеш для хранения строковых констант) только потому, что Вы написали небезопасный код под определённую платформу.
    "Шаг-в-лево, шаг-в-право" и тут же "прилетит". А потом -- "оно же вот только что работало, что за глюки?".
    И в итогом скетче ещё не понятно будет выигрыш или нет...
     
  2. Asper Daffy

    Asper Daffy Иксперд

    А если послезавтра кто-нибудь возьмёт что-нибудь с 64-битным интом, то своем труба!

    Вот это единственная полезная и информативная фраза во всём потоке сознания. Остальное можно не читать.
     
  3. Green

    Green Гик

    Особенно когда ТС просит конкретно для тини13.) Но для защиты от дурака я иногда ставлю ключ, типа, #if !defined (__AVR_TINY__) и #error.
     
  4. parovoZZ

    parovoZZ Гуру

    а зачем в тиньку пихать строки?
     
  5. Green

    Green Гик

    А, ну да, просмотрел.(
     
  6. Unixon

    Unixon Оракул Модератор

    А что за структура EE? Можно сделать с ней union массива int<size>_t [] ?
     
  7. save.l

    save.l Гик

    atmega328p
    да обычная структура:
    Код (C++):
    struct structEE {                         // данные, хранящиеся в EEPROM
      byte u_show_data;                    // показатели на экране
      byte u_voice_hint;                     // голосовые подсказки
      byte u_port_in[2];                      //порты IN
      byte u_port_out[4];                   //порты OUT
      byte cut_tempColumn;             //кол-во столбцов
      int u_time_rezult;                      //время отображения результата (мсек)
      int u_impulse_in;                       //длительность импульса входов in (мсек)
      int u_impulse_out;                      //длительность импульса выходов out (мсек)
    ...
    ...
    } EE;