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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> I2C память., Не могу работать с 24с256.
bodja74
сообщение Dec 14 2005, 17:44
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



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

Проблема решена и все работает прекрасно.
Все оказалось абсолютно банально.
Асм оказался слишком быстр для WTI.
Так как на меге толком нельзя было проверить выполнение
команды СТОП ,прога по быстрячку обрабатывала данные
и залетала на СТАРТ еще до того как TWI успевал
сформировать сигнал СТОП,из за чего и был глюк начиная
со второго захода.
Достаточно было установить паузу длиной в 1 SCL,
как все стало в норме.
При частоте шины 100кГц достаточно паузы для
надежности в 10 микросекунд.

Желаю тем кто любит писать "быстрый" код ,не
наступать на эти грабли.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 15 2005, 00:54
Сообщение #17


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

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



Цитата
Ужасно извиняюсь ,что беспокоил по своей проблеме.

Проблема решена и все работает прекрасно.
Все оказалось абсолютно банально.
Асм оказался слишком быстр для WTI.
Так как на меге толком нельзя было проверить выполнение
команды СТОП ,прога по быстрячку обрабатывала данные
и залетала на СТАРТ еще до того как TWI успевал
сформировать сигнал СТОП,из за чего и был глюк начиная
со второго захода.
Достаточно было установить паузу длиной в 1 SCL,
как все стало в норме.
При частоте шины 100кГц достаточно паузы для
надежности в 10 микросекунд.

Желаю тем кто любит писать "быстрый" код ,не
наступать на эти грабли.


Вот это да! Огромный Вам респект за это!!! a14.gif
Действительно, такая ситуация может быть... но не так-то просто во всем разобраться rolleyes.gif

Инетерсно, а компилятор с языка Си учитывает такие траблы? Например код (для примера):
i2c_start();
i2c_tx(23);
i2c_tx(24);
i2c_stop();

//Будет ли здесь вставлена пауза?

i2c_start();
i2c_tx(25);
i2c_tx(26);
i2c_stop();

Надо будет посмотреть листинг...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Dec 15 2005, 21:10
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



То: Haker_fox

Ничего толкового не могу сказать по Си ,так как недавно его начал изучать
под АРМ.
Но лично мое мнение, если компиллятор асма выполняет роль перекодировщика
елементарных комманд в элементарный код,то компилятор Си выполняет роль
некоего интелектуала для тех кто не любит или не хочет вникать в суть и назначение
работы регистров ввода-вывода,(или по другому служебных регистров)
И про его интеллект можно только догадываться.
Хотя я думаю на Си можно напямую работать с регистрами.

To: at90

Для записи в память нужно указывать адресс А0 (НЕХ),
а для чтения А1 (НЕХ),(может это делает компилятор автоматом не знаю).
Кроме того гляньте на ножки 1,2,3 они могут менять адресс.
Кроме того обратите внимание на ножку 7,иногда разрешает запись "0"
а иногда "1"
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 16 2005, 00:23
Сообщение #19


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

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



Цитата
Ничего толкового не могу сказать по Си ,так как недавно его начал изучать
под АРМ.
Но лично мое мнение, если компиллятор асма выполняет роль перекодировщика
елементарных комманд в элементарный код,то компилятор Си выполняет роль
некоего интелектуала для тех кто не любит или не хочет вникать в суть и назначение
работы регистров ввода-вывода,(или по другому служебных регистров)
И про его интеллект можно только догадываться.
Хотя я думаю на Си можно напямую работать с регистрами.


1. Не совсем согласен на счет "выполняет роль
некоего интелектуала для тех кто не любит или не хочет вникать в суть и назначение
работы регистров ввода-вывода"...

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

2. Да на Си можно работать напрямую с регистрами.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Dec 16 2005, 11:26
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



To: haker_fox

Полностью согласен с Вами.

Самое оптимальное решение для меня - знать несколько языков.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 19 2005, 06:09
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



К сожалению для меня sad.gif интеллект компилятора пока выше моего. Пробовал реализовывать идин и тот же алгоритм на асме и на Си, код на Си оказался на 300 байт! короче. Иногда вообще, напишу кусок кода, смотрю в листинге, а части кода нет, оказывается, компилятор лучше меня просчитал, что этого не может быть никогда. так что пока я у него учусь cheers.gif


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post

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

 


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


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