Перейти к содержанию
    

astpepper

Участник
  • Постов

    22
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о astpepper

  • Звание
    Участник
    Участник
  • День рождения 08.07.1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. забыл уточнить: эти цифры появлялись на 2 версиях кода процедуры чтения. вашем и поем... т.е. дело не в нем... я решил взять DS3234 - у нее кварц интегрянный, и есть датчик температуры для компенсации ухода часов... стоит 140 рублей... а эту я брал за 90... в общем спасибо за помощь, думаю тему можно закрывать :)
  2. у меня стоит начальная инициализация: // Сбросить защиту от записи 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: подключаю основное питание, запскаю контроллер, он инициализирует RTC. на экране чёрти чё... отключаю основное питание. батарейка на месте, и на экране и четные значения, и идут и все как положено... в общем это, я так понимаю, все таки RTC бракованная походу блин, вот гемор... не думал, что могут возникнуть такие проблемы... :)
  3. Спасибо за дельное замечание. исправил :)
  4. Я кажется понял где грабли: у меня моя железка питается от мощьного блока питания. я выдернул щас из нее силовой кабель и напряжение питания начало медленно падать... так вот в какой-то момент времени, перед тем, как экран погаснет, там появлись четные числа... питание от +5В. завтра буду пробовать подключить RTC через линейный преобразователь напряжения на 3,3 В... мне почему то кажется, что это решение проблемы :)
  5. из-за чего это ошибка прет я не знаю, но сам использую связку AVR Studio и WinAVR. WINAVR как раз и есть avr-gcc. там же, на сколько я знаю и лежыт make. может быть поэтому не получается проект собрать?
  6. вот весь проект 7_s.inc.txt delay.inc.txt main.asm.txt time.inc.txt timer.inc.txt В main`е есть небольшое количесво кода, которое не сипользуется. это эксперементы :) не обращайте внимания :)))
  7. только что обнаружил еще более странный глюк: при включении питания контроллера на экране ~ полсекунды горят четные числа, а потом нули... что это ????????????
  8. мда... ладно, спасибо за помощь. может быть на выходных получится поподробнее разобраца в алгоритмах и даташитах... нужно еще раз все проверить на AVR Studio...
  9. тогда я не знаю чё делать... :( мысли закончились :( позвольте один интересный факт рассказать: согласно даташиту ноги RTC подтянуты к земле.... я резистором подтягиваю их на +5 и о чудо... там, где раньше читались нули - щас читаются 0xFF... дальшейшие изыскания привели к тому, что так себя видут ячейки с НЕ инициализированными значениями. т.е. записываю в RAM RTC нечетное значение - читается нормально... а если записать четное или вообще ничего не записывать то получается вот такая вот странная фигура... лично я снова ничего не понимаю... может быть вам это то даст :)
  10. к сожалению осцилографа под рукой нет... оглошу еще один маленький факт: то, что я делаю сейчас (подключение RTC к МК) является лишь частью одного более глобального проекта. поэтому сделано все на навесном мантаже. предположения КЗ между ножками отметаются сразу. все проверяно по 100 раз. но в какой-то момент времени (по неизвесным причинам) микросхема нагрелась до такой температуры, что отпаялись все проводки от нее (кроме земли). МК живой, проверял каждую ножку. припоял все проводки на место к RTC. подключил и она заработала... вопрос: могла ли RTC так хитро сгореть, или все же это похоже на баг в коде? я проверял работу алгоритма на AVR Studio в режиме эмуляции ATTiny2313... там никаких глюков не было. что ему на "вход" подовал, то на выходе и получал... поэтому я уже не знаю что думать... может быть действительно RTC битая?
  11. Это не совсем грабли :) когда я писал именно этот кусок кода, у меня этот массив был в ОП, были глюки (потом выяснилось, что не из-за этого), из-за которых я переделал этот массив в память программ, а поправить алгоритм забыл... а когда речь шла о ОП, то ее всего 128 байт (tiny2313). поэтому я и не замарачивался с регистром ZH. спасибо за уточнение. что касается RTC: у меня в влгоритме именно так и происходит: // Передача адреса закончена, переходим к приему данных rcall PortToIn // Переводим порт на вход DelayUs 10 // Задержка <<<<<<<<<<<<<<<<<<, тут 0й бит на шине ldi r18, 8 // Инициализация счетчика бит clr r17 // Очищаем регистр выходных данных dr_l4: lsr r17 // Сдвигаем вправо на 1 бит sbis PIND, IO // Проверяем бит на входе <<<<<<<<<<<<<<<<< тут я его читаю и сохраняю rjmp dr_l5 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l5: // DelayUs 10 // задержка для формирования данных на ноге контроллера sbi PORTD, CLK // сформировать нарастающий фронт CLK DelayUs 10 // подержать 10 мкс cbi PORTD, CLK // сформировать стадающий фронт CLK DelayUs 10 // подержать 10 мкс dec r18 // уменьшить счетчик бит на 1 brne dr_l4 все вроде соответствует даташиту
  12. согласно даташиту не надо ничего менять... тоесть надо конечно, но у меня там все уже сдвинуто: // Передача адреса закончена, переходим к приему данных rcall PortToIn // Переводим порт на вход DelayUs 10 // Задержка <<<<<<<<<<<<<<<<<<<<<<<< после этой задержки на шине уже присутствует 0й бит от RTC ldi r18, 8 // Инициализация счетчика бит clr r17 // Очищаем регистр выходных данных dr_l4: lsr r17 // Сдвигаем вправо на 1 бит sbis PIND, IO // Проверяем бит на входе rjmp dr_l5 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l5: sbi PORTD, CLK // сформировать нарастающий фронт CLK DelayUs 10 // подержать 10 мкс cbi PORTD, CLK // сформировать стадающий фронт CLK DelayUs 10 // подержать 10 мкс dec r18
  13. там все нормально... это код, который овечает за вывод значений на сигментах... он никак на чтение из RTC не влияет: Digits: .db \ al + bl + cl + dl + el + fl, \ bl + cl, \ al + bl + gl + el + dl, \ al + bl + cl + dl + gl, \ fl + gl + bl + cl, \ al + fl + gl + cl + dl, \ al + fl + el + dl + cl + gl, \ al + bl + cl, \ al + bl + cl + dl + el + fl + gl, \ al + bl + cl + dl + fl + gl, \ al + bl + cl + fl + el + gl, \ el + fl + dl + cl + gl, \ al + dl + el + fl, \ bl + cl + dl + el + gl, \ al + dl + el + fl + gl, \ al + el + fl + gl, \ '\x00', \ gl
  14. dr_l4: lsr r17 // Сдвигаем вправо на 1 бит sbis PIND, IO // Проверяем бит на входе rjmp dr_l5 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l5: // DelayUs 10 // задержка для формирования данных на ноге контроллера sbi PORTD, CLK // сформировать нарастающий фронт CLK DelayUs 10 // подержать 10 мкс cbi PORTD, CLK // сформировать стадающий фронт CLK DelayUs 10 // подержать 10 мкс dec r18 // уменьшить счетчик бит на 1 brne dr_l4 не работает! :( даже вот так вот // Передача адреса закончена, переходим к приему данных rcall PortToIn // Переводим порт на вход DelayUs 10 // Задержка <<<<<<<<<<<<<<<<<<<<<<<<<<< чтение нулевого бита ldi r18, 8 // Инициализация счетчика бит clr r17 // Очищаем регистр выходных данных dr_l4: lsr r17 // Сдвигаем вправо на 1 бит sbis PIND, IO // Проверяем бит на входе rjmp dr_l5 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l5: // DelayUs 10 // задержка для формирования данных на ноге контроллера sbi PORTD, CLK // сформировать нарастающий фронт CLK DelayUs 10 // подержать 10 мкс cbi PORTD, CLK // сформировать стадающий фронт CLK DelayUs 10 // подержать 10 мкс dec r18 // уменьшить счетчик бит на 1 brne dr_l4
×
×
  • Создать...