Как расположить во флеш памяти Arduino Mega2560 Бинарные Данные.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

В 13 все посчитано - все что больше 65535 приведет к ошибке работы алгоритма

для обхода этого и подключали MegaCore

теперь 18 картинок можно разместить в PROGMEM1 + 18 картинок можно разместить в PROGMEM2 + 17 картинок можно разместить в PROGMEM3

можно еще и в PROGMEM, но столько - что бы картинки в PROGMEM и код поместились строго в 64К

я точно не смеюсь - я рыдаю

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

вот теперь вы мне доходчиво пояснили смысл проделываемого. только я поняла так. первые 18 картинок мы обозначаем как const byte bild_01[] PROGMEM1= , const byte bild_02[] PROGMEM1= , const bild_03[] PROGMEM1= и так далее для первых 18 картинок, после PROGMEM2= для следуюших 17 картинок и т.д. верно или нет

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

по 18 в 1 и 2

17 в 3 (что бы не затереть загрузчик)

думаю штук 10-15 и в просто PROGMEM можно, но это надо тестировать

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

на это симулятор и рассчитан. все верно. поняла изначально весь объём картинок посчитать  и распределить грамотно. 

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

я так поняла, записав вот как const byte _bild_01[] PROGMEM1={далее нолики и единицы}; далее все как есть, не меняя и case 1: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_01)));} break; с одним файлом скомпеллировалось. но это 1 файл, а как прописать первые 18, а потом 2 блок 18  и 3 блок 17?я думаю так. 18 файлов с маркировкой PROGMEM1= ,  18 файлов с маркировкой PROGMEM2=, и 17 файлов с маркировкой PROGMEM3= это я поняла, а далее pgm_read_byte_far(pgm_get_far_address(bild_01,02,03 и т.д до 18 файлов)));} а следующий пакет 18 файлов так pgm_read_byte_far_far(pgm_get_far_far_address(bild_01,02,03 и т.д до 18 файлов)));} и третий пакет 17 файлов  pgm_read_byte_far_far_far(pgm_get_far_far_far_address(bild_01,02,03 и т.д до 17 файлов)));}или  ознакомившись с примером GitHub. значит  const byte far _bild_01[] PROGMEM1={далее нолики и единицы}; const byte far_bild_02[] PROGMEM1={далее нолики и единицы}; const byte  far_bild_01[] PROGMEM1={далее нолики и единицы};и до первого пакета 18 файлов PROGMEM1= середину не указываю и switch (mode) {

11 for(i = 0; i < sizeof(far_bild_01); i++)
12 {
13 c = pgm_read_byte_far(pgm_get_far_address(far_bild_01) + i);
14  Serial.write(c);
15  }
и далее все также только far_far ко 2 пакету и к 3 пакету far_far_far
а в какое место прописать вот эти строки  void print_progmem()
06 {
07  uint8_t i;
08  char c; 
вот поправьте,если не правильно.
Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Раз вы не можете сделать иначе - 

делайте bild_19 case 19 т так до упора ...

ещё раз (крайний) передача байта - SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_01) + pointer + l))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Мошт, лучше на кулинарные курсы пойдёшь, всё толку больше будет

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

вот что получается если записать так //Bild_02 //1-48 листья

const byte bild_02[] PROGMEM1=
{0000111};
//Bild_03 //1-48 листья
const byte bild_03[] PROGMEM1=
{ код};
//Bild_04 //1-48 листья
const byte bild_04[] PROGMEM1=
{ код};
//Bild_05 //1-48 листья
const byte bild_05[] PROGMEM1=
{ код};
case 1: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_01) + pointer + 1));}
       break;
case 2: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_02) + pointer + 1));}
       break;
case 3: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_03) + pointer + 1));}
       break;
case 4: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_04) + pointer + 1));}
       break;
case 5: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_05) + pointer + 1));}
       break; и так до 18 файлов. компилируется. а если дальше прибавлять. вот так
 
//Bild_19 //1-48 листья
const byte bild_19[] PROGMEM2=
{-----};
//Bild_20 //1-48 листья
const byte bild_20[] PROGMEM2=
{-----};
//Bild_21 //1-48 листья
const byte bild_21[] PROGMEM2=
{-------};
//Bild_22 //1-48 листья
const byte bild_22[] PROGMEM2=
{--------};
 
 case 19: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far_far(pgm_get_far_far_address(bild_19) + pointer + 1));}
       break;
 case 20: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far_far(pgm_get_far_far_address(bild_20) + pointer + 1));}
       break;
 case 21: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far_far(pgm_get_far_far_address(bild_21) + pointer + 1));}
       break;
case 22: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far_far(pgm_get_far_far_address(bild_22) + pointer + 1));}
       break;
на case 22 ошибка.
вот так тоже пробовала //Bild_19 //1-48 листья
const byte far-bild_19[] PROGMEM2=
{};  ошибка в строке case 22
ошибка выдается не было заявлено в объеме . `pgm_get_far_far_address`was not declared in this scope как это правильно написать
извините пожалуйста . а я правильно попала, на форум? то есть, это то место, где можно задавать разные интересующие тебя вопросы по теме и желающие! и знающие!  могут ответить на эти вопросы, по мере возможности и знаний. или я ошибаюсь. здесь просто съезд  учёных со всего мира, а я влезла со своими глупыми и дурными вопросами, а может здесь просто отдел сатиры и юмора. только не обижайтесь пожалуйста будьте добры. хорошо?! 

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Идите на ... крестиком вышивать ...

56 пост читали или «чукча не читатель - чукча писатель» ???

какой ...far_far... ???

«дебилы блять» Лавров С.В.

Регистрация на форуме 2018 год !!! По какой книге вы самообразовываетесь ???

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

я может и не правильно написала, полностью согласна, но я руководствовалась примером с GitHub

const char far_away[] PROGMEM1 = 

02 const char far_far_away[] PROGMEM2 = 

03 const char far_far_far_away[] PROGMEM3=
и соответственно far  far_far  far_far_far
поэтому так и написала, думала что так правильно
инна
Offline
Зарегистрирован: 26.12.2018

если все строки case 22: for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_22) + pointer + 1));} написать одинаково. от и до. все компилируется.  завтра загружу и проверю 

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

чукча не только, читатель и писатель. а еще домысливатель! во как!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

инна пишет:

чукча не только, читатель и писатель. а еще домысливатель! во как!

чота, на гиганта домысливания ты нихрена не тянешь. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

инна пишет:

извините пожалуйста . а я правильно попала, на форум? то есть, это то место, где можно задавать разные интересующие тебя вопросы по теме и желающие! и знающие!  могут ответить на эти вопросы, по мере возможности и знаний. или я ошибаюсь. здесь просто съезд  учёных со всего мира, а я влезла со своими глупыми и дурными вопросами, а может здесь просто отдел сатиры и юмора. только не обижайтесь пожалуйста будьте добры. хорошо?! 

Нет.

Задавать разные вопросы, как и на подавляющем большинстве других форумов, здесь не следует (разве что в разделе "Отвлеченные темы"). Вопросы следует задавать только по тематике форума. 

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

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

где можно задавать разные интересующие тебя вопросы по теме и желающие! и знающие!  могут ответить на эти вопросы, по мере возможности и знаний. я не так написала в №58 ?

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

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

b707
Offline
Зарегистрирован: 26.05.2017

инна, а вы за три года на форуме код вставлять в сообщения правильно не научились?

Коллеги, предлагаю на неверно оформленные сообщения больше не отвечать

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Читать вы не умеете так же как и программировать:

  // Print out far_away
  for(i = 0; i < sizeof(far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_away) + i);
    Serial.write(c);
  }

  // Print out far_far_away
  for(i = 0; i < sizeof(far_far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_far_away) + i);
    Serial.write(c);
  }
  // Print out far_far_far_away
  for(i = 0; i < sizeof(far_far_far_away); i++)
  {
    c = pgm_read_byte_far(pgm_get_far_address(far_far_far_away) + i);
    Serial.write(c);
  }

Где здесь pgm_read_byte_far_far(pgm_get_far_far_address( ???

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Я учился на ВТ (вычислительная техника) девушек было чуть ли не больше половины потока.

Из них только ОДНА пошла по стезе программирования после института !!! (и то я её код не видел, а во время учебы и она звезд с неба не хватала)

Мальчиков же программистов достаточно много.

На лабораторных ВСЕГДА в команде девушек были мальчики !!!

 

Так что девушкам шить варить ... ... ..., но не программировать и не паять !

b707
Offline
Зарегистрирован: 26.05.2017

Смысл поступления девушек на ВТ (как впрочем почти налюбую другую специальность) - выйти замуж. Ну а обучение помогает потом не сидеть полной дурой, когда муж рассказывает о работе :)

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

а в чем причина. все сделала как написано 18 файлов прописала как PROGMEM1= и 4 файла PROGMEM2= скомпилировалось без ошибок, но при загрузке в плату  avrdude:stk500_getsync() attempt 1of 10 not in sync: resp=0xde сток таких от 1 до 10 и ошибка загрузки в плату. 

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

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

b707
Offline
Зарегистрирован: 26.05.2017

загрузчик стерли?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Причин может быть много. После того как установили MegaCore - были успешные загрузки ???

Порт правильно выбран ???

Начать с попытки загрузки простого скетча типа BLINK.

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

c 72 сообщением я сама разберусь. я нашла в чем у меня проблема. в настройках проблемка была. загрузилось без проблем

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

22 картинки появились ?

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

после внесения изменений, все картинки стали отображаться не правильно. я все таки думаю что вот это {SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_11) + pointer + 1));} надо написать как то так {SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_11 + pointer + 1)));} хотя на все 100% и не права.

b707
Offline
Зарегистрирован: 26.05.2017

инна пишет:

после внесения изменений, все картинки стали отображаться не правильно. я все таки думаю что вот это {SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_11) + pointer + 1));} надо написать как то так {SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_11 + pointer + 1)));} хотя на все 100% и не права.

ну попробуйте, кто вам не дает-то?

Когда код научитесь вставлять правильно?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

pgm_get_far_address(bild_11) + pointer + I

тут вычисляется адрес начала картинки и к нему добавляется смещение меридиана и светодиода

pgm_get_far_address(bild_11 + pointer + I)

тут я ХЗ что вычисляется !!!

(bild_11) + pointer + 1

последним знаком должна быть не ЕДИНИЧКА, а то что является счетчиком в FOR

I видимо

ВЫ МОЖЕТЕ СКОПИПАСТИТЬ ИЗ 56 СООБЩЕНИЯ ИЛИ НЕТ ??????????????????????????????????????????

"Д... Б..."

b707
Offline
Зарегистрирован: 26.05.2017

я заметил - когда женщина что-то не понимает - она просто считает, что это не важно...

Зато они крайне редко останавливаются, как мужики, уткнувшись в какую-то проблему, они их просто отбрасывают и идут дальше :))))

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

НИКОГДА не используйте заглавную I в программах где может быть I и 1 неверно распознаны глазами !!!

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

при таком написании ошибку выдает 22 строке . вот что пишет ivalue reguired as unary "&" operand если все строки исправить как как №77

b707
Offline
Зарегистрирован: 26.05.2017

Komandir пишет:

НИКОГДА не используйте заглавную I в программах где может быть I и 1 неверно распознаны глазами !!!

добавлю - и еще маленькую l (L) и одинарное o которое легко перепутать с нулем

b707
Offline
Зарегистрирован: 26.05.2017

инна, а мужа у вас нет? мне кажется это задачка для него. Я имею в виду задачу - возиться с вами и обьяснять вам элементарные вещи...

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

... не надо скобки переставлять ...

ЕДИНИЧКИ + 1 замените на I  + I

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Муж сбежал наверное давно ... еще в 2018 ...

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

в самом исходнике написано pointer + 1, то есть считает с увеличением на единичку

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

мужа нет  в 22 строке выдает ошибку пишет "I" was not declared in this scope не за декларирована "I"

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

инна пишет:

в самом исходнике написано pointer + 1, то есть считает с увеличением на единичку

В 9 сообщении 200%  + I

И по логике там английская большая И.

У вас сейчас каждый меридиан целиком одного цвета - верно ???

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

получается что включены все цвета включены одновременно и все засвечено белым цветом. и выход изображения белого цвета. 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

скетч из 9 сообщения рабочий ? Там + I ? (разуйте глаза-скопируйте в блокнот и измените размер шрифта)

скопируйте из 56 сообщения и вставьте  

хватит делать нам мозги !!!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

понятно, из кулинарного кружка тебя выгнали.  

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

после всеобщего отравления

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

разбирая написанное в №51 ведь там написано что все что свыше 65535 будет нарушаться алгоритм . так может первые 18 картинок надо писать как в исходнике, а вот, то что становится свыше 65535 уже прописывать как вы указывали ведь первые 18 картинок укладываются в рамки 65535 . это мое чисто логическая думка не основанная на знаниях

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Исправили на + I ??? (латинская заглавная И)

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

нет я писала, до 9 он не работает c "I" поэтому я писала pointer + 1 английский я умею различать 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Скопировал из 9 го

for (int l=0; l<18; l++){SendRecSPI(pgm_read_byte_near(bild_01 + pointer + l));}

что по вашему тут происходит ?

l растет от 0 до 17  - выводятся 18 байт на меридиан

если l в конце заменить на 1, то 18 раз выведется один и тот же байт !!!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Это же просто кошмар какой-то! ;)))

Вместо

SendRecSPI(pgm_read_byte_near(bild_10 + pointer + l));

нужно поставить везде так:

SendRecSPI(pgm_read_byte_far(pgm_get_far_address(bild_10) + pointer + l));

и не нужно менять штатное ядро и так будет всё работать.

Да - в цикле "for" переменная цикла - "l" это не "и" и не "I" и не "1", это, ...ля, ЭЛЬ ЛАТИНСКАЯ!!!!!!!!!!!

=======================

ОФФТОП: напомню, мне -51 и женат я уже 31 год. Обсуждаем с женой покупку яхты для проведения старости в море. Вроде всё постепенно согласовывается. Жена замолкает на время... и выдаёт: "Нужно мне у Кати (её маникюрша) взять уроки как с машинкой работать, а то как я на лодке буду за ногтями ухаживать?" !!!!!!РУКА-ЛИЦО!!!!!! Бабе - шестой десяток, она думает не о том, как быть, если солярка в океане закончится в штиль, а о том, что с ноготками делать!!!! Дамы - отдельный вид животных, очень похожие на людей, но не люди - это я как большой специалист говорю!

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А может это и ЭЛЬ маленькая 

Вообщем надо что бы после + стояла та же буква что и в for !!!

b707
Offline
Зарегистрирован: 26.05.2017

wdrakula пишет:

Дамы - отдельный вид животных, очень похожие на людей, но не люди - это я как большой специалист говорю!

для начала - мне ровно столько же. сколько тебе. И я все больше прихожу к выводу. что то. что они - ИНЫЕ - это классно.