реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Closed TopicStart new topic
> Atmega48, DS18S20 и пресловутая оптимизация AVRStudio
haker_fox
сообщение Jan 23 2009, 16:23
Сообщение #16


Познающий...
******

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



Цитата(NikitoS-86 @ Jan 23 2009, 23:47) *
2) Возвращаясь к оптимизации - ну хорошо, опустим все объяснения, но есть ли какие-нибудь источники, где можно это всё почитать?

Да, впринципе, зачем это знать? То, что сказал уважаемый aesok, вполне достаточно. Ну если уж так хочется, то google.com рулит.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 23 2009, 16:35
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(NikitoS-86 @ Jan 23 2009, 18:47) *
2) Возвращаясь к оптимизации - ну хорошо, опустим все объяснения, но есть ли какие-нибудь источники, где можно это всё почитать? Общение с атмегами мне ещё долгое предстоит, а не на один раз (сделал и забыл), так что надо вникать, без вариантов.


Почитать что каждая оптимизация делает Вы можете в GCC User Manual. В разделе посвященном ключам оптимизации. А вот о том какие какие из них полезны/вредны для AVR очень мало информации. Немножко есть в avr-libc-user-manual. И повторяюсь, пока Вам хватит -Os.

Анатолий.
Go to the top of the page
 
+Quote Post
NikitoS-86
сообщение Jan 25 2009, 09:49
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 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... Какие данные являются непосредственно температурой?

Заранее спасибо за советы...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 25 2009, 09:56
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
777777
сообщение Jan 26 2009, 07:35
Сообщение #20


Профессионал
*****

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



Цитата(NikitoS-86 @ Jan 23 2009, 15:19) *
Так вот, дабы она не компостировала мне мозги, я её всегда вырубал и не испытывал никаких угрызений совести

Я слышал много страшилок об ошибках оптимизации, но не помню ни одного случая, чтобы они подтвердились - всегда ошибка оказывалась в программе. Поэтому выключать оптимизацию - это... глупо - самое мягкое, что можно сказать. От этого код становится больше раза в 4...5 и, соответственно медленнее. Я подозреваю, что такой режим оставлен для тех, кто помешан на ошибках оптимизатора - чтобы они могли отключив оптимизацию убедиться в том, что ошибка не исчезла.

Сообщение отредактировал 777777 - Jan 26 2009, 07:36
Go to the top of the page
 
+Quote Post
NikitoS-86
сообщение Jan 26 2009, 16:31
Сообщение #21


Участник
*

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



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

По теме: Тему можно закрывать=) Разобрался со всем полностью. Данные и принимает и CRC считает... Хотя конечно было тяжеловато понять алгоритм CRC... Однако сейчас всё работает и всё прекрасно считает и отсылает/принимает).

Всем спасибо.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016