|
Atmega48, DS18S20 и пресловутая оптимизация AVRStudio |
|
|
|
Jan 23 2009, 16:23
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(NikitoS-86 @ Jan 23 2009, 23:47)  2) Возвращаясь к оптимизации - ну хорошо, опустим все объяснения, но есть ли какие-нибудь источники, где можно это всё почитать? Да, впринципе, зачем это знать? То, что сказал уважаемый aesok, вполне достаточно. Ну если уж так хочется, то google.com рулит.
--------------------
Выбор.
|
|
|
|
|
Jan 23 2009, 16:35
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(NikitoS-86 @ Jan 23 2009, 18:47)  2) Возвращаясь к оптимизации - ну хорошо, опустим все объяснения, но есть ли какие-нибудь источники, где можно это всё почитать? Общение с атмегами мне ещё долгое предстоит, а не на один раз (сделал и забыл), так что надо вникать, без вариантов. Почитать что каждая оптимизация делает Вы можете в GCC User Manual. В разделе посвященном ключам оптимизации. А вот о том какие какие из них полезны/вредны для AVR очень мало информации. Немножко есть в avr-libc-user-manual. И повторяюсь, пока Вам хватит -Os. Анатолий.
|
|
|
|
|
Jan 25 2009, 09:49
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 22-09-08
Пользователь №: 40 380

|
Значит так, в пятницу вечером мне, как я уже писал, удалось прочитать серийник припаянного и единственного на шине датчика. Но вот дальше что-то дело не пошло... Естественно первое, что я попытался сделать, это прочитать температуру. Для этого в соответствии с даташитом я выбрал следующую последовательность действий: 1) Посылаю импульс сброса и принимаю ответ термометра. 2) Т.к. датчик на шине единственный, то посылаю сразу команду Skip ROM [CCh]. 3) Посылаю команду Convert T [44h]. 4) Формирую задержку 750мс (для уверенности даже попытался формировать 1 с). 5) Опять импульс сброса и ответ термометра. 6) Опять команда Skip ROM [CCh]. 7) Команда Read Scratchpad [BEh].... И вот после этого при попытке принять данные по температуре он мне шлёт сплошные единицы.... Сейчас я пишу не со своего компа, где прога плата, поэтому может быть, что я впопыхах в пятницу где-то ошибся, поэтому поставим вопрос так: 1) Правильную ли я делаю последовательность? 2) Можно ли считать данные и забить на CRC? Просто на сколько я понял, сами данные это вообще всего два байта... При этом в даташите в примерах написано, что присылается 9 байт, включая данные для проверки CRC... Какие данные являются непосредственно температурой?
Заранее спасибо за советы...
|
|
|
|
|
Jan 25 2009, 09:56
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(NikitoS-86 @ Jan 25 2009, 11:49)  2) Можно ли считать данные и забить на CRC? Можно, если вас не интересует результат. Цитата(NikitoS-86 @ Jan 25 2009, 11:49)  При этом в даташите в примерах написано, что присылается 9 байт, включая данные для проверки CRC... Какие данные являются непосредственно температурой? Там же в даташите и написано. Просьба прочитать за вас даташит выглядит несколько, хм...странной. И вы надеетесь, что кто-то захочет помогать человеку, которому лень почесть даташит?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 26 2009, 07:35
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(NikitoS-86 @ Jan 23 2009, 15:19)  Так вот, дабы она не компостировала мне мозги, я её всегда вырубал и не испытывал никаких угрызений совести Я слышал много страшилок об ошибках оптимизации, но не помню ни одного случая, чтобы они подтвердились - всегда ошибка оказывалась в программе. Поэтому выключать оптимизацию - это... глупо - самое мягкое, что можно сказать. От этого код становится больше раза в 4...5 и, соответственно медленнее. Я подозреваю, что такой режим оставлен для тех, кто помешан на ошибках оптимизатора - чтобы они могли отключив оптимизацию убедиться в том, что ошибка не исчезла.
Сообщение отредактировал 777777 - Jan 26 2009, 07:36
|
|
|
|
|
Jan 26 2009, 16:31
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 22-09-08
Пользователь №: 40 380

|
Да, в оптимизации судя по всему действительно нет ничего криминального... Отключал по неопытности и по причине страшилок того, что оптимизатор чуть ли не всё лишнее по его мнению порезает, но вот вроде сейчас работает и нормально...
По теме: Тему можно закрывать=) Разобрался со всем полностью. Данные и принимает и CRC считает... Хотя конечно было тяжеловато понять алгоритм CRC... Однако сейчас всё работает и всё прекрасно считает и отсылает/принимает).
Всем спасибо.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|