roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 13:00

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 05 апр 2009, 10:37 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Помогите. Написал программку для DS1307 и ATMega16 которая должна инициализировать часы, устанавливая бит CH=0 в регистре с номером 0. А так же должна включать генератор на ножке SQWE и установить частоту выхода импульсов в 1 Гц. Это делал путем записи числа 16 ( или двоичное 10000) в регистр часов под номером 07h. Но в протеусе этих импульсов на соответствующей ножке не видно. Что я делаю не так?
Прилагаю программу в CodeVisionAVR и проект Poteus в архиве.


Вложения:
DS1307+ATMega 16(TWI).rar [48.94 КиБ]
Скачиваний: 47
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 05 апр 2009, 15:19 
Не в сети
Аватара пользователя

Зарегистрирован: 05 июн 2007, 12:20
Сообщения: 196
Откуда: Киев
прог. языки: C/C++, ASSEMBLER
Я тоже когда-то в этой микросхеме ковырялся: http://roboforum.ru/viewtopic.php?f=2&t=3537&p=67661#p67661

Немного пошаманил с твоим проектом, см. в приложении. Помогло добавление магической задержки в 4 us :D


Вложения:
Комментарий к файлу: модифицированный
DS1307+ATMega 16(TWI)_mod.rar [68.84 КиБ]
Скачиваний: 55

_________________
Глюк по-немецки означает "счастье"...
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 05 апр 2009, 16:41 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Запустил модифицированный вами проект но на ножке SOUT все равно не видно никаких импульсов :cry:


И еще. А зачем вы удалили строчку:

write_twi(0); // записываем по адресу 0, установленному выше число 0, что включит внутренний генератор часов CH=0 (включаем часы)


Ведь без нее часы не включаться. Ведь вначале отправляют пакет адреса устройства, затем пакет адреса регистра часов и только за тем что в этот регистр записать.

И еще в догонку. А зачем вы вместо 16 записывает в регистр управления часов 10. Ведь дужно установить бит 4(SQWE) а биты RS1 и RS0 сделать 0. Что эквивалентно записи в регистр управления числа 00010000 или 16.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 06:50 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Странно. Не могу найти ошибку. От разочарования воспользовался встроенными в CodeVision библиотеками I2C (софтовыми, не аппаратными). И отправил часам те же команды что пытался через аппаратный I2C. И на ножке SOUT появились импульсы с частотой 1 Гц. Странно. Команды те же, почему же не работает через аппаратный TWI(I2C).


Если комму интересно вот текст этой проги(через встроенный библиотеки)

#include <mega16.h>
#include <delay.h>
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
void main(void)
{
#asm("wdr")
/* Write logical one to WDTOE and WDE */
WDTCR |= (1 << 4) | (1 << 3);
/* Turn off WDT */
WDTCR = 0x00;
DDRA=255;
i2c_init();
i2c_start();
i2c_write(208);
i2c_write(0);
i2c_write(0);
i2c_stop();

i2c_start();
i2c_write(208);
i2c_write(7);
i2c_write(16);
i2c_stop();
while (1)
{
};
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 10:18 
Не в сети
Аватара пользователя

Зарегистрирован: 05 июн 2007, 12:20
Сообщения: 196
Откуда: Киев
прог. языки: C/C++, ASSEMBLER
DK10000 писал(а):
Зачем вы удалили строчку:

write_twi(0); // записываем по адресу 0, установленному выше число 0, что включит внутренний генератор часов CH=0 (включаем часы)
Действительно, есть такой бит. Но и в железе и в протеусе все работает и без этого.
DK10000 писал(а):
А зачем вы вместо 16 записывает в регистр управления часов 10.
Не 10, а 0x10

Попробуйте так. Не знаю, у меня в протеусе все работает(7.2сп6). Правда смущает то, что нога SOUT дергается с частотой не 1 Гц, а 0.5 Гц, то есть 1 колебание в 2 сек.
Код:
#include <mega16.h>
#include <delay.h>

// Биты
#define   TWINT   7
#define   TWEA      6
#define   TWSTA   5
#define   TWSTO   4
#define   TWEN      2


void start_twi(void)
{
   TWCR |= (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
   while (!(TWCR & (1<<TWINT)));
}

void stop_twi(void)
{
   TWCR |= (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
}

void write_twi(unsigned int data)
{                                                                 
   TWDR  = data;
   TWCR |= (1<<TWINT)|(1<<TWEN);
   while (!(TWCR & (1<<TWINT)));
}

void main(void)
{
   TWBR = 0x20;
   delay_ms(10); // Дать немного времени для запуска

   start_twi();
   write_twi(0xD0);
   write_twi(0);
   write_twi(0);
   stop_twi();
   delay_us(5);

   start_twi();
   write_twi(0xD0);
   write_twi(7);
   write_twi(0x10);
   stop_twi();

   while (1);
}

_________________
Глюк по-немецки означает "счастье"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 14:14 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Спасибо :D . Только вот у меня Proteus 7.4 (SP3) и тикает вроде 1 раз в одну секунду. Вот интересно а где у меня косяк в проге то был? Я попробовал поставить твою главную фунцию в свою прогу. Не работало. Потом оставил свою главную фунцию и потавил твои дерективы и фунции (start, stop и write). Заработало. Стал смотреть что я там в фунциях накосячил. И что ты думаешь. Не нашел я отличий. Все то же самое. Только твой код работает а мой нет. Мистика. Я даже интервалы как у тебя сделал. Не в какую.
Короче плюнул и с чистого листа переписал эти фунциии. Заработало. И даже если убрать задержки все равно пашет.


Видимо это косяк Proteusa. В обчем я еще попробую прошить свой старый и твой рабочий код в реальный Mega16 и там станет ясно.


Еще раз Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 14:16 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
есть программка для сверки файлов, очень удобно тексты программ сравнивать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 15:25 
Не в сети
Аватара пользователя

Зарегистрирован: 05 июн 2007, 12:20
Сообщения: 196
Откуда: Киев
прог. языки: C/C++, ASSEMBLER
DK10000 писал(а):
Стал смотреть что я там в фунциях накосячил. И что ты думаешь. Не нашел я отличий. Все то же самое.
А вот и не все. Там у тебя в какой-то функции вместо TWDR было TWBR. Ты вместо записи в регистр данных менял битрейт :wink:

_________________
Глюк по-немецки означает "счастье"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 16:00 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
А как называется программа для сверки текстов??

Ошибку заметил :crazy: . Исправил. Все работает :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 16:24 
Не в сети
Аватара пользователя

Зарегистрирован: 27 мар 2007, 07:42
Сообщения: 68
Откуда: Екатеринбург
DK10000 писал(а):
А как называется программа для сверки текстов??


В составе любой системы управления версиями (например, subversion) есть штатные средства для сравнения файлов (или разных версий одного и того же файла). Пример во вложении.


Вложения:
vcs.PNG
vcs.PNG [ 59.66 КиБ | Просмотров: 3190 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 06 апр 2009, 16:56 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
То что во вложении - не входит в систему контроля версий. Это примочка поверх такой системы, которая в данном случае вообще не в тему. То, что нужно - diff (windiff)

Добавлено спустя 7 минут 48 секунд:
Хотя нет, был не прав, TortoiseSVN - это полноценный клиент subversion. Но в любом случае контроль версий тут не нужен.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 07 апр 2009, 03:30 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
2 blindman: ЕМНИП в тортилле форк kdiff3 используется

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с DS1307 и ATMega16
СообщениеДобавлено: 07 апр 2009, 07:13 
Не в сети
Аватара пользователя

Зарегистрирован: 27 мар 2007, 07:42
Сообщения: 68
Откуда: Екатеринбург
Согласен, контроль версий в данном контексте, строго говоря, лишнее и не совсем по теме. На мой взгляд, люди, задающие вопросы про сравнение файлов, либо не знают совсем, либо только наслышаны про подобные системы и их преимущества при разработке. Мой первый пост - жалкая попытка попиарить эти самые системы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO