Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 29.08.2013, 17:32  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
Печаль Atmega16+i2c+чайник...

Добрый день. Хочу подключить гироскоп MPU-6050 к атмеге по i2c, но не так сразу же... решил шину изучить на часах ds1307. Вот подключил по схемке, а оно неработает чтото. Хотел сразу вручную процедурами i2c-шины писать, но тоже самое что и процедурами самого ds1307. Помогите начинающему в освоении шинки этой. Читал как она работает на easyelectronics - понял, но не смог пока подправить те хидеры под cvavr. Схемку и код приложил, может кто поможет...?
Интересно было бы повесить на TWI....
Миниатюры:
Нажмите на изображение для увеличения
Название: Image 1.jpg
Просмотров: 387
Размер:	556.2 Кб
ID:	51304  
Вложения:
Тип файла: rar I2C_1307.rar (64.6 Кб, 68 просмотров)
Реклама:

Последний раз редактировалось miwutka; 29.08.2013 в 17:38.
miwutka вне форума  
Непрочитано 29.08.2013, 18:05  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Исправил вверху 0 и 1 на инициализации порта в самом начале - в протеусе работает а в железе 165 все цыфры....
Вложения:
Тип файла: rar I2C_1307.rar (66.4 Кб, 67 просмотров)
miwutka вне форума  
Непрочитано 29.08.2013, 21:20  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

miwutka, не правильно соединили, надо так как на этой картинке.... Сумеете все сделать по такой схеме - будет работать влегкую... Главное - включите "рентгено-экстрасенсорно-тупоголовной" аппарат.
А если честно, то задолбали таковые вопросы... И это не только в Ваш адрес. Если хотите отладку в Протеусе, то и вопрос туда. И Протеусный вариант проекта с исходниками тоже. Пока вижу одну главную ошибку - используете КаАВРа в варианте программный I2C, но упорно делаете накладку сразу же и на TWI. КадАВР - (особенно в последних вариантах) штука хитрая, доблестный Паша Хайдук пытается соревноваться с екс-югославской Микоэлектроникой и фигачит библиотеки "только в путь", но не всегда адекватно. А уж каКчественно описать у него, как и у Лабцентра - духу не хватает. Поэтому, в новых версиях КадАВРа соседствуют и старые и новые библы периферии, надо юзать прямо там в папке /INC и натолкнетесь даже на специальную ds1307_twi.h? cоб-но чего Вы и хотели. Ну а как и что-надо читать комменты в файлах.
Ну, и еСЧё по теме... Сколько было вопросов по I2С - как правило упираются во времянки. Возможно поэтому - там идет, здесь нет. Выдерживайте заданные скорости и длительности - все будет O'key.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_08_29_020.gif
Просмотров: 192
Размер:	26.6 Кб
ID:	51319  
Halex07 вне форума  
Сказали "Спасибо" Halex07
Zoosman (26.02.2015)
Непрочитано 30.08.2013, 12:19  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

на картинке провода рекламой замазаны... Я так понял атмега-часы: 22-6, 23-5 ножки соединять. А 10к резисторы что ненужны??? А какие там интервалы времени? Выбрал как по ДШ 100кГц и библиотекой стандартной стучусь к часам... а они мне 165 шлют на часы, минуты и секунды...

Последний раз редактировалось miwutka; 30.08.2013 в 12:21.
miwutka вне форума  
Непрочитано 30.08.2013, 17:23  
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Резисторы бы на 4,75 кОм. Подтяжка - классика. На 400 кГц спокойно работает. У меня завелось с первого раза. Я ставил другую микросхему, переделал библиотеку под неё, поэтому даже не знаю, чем помочь. Посмотрите ноги, правильно сконфигурировали? Мож с кварцем процессора чо не то? Диодом поморгайте с периодом 1 сек.
Ещё у меня инклюде сначала 1307, потом bcd
попробуйте с указателем:
void rtc_get_day(unsigned char *day)
{
i2c_start();
i2c_write(0xd0);
i2c_write(3);
i2c_start();
i2c_write(0xd1);
*day=bcd2bin(i2c_read(0));
i2c_stop();
}

rtc_get_day(&week_day);

Последний раз редактировалось kosmos440o; 30.08.2013 в 17:44.
kosmos440o вне форума  
Непрочитано 30.08.2013, 18:08  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Сообщение от miwutka Посмотреть сообщение
на картинке провода рекламой замазаны...
Не Ёркламой, а мною в качестве подъ*ба - Вы на свою гляньте! Можно понять что-куда-зачем??? Полностью "тупоголовые" поймут, что все в осциллограф, остальным остается включить "рентген".
Halex07 вне форума  
Непрочитано 02.09.2013, 10:49  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Сообщение от Halex07 Посмотреть сообщение
Не Ёркламой, а мною в качестве подъ*ба - Вы на свою гляньте! Можно понять что-куда-зачем??? Полностью "тупоголовые" поймут, что все в осциллограф, остальным остается включить "рентген".
Сорри, не мог ответить на выходных... Не знал что для проверки 1307 Вам надо видеть куда подключен ЖК.... Вот картинка без подъ*ба...
Миниатюры:
Нажмите на изображение для увеличения
Название: Image 2.jpg
Просмотров: 275
Размер:	515.8 Кб
ID:	51499  

Последний раз редактировалось miwutka; 02.09.2013 в 10:52.
miwutka вне форума  
Непрочитано 02.09.2013, 14:50  
polli123456
Прописка
 
Аватар для polli123456
 
Регистрация: 11.09.2007
Адрес: Муром
Сообщений: 135
Сказал спасибо: 128
Сказали Спасибо 446 раз(а) в 74 сообщении(ях)
polli123456 на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Я шину i2c сначала пощупал на Arduino без использования стандартных библиотек (так кажется нагляднее). Вот простенькие часы на семисегментниках и ds1307. По моему все процедуры наглядны. В приложении ещё код на ардуино для работы с 24с16.
Код:
/*
Часы на 7 сегментном четырехразрядном светодиодном индикаторе
аноды A B C D E F G подключены к цифровым пинам 1,2,3,4,5,6,7- 8-пин запятй, 0 не испльзуется
катоды 1 2 3 4 разряда к цифровым пинам 9,10,11,12 через транзисторные ключи
*/
long sec1, sec2, min1, min2, h1, h2, day1, day2, week, mon1, mon2, year1, year2; 
int c, temp, delayLed =150;//ждем 200 микросекунд -главное четко увидеть цифры без мелькания

#include ‹Wire.h›      //подключаем библиотеку для работы I2C
#define RTC_I2C_ADDR       104                         //адрес ds1307 часов
#define RTC_CONTROL1_REG   0x07                        //адреса регистров ds1307 часов
#define RTC_SEC_REG        0x00
#define RTC_MIN_REG        0x01
#define RTC_HOUR_REG       0x02
#define RTC_DATE_REG       0x04
#define RTC_WEEKDAY_REG    0x03
#define RTC_MONTH_REG      0x05
#define RTC_YEAR_REG       0x06



byte data[10]={B01111110,B00001100,B10110110,B10011110,B1100110  0,B11011010,B11111010,B00001110,B11111110,B1101111  0};
void setup()
{
 
/*
h1=0; //выставить одну цифру десятки часов
h2=9; //выставить одну цифру единицы часов 
                temp = h1 * 16 + h2;
                Wire.beginTransmission(RTC_I2C_ADDR);
                Wire.write(RTC_HOUR_REG);
                Wire.write(temp);
                Wire.endTransmission();

min1= 4;//выставить одну цифру десятки минут
min2= 6;//выставить одну цифру единицы минут
                temp = min1 * 16 + min2;
                Wire.beginTransmission(RTC_I2C_ADDR);
                Wire.write(RTC_MIN_REG);
                Wire.write(temp);
                Wire.endTransmission();
                 
day1=1; //выставить одну цифру десятки дней
day2=9; //выставить одну цифру единицы дней 
                temp = day1 * 16 + day2;
                Wire.beginTransmission(RTC_I2C_ADDR);
                Wire.write(RTC_DATE_REG);
                Wire.write(temp);
                Wire.endTransmission();

mon1= 0;//выставить одну цифру десятки месяца
mon2= 3;//выставить одну цифру единицы месяца
                temp = mon1 * 16 + mon2;
                Wire.beginTransmission(RTC_I2C_ADDR);
                Wire.write(RTC_MONTH_REG);
                Wire.write(temp);
                Wire.endTransmission();  
                
year1=1; //выставить одну цифру десятки лет
year2=3; //выставить одну цифру единицы лет 
                temp = year1 * 16 + year2;
                Wire.beginTransmission(RTC_I2C_ADDR);
                Wire.write(RTC_YEAR_REG);
                Wire.write(temp);
                Wire.endTransmission();
  
*/
    Wire.beginTransmission(RTC_I2C_ADDR); //При включении часов 7 бит 0 регистра
    Wire.write(RTC_SEC_REG);              //принудительно надо выставлять в 0
    Wire.write(B00000000);                //этим запускается тактовый генератор
    Wire.endTransmission();   

DDRD=B11111111; // пины порта D и B обозначаем выходными
DDRB=B111111;
}
void printcount(int number)
{PORTD=data[number];//устанавливает нужные пины в положение HIGH
}

void loop()
{
      // опросим время
        Wire.beginTransmission(RTC_I2C_ADDR);
        Wire.write(RTC_SEC_REG);           // Опрашиваем секундный регистр часов 
        Wire.endTransmission();  
        Wire.requestFrom(RTC_I2C_ADDR, 7); // Считываем с него и 7-х следующих регистров
     // очерёдность = расположения регистров по даташиту, от 0 до7
        if(Wire.available())               // секунды
        { 
          c = Wire.read(); 
          sec2 = c & B00001111;            // единицы секунд
          sec1 = (c & B01110000) ›› 4;     // десятки секунд 
        };
        if(Wire.available())               // минуты
        { 
          c = Wire.read(); 
          min2 = c & B00001111;            // единицы минут
          min1 = (c & B01110000) ›› 4;     // десятки минут
        };
        if(Wire.available())               // часы
        { 
          c = Wire.read(); 
          h2 = c & B00001111;              // единицы часов 
          h1 = (c & B00110000) ›› 4;       // десятки часов 
        };
        if(Wire.available())               // день недели
        { 
          c = Wire.read(); 
          week = c & B00000111;            // день недели
        };
         if(Wire.available())              // число
        { 
          c = Wire.read(); 
          day2 = c & B00001111;            // единицы дней
          day1 = (c & B00110000) ›› 4;     // десятки дней 
        };
        if(Wire.available())               // месяц
        { 
          c = Wire.read(); 
          mon2 = c & B00001111;            // единицы месяца 
          mon1 = (c & B00010000) ›› 4;     // десятки месяца 
        };
        if(Wire.available())               // год
        { 
          c = Wire.read(); 
          year2 = c & B00001111;            // единицы года 
          year1 = (c & B11110000) ›› 4;     // десятки года
        };
        

   if (sec1 == 1) //если секундный регистр от 10  до  19 сек, то показывает дату
                  //иначе показывае время
  { 
PORTB=B101110 ;//открываем 4 разряд 0 в 0бите-запятая
printcount(day1);//выводим десятки часов
delayMicroseconds(delayLed);
PORTB=B110110 ;//открываем 3 разряд 1 в 0 бите-запятая
printcount(day2);//выводим единицы часов
delayMicroseconds(delayLed);//ждем 200 микросекунд - можно ставить любое число,
                            //главное четко увидеть цифры без мелькания
PORTB=B111010;//открываем 2й разряд 0 в 0бите-запятая
printcount(mon1);//выводим десятки минут
delayMicroseconds(delayLed);
PORTB=B111100;//открываем 1 разряд 0 в 0бите-запятая
printcount(mon2);//единицы минут
delayMicroseconds(delayLed);   
  }
  else
  {
PORTB=B101110 ;//открываем 4 разряд 0 в 0бите-запятая
printcount(h1);//выводим десятки часов
delayMicroseconds(delayLed);
PORTB=B110111 ;//открываем 3 разряд 1 в 0бите-запятая
printcount(h2);//выводим единицы часов
delayMicroseconds(delayLed);//ждем 200 микросекунд - можно ставить любое число,
                            //главное четко увидеть цифры без мелькания
PORTB=B111010;//открываем 2й разряд 0 в 0бите-запятая
printcount(min1);//выводим десятки минут
delayMicroseconds(delayLed);
PORTB=B111100;//открываем 1 разряд 0 в 0бите-запятая
printcount(min2);//единицы минут
delayMicroseconds(delayLed);    
  }
}
Вложения:
Тип файла: txt 24С16.txt (4.3 Кб, 61 просмотров)

Последний раз редактировалось polli123456; 02.09.2013 в 15:16.
polli123456 вне форума  
Непрочитано 02.09.2013, 16:48  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Еслеб была ардуинка я б уже давно наверно освоил... Коды смотрел с ардуины - алгоритм понял, но почему-то всеравно не пашет. Какая-то передача идет, но непонятно какая. Когда батарейку подключаю то чила меняются со 165 на 80, отключаю батарейку - 165 становиться...
miwutka вне форума  
Непрочитано 03.09.2013, 08:39  
polli123456
Прописка
 
Аватар для polli123456
 
Регистрация: 11.09.2007
Адрес: Муром
Сообщений: 135
Сказал спасибо: 128
Сказали Спасибо 446 раз(а) в 74 сообщении(ях)
polli123456 на пути к лучшему
По умолчанию Re: Atmega16+i2c+чайник...

Может Вы не включаете тактовый генератор?
"При включении часов 7 бит 0 регистра принудительно надо выставлять в 0 этим запускается тактовый генератор".
Даташит на русском на ds1307, читайте
Вложения:
Тип файла: pdf DS1307_rus.pdf (312.1 Кб, 167 просмотров)
polli123456 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
I2C между МК, отправка массива чисел bestrating AVR 2 24.03.2013 16:49
Atmega, i2c и CodeVision deeman30rus AVR 3 21.01.2013 15:48
Atmega16 + 24c04 не работает в железе eu8cc Микроконтроллеры, АЦП, память и т.д 25 29.06.2012 21:54
Нужна помощь CDC-232 и atmega16 robin7341 Микроконтроллеры, АЦП, память и т.д 0 08.08.2010 00:13
Запись в I2C EEPROM yel Микроконтроллеры, АЦП, память и т.д 8 07.03.2007 16:08


Часовой пояс GMT +4, время: 16:10.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot