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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Странное поведение DS1302
Pepper
сообщение Dec 26 2007, 14:04
Сообщение #31


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511



Я кажется понял где грабли:
у меня моя железка питается от мощьного блока питания. я выдернул щас из нее силовой кабель и напряжение питания начало медленно падать... так вот в какой-то момент времени, перед тем, как экран погаснет, там появлись четные числа...
питание от +5В. завтра буду пробовать подключить RTC через линейный преобразователь напряжения на 3,3 В...
мне почему то кажется, что это решение проблемы smile.gif
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 27 2007, 05:44
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Маленький совет по динамической индикации:Во время отображения, особенно если цифра отсутствует или какойто сегмент отключен, может наблюдаться еле заметная подсветка сегмента. Дело тут в следующем: Ваш код, смотрите сначала в "t0_l4" Вы выключаете "LED4", а при следующем прерывании в"t0_l1"сначало включаете "LED1".. а через несколько команд выключаете "LED4". Это может быть видно на диодах сегментного индикатора:
Цитата(Pepper @ Dec 21 2007, 13:35) *
t0_l1:
cbi PORTD, LED1
sbi PORTD, LED2
sbi PORTD, LED3
sbi PORTD, LED4
lds r17, DisplayNum
rjmp t0_l5
t0_l2:
sbi PORTD, LED1
cbi PORTD, LED2
sbi PORTD, LED3
sbi PORTD, LED4
lds r17, DisplayNum + 1
rjmp t0_l5
t0_l3:
sbi PORTD, LED1
sbi PORTD, LED2
cbi PORTD, LED3
sbi PORTD, LED4
lds r17, DisplayNum + 2
rjmp t0_l5
t0_l4:
clr r16
sbi PORTD, LED1
sbi PORTD, LED2
sbi PORTD, LED3
cbi PORTD, LED4
lds r17, DisplayNum + 3

решение простое:
Код
t0_l1:
    sbi PORTD, LED1//сначало все выключим
    sbi PORTD, LED2
    sbi PORTD, LED3
    sbi PORTD, LED4  

    cbi PORTD, LED1//а потом включим нужный сегмент
    sbi PORTD, LED2
    sbi PORTD, LED3
    sbi PORTD, LED4
    lds r17, DisplayNum
    rjmp t0_l5

smile.gif

Сообщение отредактировал adc - Dec 27 2007, 05:45


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Pepper
сообщение Dec 27 2007, 06:03
Сообщение #33


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511



Цитата(adc @ Dec 27 2007, 08:44) *
Маленький совет по динамической индикации:Во время отображения, особенно если цифра отсутствует или какойто сегмент отключен, может наблюдаться еле заметная подсветка сегмента. Дело тут в следующем: Ваш код, смотрите сначала в "t0_l4" Вы выключаете "LED4", а при следующем прерывании в"t0_l1"сначало включаете "LED1".. а через несколько команд выключаете "LED4". Это может быть видно на диодах сегментного индикатора:

решение простое:
Код
t0_l1:
    sbi PORTD, LED1//сначало все выключим
    sbi PORTD, LED2
    sbi PORTD, LED3
    sbi PORTD, LED4  

    cbi PORTD, LED1//а потом включим нужный сегмент
    sbi PORTD, LED2
    sbi PORTD, LED3
    sbi PORTD, LED4
    lds r17, DisplayNum
    rjmp t0_l5

smile.gif


Спасибо за дельное замечание.
исправил smile.gif
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 27 2007, 06:37
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Скажите, а в схеме у Вас батарейный элемент питания стоит?
зы: я не просто спрашиваю.. уже сам прошелся по этим граблям. http://electronix.ru/forum/index.php?showt...37842&st=30

Сообщение отредактировал adc - Dec 27 2007, 06:39


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Pepper
сообщение Dec 27 2007, 06:39
Сообщение #35


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511



Цитата(adc @ Dec 27 2007, 09:37) *
Скажите, а в схеме у Вас батарейный элемент питания стоит?
зы: я не просто спрашиваю.. уже сам прошелся по этим граблям. http://electronix.ru/forum/index.php?showt...37842&st=30


батарейка стоит. новая CR2032 на 3В.
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 27 2007, 08:58
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



В начале программы хорошо бы сделать инициализацию ds1303. А именно установку в "0" 7-го бита "CH" (CLOCK HALT FLAG) и "WP"(WRITE-PROTECT BIT)в "0".
Попробуйте изменить кусок кода чтения байта из мс. У Вас получается после прохождения цикла лишний такт (восьмой) а по даташиту их получается семь т.к. установка по по спадающему фронту. ну к примеру так:
Код

...
// Передача адреса закончена, переходим к приему данных
    rcall PortToIn    // Переводим порт на вход
    DelayUs 10        // Задержка

    ldi r18, 7        // Инициализация счетчика бит
    clr r17        // Очищаем регистр выходных данных
    DelayUs 10
    sbis PIND, IO    // Проверяем бит на входе
    rjmp dr_l4        // переход, если = 0
    ori r17, 0x80    // Если 1, то устанавливаем 1 в старший разряд выходного регистра
dr_l4:
    DelayUs 10  
    sbi PORTD, CLK    // сформировать нарастающий фронт CLK
    DelayUs 10        // подержать 10 мкс
    cbi PORTD, CLK    // сформировать стадающий фронт CLK
    DelayUs 10        // подержать 10 мкс    
     lsr r17        // Сдвигаем вправо на 1 бит
    sbis PIND, IO    // Проверяем бит на входе
    rjmp dr_l5        // переход, если = 0
    ori r17, 0x80    // Если 1, то устанавливаем 1 в старший разряд выходного регистра
dr_l5:
    dec r18        // уменьшить счетчик бит на 1
    brne dr_l4        // Если переданы не все 8, то переход
   // Адрес и данные переданы, завершаем сеанс
.....


Сообщение отредактировал adc - Dec 27 2007, 09:28


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Pepper
сообщение Dec 27 2007, 11:30
Сообщение #37


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511



у меня стоит начальная инициализация:
Код
// Сбросить защиту от записи
    ldi r16, 0x8E
    ldi r17, 0x00
    rcall DataWrite

и CH сбрасывается при установке секунд
Код
// Установить секунды
    ldi r16, 0x80
    ldi r17, 0x00
    rcall DataWrite


код переписал с учетом ваших рекомендаций - стало еще хуже...
на экране откуда-то взялось число 57, причем оно меняется на 12, и 25. закономерность не пойму.
откоментировал код инициализации, там выставлено время 12:30. записываю его в МК - тот же результат, 57, 12, 25...
попробовал переделать на 3,3 В, не помогло... в общем ясно, что это глюк RTC нужно покупать новую

разобрался в чем дело!!!!!!!! yeah.gif
подключаю основное питание, запскаю контроллер, он инициализирует RTC. на экране чёрти чё...
отключаю основное питание. батарейка на месте, и на экране и четные значения, и идут и все как
положено... в общем это, я так понимаю, все таки RTC бракованная походу

блин, вот гемор... не думал, что могут возникнуть такие проблемы... smile.gif
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 27 2007, 11:32
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(Pepper @ Dec 27 2007, 13:59) *
разобрался в чем дело!!!!!!!! yeah.gif


Странно?! такое разве может быть?.. т.е. стабильное питание необходимо для мс RTS?
Если после изменения кода произошли изменения в отображении, значит всетаки глюки в программе есть..это факт. Надо копать глубже! 12 это "1100", а 25 -"11001".. очень похоже на интерфейсные дела.. с чтением. Увеличивайте везде задержки, для чистоты эксперимента!
зы: на счет другой мс я использовал DS1307.

Сообщение отредактировал adc - Dec 27 2007, 11:43


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Pepper
сообщение Dec 27 2007, 11:59
Сообщение #39


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511



Цитата(adc @ Dec 27 2007, 14:32) *
Странно?! такое разве может быть?.. т.е. стабильное питание необходимо для мс RTS?
Если после изменения кода произошли изменения в отображении, значит всетаки глюки в программе есть..это факт. Надо копать глубже! 12 это "1100", а 25 -"11001".. очень похоже на интерфейсные дела.. с чтением. Увеличивайте везде задержки, для чистоты эксперимента!
зы: на счет другой мс я использовал DS1307.

забыл уточнить: эти цифры появлялись на 2 версиях кода процедуры чтения. вашем и поем... т.е. дело не в нем...
я решил взять DS3234 - у нее кварц интегрянный, и есть датчик температуры для компенсации ухода часов... стоит 140 рублей... а эту я брал за 90...
в общем спасибо за помощь, думаю тему можно закрывать smile.gif
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 27 2007, 13:14
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(Pepper @ Dec 27 2007, 14:59) *
в общем спасибо за помощь, думаю тему можно закрывать smile.gif

beer.gif закрывайте... biggrin.gif
зы:Жаль что не выяснилось в чем дело...

Сообщение отредактировал adc - Dec 27 2007, 13:15


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:06
Рейтинг@Mail.ru


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