Теория: нехватка озу без програматора
- Войдите на сайт для отправки комментариев
Пт, 15/08/2014 - 08:48
Здравия желаю,
Имею странный, теоретический вопрос.
Написал скетч, который использует много SRAM (ну оперативы) и в итоге получаю как сказано здесь - upload successfully, but not run, or run strangely. Ну это понятно и в принципе логично. Но.
Если я подключаю ISCP програматор (питание не от програматора) - то всё работает нормально. Ну разумеется до ещё большего переполнения SRAM. Почему!? Как-то я не верю, что ардуина от программатора берет память :)
Подопытные USBASP V2 & Arduino Pro Mini 5v\16MHz
С Уважением,
я вот нифига не понял. а если отключить програматор то ничего не работает?
Да, начинаются глюки, сбои, зависания и прочая.
Да, начинаются глюки, сбои, зависания и прочая.
значит нужно смотреть схему. програматор выдает такт :)
Эм, не догнал. В смысле ардуина тактируется не от своего 16мгц кварца, а от програматорского 12мгц? Или програматор генерирует 16мгц? Так памяти же больше не становится от этого. Вроде.
Схема програматора на странице 6
Эм, не догнал. В смысле ардуина тактируется не от своего 16мгц кварца, а от програматорского 12мгц? Или програматор генерирует 16мгц? Так памяти же больше не становится от этого. Вроде.
Схема програматора на странице 6
а вы напрягитесь и догоняйте. :) програматор задает ТАКТ для slave :)
и нафига мне схема програматора? я и так знаю как он устроен. гораздо интересней куда вы его подключаете.
щас погуглю про такт.
к арудине про мини подключаю, через SPI, как полагается.
щас погуглю про такт.
к арудине про мини подключаю, через SPI, как полагается.
а по UART вам религия не позволяет подключать? в общем то полагается именно по UART
UART памяти ещё больше ест :)
У меня и без уарта памяти в притык, а ещё и половины не реализовано :)
UART памяти ещё больше ест :)
У меня и без уарта памяти в притык, а ещё и половины не реализовано :)
я вот щас опять не понял. причем тут загрузчик который позволяет прошивать по UART и оперативная память...
а. ну могу и прошить через уарт, но вопрос ведь не в том. вопрос почему при нехватке озу без програматора сбой, а с програматором все нормально.
а. ну могу и прошить через уарт, но вопрос ведь не в том. вопрос почему при нехватке озу без програматора сбой, а с програматором все нормально.
так может это не нехватка ОЗУ?
а. ну могу и прошить через уарт, но вопрос ведь не в том. вопрос почему при нехватке озу без програматора сбой, а с програматором все нормально.
так может это не нехватка ОЗУ?
Есть еще одна вероятность: при програматторе тоже "есть глюки", но выраженные не столь явно.
Скажем у нас есть "нехватка памяти", и в итоге где-то есть выходы за массив, чтение null-указателей и т.п.
Вообщем имеет место быть "начинаем читать/писать куда-попало", а дальше "как повезет".
При отработке бутлоадера, он что-то там меняет/пишет в ту область памяти куда мы полезли "не санкционированно" и мы получаем явно видимый "крах".
А если он не отрабатывал, тот участок памяти остался заполненный нулями и нам просто повезло что мы "краха не наблюдаем" (но это не значит что "все хорошо" и он не может случится "в любом момент").
Но все это конечно... "гадание на кофейной гуще" и притягивание за уши так что "аж уши трещат".
Вероятносто что "что-то не так в схеме/питании", согласен с Пухлявым - гораздо выше.
А еще, есть вероятсноть, что при использовании программатора - используются другие фьюзы. В которых бутлоадер вообще отключен (и память освободилась). Только про это забыли "упомянуть" (или сами не заметили этого).
неси еще гущи :) и хрустальный шар не забудь
Думаю, надо переходить к экзорцизму
Продолжим спиритический сеанс :) Насколько точна информация, выдаваемая avr-size?
Можно ли верить этой информации о занятом сраме?
Можно.
xorkrus
Я имел квест с меню, записью EEPROM, чтением DMX (через сериал) и синтезом софтварного PWM (делаю восьмиканальный DMX диммер, который до кучи имеет кроме DMX встроенные программы, типа чтобы гнать автономно, ну и т. к. он программируемый, т. о. можно редактировать EEPROM, то соответственно имеется экран и кнопки). В итоге поделил надвое, PWM синтюк с приёмником на одной 328, меню с экраном и всякие красивости - на другой, и передача между ними по i2c. Так работает, а всё на одном процессоре не хочет. Причём весь скетч (ваще всё) всего 13 кб, а не пашет. С прерываниями или памятью борода, хз. А по отдельности получается приёмник 8 кб и передатчик 6 кб. Но два кристалла. по другому не захотело.
О как. Тут пожалуй проще пристрелить , экзорцизм уже поздно.чувака плющит со страшной силой.
Раз можно верить - то я полный лох и задача становится, на данный момент, невыполнима.
Хотя все равно я не совсем понимаю, почему с программатором все работает :)
Всем спасибо, все свободны ;)
Продолжим спиритический сеанс :) Насколько точна информация, выдаваемая avr-size?
Точна, но область ее применимости крайне ограничена.
avr-size ничего не знает (и не может знать) о том как и сколько памяти выделяется/освобождается в процессе выполнения програмы. Ничего не знает про то с какими фьюзами вы втолкнете это в камень (будет бутлоадер или нет) и
... главное не знает о ниличии/отсуствии ошибок типа "вышли за границы массива", работаем с нулевыми указателями и т.п. (а при ошибки подобного рода могут проявлятся "как угодно", самым мистическим образом).
В таком случае надо осваивать отладку не на уровне сериал.принт, а глубже. усбасп для таких дел годится?
Таким образом нужно выбирать правильный мк для своих нужд. А если выбрали мк впритык, то осваивайте асм. А то купить программатор и кодить на ардуино иде как то смешно.
Я скорее железячник, нежели программер, но так как нет желающих за просто так написать софт с необходимым функционалом, приходится быдлокодить самому. А иде ардуины с библотеками таймеров и attachinterrupt в стопицот раз более понятна нежели биты регистров, адресов и счетчиков asm c и прочих.
Использование программатора не принципиально, но с ним работают скетчи, которые не работают с сериал-усб и самостоятельно.
не может программатор влиять на работоспособность кода. никак. он может влиять на цепи, питание и еще хрен знает что, но не на программу. вы же железячник, проверяйте.
и кстати да, что за прога так съедает озу? может есть смысл поставить внешнее?
Может и не может, но факт есть факт. Без программатора девайс зависает после первой итерации. С программатором работает неделю без проблем. Но тема кривого кода не для сего топика, имхо.
Я бы грешил на питание, если бы питал устройство от программатора, но нет - 5V не подключено. Да даже если программатор просто подключить к ардуине (не втыкать в усб), то все становится хорошо.
а может программатор просто хорошо держит ресет, а без него МК тупо ресетится.
мк зависает, а не ресетится