Волосатый писал(а):ПС я тоже сталкивался с мусором на шине
Почему? Экономия на внешних резисторах 4.7 (5.1) кОм подвески к питанию, использование высокоомных, что в животе у МК и как следствие наводки от соседних цепей?
Волосатый писал(а):ПС я тоже сталкивался с мусором на шине
RoboC писал(а):Ссылка на пост того кто собирал, но к сожалению его уже 2 месяца тут нет.
Ссылка, которую вы видели, уже померла вместе с галереей. В ЛС переведем разговор..dark_rider писал(а):индикация статика. можете ругаться и все такое, но поскольку это мой первый проект, было сделано именно так....просто идей особых нет(
Идеи есть!
Какова частота опроса РТС? Если велика, то при поочередном считывании неправильного значения(помехи) и правильного Вы получите на статике эффект который описали. Роем в сторону опроса РТС. Сами писали или библиотеку где то потянули? Если мне не изменяет память, то можно либо считать одну ячейку из РТС, либо пакетом(длинный) много ячеек подряд. Попробуйте короткий вариант или задержки правьте...
Код: Выделить всё
#include <mega8535.h>
#include <delay.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <bcd.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
#define dreb 10
#define smena_tsifr 500
#define dreb_set 1000
#define dreb_set_2 100
#define kn_set 0b01111100
#define kn_hour 0b10111100
#define kn_min 0b11011100
#define kn_sec 0b11101100
#define obn 100
// Declare your global variables here
char hour, min, sec; //переменные для времени.
char tmp;
void main(void)
{
DDRA=0xFF;
DDRB=0xFF;
PORTC=0xFF;
DDRD=0xFF;
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// I2C Bus initialization
i2c_init();
tmp = rtc_read(0x00);
//tmp &=~(1<<7);
tmp=tmp&0b01111111;
rtc_write(0x00, tmp); //включение DS1307, бит 7 ноль
tmp = rtc_read(0x02);
//tmp &=~(1<<6);
tmp=tmp&0b0111111;
rtc_write(0x02, tmp); // бит 6 ноль - 24ох часовой режим
rtc_init(0, 1, 1); // включение генератора импульсов
//rtc_set_time(14,02 , 00);
Darth Cuauhtemoc писал(а):дальше идет в бесконечном цикле опрос
rtc_get_time(&hour, &min, &sec); // читаем из DS-ки время
RoboC писал(а):Darth Cuauhtemoc писал(а):дальше идет в бесконечном цикле опрос
rtc_get_time(&hour, &min, &sec); // читаем из DS-ки время
После этой команды добавьте 3 строчки, где присваиваете &hour, &min, &sec определенные значения. Часы идти не будут, но если глюк пропадет- проблема в обмене с RTC. Ну а там, отладчик с симулятором Вам в руки.
Код: Выделить всё
i2c_init();Резисторы есть, цепи довольно длинные, проходящие рядом с другими высокочастотными цепями, незнаю в чем конкретно дело но факт остается фактом.Почему? Экономия на внешних резисторах 4.7 (5.1) кОм подвески к питанию, использование высокоомных, что в животе у МК и как следствие наводки от соседних цепей?
Волосатый писал(а):Резисторы есть, цепи довольно длинные, проходящие рядом с другими высокочастотными цепями, незнаю в чем конкретно дело но факт остается фактом.

Microtech писал(а):Читая форум, мне несколько раз попадалось сообщение, о проблемах с точностью хода, при использовании DS1307 на длинных проводах, вдали от процессора. Как? Она ведь время внутри себя считает, причем тут интерфейс? Ё...
Microtech писал(а):Скорее для темы в Мяяу.. Читая форум, мне несколько раз попадалось сообщение, о проблемах с точностью хода, при использовании DS1307 на длинных проводах, вдали от процессора. Как? Она ведь время внутри себя считает, причем тут интерфейс? Ё...



Волосатый писал(а):dark_rider, поставьте для начала частоту опроса RTC один-два раза в секунду, если проблема с мусором на шине, то при получении такого мусора вы это будете наблюдать эти 0,5-1 секунду.Кстати не обязательно. Всё зависит от того как часто обновляется экран, если после опроса ЧРВ то да будет именно так, а если после того как поменялась секунда, то, тоже не исключено, но реже.RoboC писал(а):... Вы получите на статике эффект который описали.
ПС я тоже сталкивался с мусором на шине, но в 99,99% случаев передача прерывалась с зависанием TWI и МК получал "лог. единицу" что соотв. коду 0xFF, что соотв. высокоимпедансному состоянию на всех выводах дешифратора, что при завышенном анодном приводит к хаотичному свечению случайных катодов в лампе. Не стал особо заморачиваться и вставил проверку полученного на значение 0xFF, и если это получено, то этот пакет пропускается, TWI переинициализируется и передача начинается с начала.
Palmyr писал(а):Возможно DS3231 не хочет нормально работать из за наводок не на шину I2C а нацепи в самой микросхеме? .
dark_rider писал(а):выглядит симпотно.
suslogon писал(а):а я уже давно купил себе пинцет для смдвроде мастеч) и все равно мало пользуюсь....