Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс авг 03, 2025 06:11:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 20, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 19:02:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
tych, вы меня огорчаете... много эмоций, но мало восприятия сказанного мною.
я разбираюсь в ассемблере, но вы думаете, это мне прибавляет энтузиазма для ковыряния в листинге из-под WinAVR? однако, вы меня вынудили это сделать...
Код:
00000048 <__do_clear_bss>:
  48:   10 e0          ldi   r17, 0x00   ; 0
  4a:   a2 e6          ldi   r26, 0x62   ; 98
  4c:   b0 e0          ldi   r27, 0x00   ; 0
  4e:   01 c0          rjmp   .+2         ; 0x52 <do_clear_bss_start>

00000050 <do_clear_bss_loop>:
  50:   1d 92          st   X+, r1

00000052 <do_clear_bss_start>:
  52:   a4 36          cpi   r26, 0x64   ; 100
  54:   b1 07          cpc   r27, r17
  56:   e1 f7          brne   .-8         ; 0x50 <do_clear_bss_loop>
  58:   02 d0          rcall   .+4         ; 0x5e <main>
  5a:   0b c0          rjmp   .+22        ; 0x72 <_exit>

вот этот участок инициализирует нулями все переменные, которые объявлены, но им явно не указаны значения. даже по имени меток do_clear_bss_хххх вы можете догадаться, что речь идет об очистке памяти... .bss - это имя секции памяти WinAVR, отводимой для статических и глобальных переменных. Память тупо обнуляется, не взирая на размеры переменных.

теперь несколько слов в ответ на ваши эмоции.
Цитата:
Ваааааааааааще ОТЖИХХХХХ ! Корки отмачиваете не шуточные ! Откудаж в СИМУЛЯТОРЕ возьметься мусор в ячейках памяти ? Симулятор РОДИТ его чтоль ?
нет, его можно вручную намусорить в область ОЗУ - это не протеус, "виртуальная" память в студии доступна для редактирования. намусорьте туда сами - сколько хотите и куда хотите, потом проимитируйте сброс - и поглядите, что стало с переменными внутри main()...


Цитата:
В листинге CVAVR есть специальный макрос очищающий всю оперативн память - не знаю задействует ли он его в каждой проге или нет.
я не знаю тоже, но если CVAVR следует закону - то обязательно должен задействовать!

Цитата:
Так оно и есть на самом деле - программа на Си начинает выполняться с мэйн обычно.
с точки зрения программиста - да, так и есть. но реально микроконтроллер выполняет еще немало предварительных действий, так называемый "пролог" или "инициализацию", и лишь потом вызывается main(). Если обраться к более крутым примерам - программам для Windows или даже DOS, то там объем предварительного кода (выполняемого до main()) может в разы превосходить код собственно main()!

Цитата:
WinAVR имдиЁт чтоль ? Он чтоль не видит что переменная не считвается в коде до записи в нее, нафигаж он будет писать в нее то что не требуется - ОПТИМИЗАЦИЯ то включена !
ну, во-первых, оптимизацию и выключить недолго, во-вторых, можно объявить переменную volatile - и тогда компилятор ее обязан будет проинициализировать... но и в первом, и во втором случае в листинге main() вы не увидите команд, делающих этого! все будет сделано до входа в главную функцию...

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 19:10:59 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
ARV писал(а):
tych, вы меня огорчаете... вы меня вынудили это сделать...

вот этот участок инициализирует нулями все переменные, которые объявлены, но им явно не указаны значения. Память тупо обнуляется, не взирая на размеры переменных.


Я этого ОБЪЯСНЕНИЯ и просил в верхнем посте ! Я ведь четко там (см наверх!) написал:

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

Я просто просил мне объяснить "где конкретно в асме" - форум для того и есть ведь !

ARV писал(а):
можно вручную намусорить в область ОЗУ - это не протеус, "виртуальная" память в студии доступна для редактирования. намусорьте туда сами - сколько хотите и куда хотите, потом проимитируйте сброс - и поглядите, что стало с переменными внутри main()

Блин !!! Вы все УХОХАТЫВАЕТЕСЬ !!!???
Ну какой смысл это писать ПОСЛЕ того как вы наконец показали конкретный АСМ код очищающий всю память !!! при старте прграммы.

НО !!! Вы выше писали про обнуление ПЕРЕМЕННЫХ !!! а не просто всей памяти. Вот
ARV писал(а):
там и происходит инициализация переменных, в том числе и обнуление по умолчанию.


т.е. обнуление это ни как ни связано с переменными с их размещением и со стандартом Си - это просто забота о нас со стороны компилятора.

ARV писал(а):
можно объявить переменную volatile - и тогда компилятор ее обязан будет проинициализировать... но и в первом, и во втором случае в листинге main() вы не увидите команд, делающих этого! все будет сделано до входа в главную функцию...


Я и не требовал НИГДЕ ее нахождения в МЭЙН ! Че ей там делать если даже на Си она до мэйн появилась.

Кусок кодя я привел С ПОЯСНЕНИЕМ - что удивлен путаницей не большой в листинге WinAVR, котрой в CVAVR я не встречал.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Последний раз редактировалось tych Ср сен 24, 2008 19:22:29, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 19:19:18 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я даже теперь опасаюсь...
если мое объяснение вас удовлетворило - значит ли это, что я "более опытный"?! и тем более, "товарищ" ли я?!
:)))
а на счет просьбы - вы же понимаете, что просьба просьбой, а лень ленью :)

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 19:38:47 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
ARV писал(а):
я даже теперь опасаюсь...
если мое объяснение вас удовлетворило - значит ли это, что я "более опытный"?!

Ну естетсвенно вы более опытный, вы ж делаете всякие разработки, устройства - а я больше теоретизирую, симулирую, помогать пытаюсь словом. И в АСМ листинги я только изредка заглядываю.

И в заголовке домашней странички у меня
КРУПНО-красно написано: "... от ЧАЙНИКА".

ARV писал(а):
и тем более, "товарищ" ли я?! :)))

Вы полагаете что я гусь ? :lol:

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 19:49:58 
Встал на лапы

Зарегистрирован: Пт май 23, 2008 23:59:37
Сообщений: 115
Откуда: Москва
Рейтинг сообщения: 0
tych писал(а):
Скачал и поставил WinAVR, сделал проектик - по АСМ листингу переменные размещены по адресам 62h 63h 60h - но в листинге я не вижу (я не спец по АСМу) где эти адреса обнуляются как грозился ARV. Я не утверждаю что там нет обнуления, просто прошу более опытных товарищей указать где оно.


там нет ни обнуления ни выставления -4

Код:
char aba, top, mikki = - 4;

void main(void) {

aba = 3;
top = 5;
mikki = 7;


этот пример не особо показательный. Точнее совсем не показательный. По ассемблеру видно, что там даже нет начальной инициализации переменных в -4.
Этот пример показывает, что оптимизатор работает хорошо, ибо начальная инициализация в -4 не нужна, т.к. следом(без совершения других операций над переменными) происходит повторная инициализация значениями 3 5 7...

Для проверки производится ли инициализация необходим пример типа:

Код:
char x,y,z;

x=y-3;

if (z==5) z++;

т.е. нужно выполнить какиенить действия без начального присвоения значений. Кстати, если компилятор с оптимизатором знают про необходимость начальной инициализации нулем, они могли бы заменить код x=y-3; на x=-3; что тоже будет подтверждением что про ноль знают... а if (z==5) z++; вообще пропустить, если с z больше никаких действий не производится...

Add. Упс. Про обнуление погорячился... но в -4 не инициализирует, я по хорошему обнуление в этом примере не нужно. Странно что оптимизатор снес =-4, и оставил чистку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:01:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
tych писал(а):
Вы полагаете что я гусь ? :lol:
гм... поговорка "гусь свинье не товарищ"... ежели вы гусь, то я, по-вашему, свинья?! :shock:

Telek, странно то, что оптимизатор вообще что-то оставил - программа, которая ничего никуда не выводит, не работает с периферийными устройствами и volatile-переменными - с точки зрения оптимизатора абсолютно бессмысленная! в моих тестах такая функция main() компилировалась в следующий код:
Код:
rjmp PC
:)))

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:08:47 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
ARV писал(а):
ежели вы гусь, то я

я там смайлик поставил.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:23:54 
Открыл глаза

Зарегистрирован: Вс сен 07, 2008 13:17:31
Сообщений: 72
Откуда: Город Невест
Рейтинг сообщения: 0
tych, если Вы хотите что-то узнать, то(я по крайней мере так стараюсь делать), надо искать книги, материалы в сети, помогающие прояснить вопрос. Почитать про секции WinAVR, про startup код. Самому. И внимательно слушать и анализировать услышанное. А "наезжать" на человека, который пытается Вам объяснить то, что Вы спросили в Вашей форме изложения некрасиво. В многих системах симулирования, компиляторах и, особенно при их взаимодействии присутствуют разнообразные глюки. Как справедливо заметил ARV после установки оптимизации СИ кода возникает абракадабра. И не только в листинге. В протеусе и Codevision и WinAVR дают в этом случае не "удободебугируемый" код.
Нужно учитывать и неразбериху с отладочными форматами, например. Иногда лучше отлаживать не ELF, а EXTCOFF. С версиями компиляторов, в которых "убраны старые ошибки и добавлены новые" и отладчиках. Надо знать сильные и слабые стороны своего инструментария. И не надо кипятиться. Удачи и терпения!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:25:57 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
tych писал(а):
ARV писал(а):
ежели вы гусь, то я

я там смайлик поставил.
да понял я ваш юмор :)

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:34:05 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Lepehin Evgeniy писал(а):
tych, Удачи и терпения!

И вам !

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:41:55 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
self-censored

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

Мой уютный бложик... заходите!


Последний раз редактировалось ARV Ср сен 24, 2008 20:53:37, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:50:52 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
ARV писал(а):
tych, чем тут флудить, лучше ответьте про семплы... я опять в тупике :(

по времени сообщений позырь - я уж ДАВНО ответил ! в том топике.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Последний раз редактировалось tych Ср сен 24, 2008 21:06:58, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 24, 2008 20:52:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
self-censored

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 26, 2008 23:22:12 
Первый раз сказал Мяу!

Зарегистрирован: Ср июл 09, 2008 11:48:16
Сообщений: 36
Откуда: Обнинск
Рейтинг сообщения: 0
В программе не получается прогнать байт по битам от младшего к старшему.
Для понимания проблеммы прокомпилировал этот кусок отдельно:

#include <m8_128>

bit a;
unsigned char b;
unsigned char i;


void main (void){
b = b_1010_1010;

for(i=8;i>0;i--)
{
a = b;

b>>=1;
};

}

По моему за каждый проход цикла в битовую переменную должен записываться младший бит из переменной b. Это не работает-в первом цикле в а пишеться 1 и всё!. Смотрел в VMLAB .Подскажите в чём проблемма?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 27, 2008 08:28:06 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
блин .... ну архив то с проектом ПРИЛОЖИ !

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 27, 2008 09:28:44 
Первый раз сказал Мяу!

Зарегистрирован: Ср июл 09, 2008 11:48:16
Сообщений: 36
Откуда: Обнинск
Рейтинг сообщения: 0
Файлы проекта-выдача на 5 ножке порта В сигналов соответствующих содержимому переменной b от младшего к старшему.


Вложения:
ТЕСТ.rar [17.73 KiB]
Скачиваний: 258
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 27, 2008 10:02:15 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
a = b; - здесь b воспринималось как то что должен хранить ФЛАГ - "истино" - не ноль или "ложно" - ноль.

И пока не b была нулем она (целиком) считалась истиной.

я вместо 8 написал 11 и когда b обнулялось на PB5 выводился 0.

Изображение

После замены строчки на:
Код:
a = b & 1; // записать в а  бит0 из b


Прога заработала чудесно !

Изображение

Файлы в прицепе !


Вложения:
proga_cv_vmlab.rar [39.9 KiB]
Скачиваний: 247

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Последний раз редактировалось tych Сб сен 27, 2008 11:49:23, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 27, 2008 11:17:48 
Первый раз сказал Мяу!

Зарегистрирован: Ср июл 09, 2008 11:48:16
Сообщений: 36
Откуда: Обнинск
Рейтинг сообщения: 0
Спасиба, всё понятно.

Значит в СИ битовой переменной нельзя присваивать значения переменных других типов? Я считал, что туда должен записаться младший бит.

Как пишут тут, правда в случае PIC, это именно так:
http://kazus.ru/faq/15/251.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 27, 2008 11:44:16 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Дело не в PIC или AVR, а в языке Си и в конкретном компиляторе.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс сен 28, 2008 19:28:29 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
CVAVR 2.03.4 без коклюша и ветрянки !

http://kazus.ru/forum/topic_11456-160.html

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 20, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y