|
Hardware TWI модуль Mega и RTC pcf8583 |
|
|
|
Nov 19 2006, 10:17
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Толи лыжи не едут,толи одно из двух  Пытаюсь запустить сей девайс.Чтение проходит без прблем, а при попытке записи модуль TWI зависает -то SCL в 0,а то и еще и SDA. Судя по даташиту,работа с ним не отличается от алгоритма обращения с обычной EEPROM,что и делаю. Кто работал с девайсом,плиз,подскажите,может я чего-то в DS проглядел или не понял?
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Nov 20 2006, 07:59
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(bodja74 @ Nov 20 2006, 02:06)  1 Насколько помню у pcf8583 разрешение записи на 7 ноге это "1" ,а не "0" как у 24ХХ. 2 У меня как то подвисало из за слишком короткого промежутка между командами "стоп" и "старт". 1.pcf8583 это не eeprom,а rtc,и разрешения записи там нет. 2.В том-то и загвоздка,что виснет не при чтении,где я вначале адресую её на запись и устанавливаю начальный адрес чтения,потом stop,повторная адресация и чтение,а при записи,где алгоритм более простой-адресация на запись,адресация начальной ячейки и запись с автоинкрементом адреса.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Nov 20 2006, 12:41
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(WHALE @ Nov 20 2006, 07:59)  2.В том-то и загвоздка,что виснет не при чтении,где я вначале адресую её на запись и устанавливаю начальный адрес чтения,потом stop,повторная адресация и чтение,а при записи,где алгоритм более простой-адресация на запись,адресация начальной ячейки и запись с автоинкрементом адреса. Может быть можно вставить цикл задержки или repeated start, между выдачей адреса и данными. При работе через прерывания задержку довольно сложно вставить, но Вы можете поэксперементировать без прерываний вначале..
|
|
|
|
|
May 3 2007, 15:04
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
Ковыряю PCF8583 в железе. В мэйне вызываем инициализацию i2c, потом инициализацию PCF8583, устанавливаем значение времени (пока для теста), в while показываем секунды и минуты, по прерыванию считываем время с PCF8583. Так вот затык в том что время как установилось так и не движется, т.е. часы не ходят - стоят на устанавленном значении. В чем может быть проблема? HELP PLEASE!!!!
|
|
|
|
|
May 3 2007, 16:16
|
Местный
  
Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225

|
рабочий код на асме mega128+pcf8583
Прикрепленные файлы
CLOCK.zip ( 1.15 килобайт )
Кол-во скачиваний: 146
|
|
|
|
|
May 3 2007, 16:40
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
to m16 за код конечно спасибо, но я пишу на Си
"А генератор включил 32768?" - схема мастеркитовская ns182 h__p://www.masterkit.ru/images/magazines/1_ST_08_02.gif
"Выведи его наружу и убедись, что управление проходит" - так там кварц часовой (цилиндрик 32768) стоит и от одной ноги через кондюк 20пф на +Пит.
|
|
|
|
|
May 3 2007, 16:47
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(sensor_ua @ May 3 2007, 16:59)  А генератор включил 32768? Выведи его наружу и убедись, что управление проходит А его можно там включить на выход?Вроде нет там такой возможности. У меня PCF пашет без вопросов,толька я его использую в таком режиме-на пине INT секундные импульсы,заведенные на прерывания проца. читаю время из него один раз по включению,а далее по прерываниям программный счет-гораздо быстрее получается,чем постоянное считывание счетных регистров PCF.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
May 3 2007, 16:52
|
Местный
  
Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225

|
Цитата(day177 @ May 3 2007, 16:04)  Так вот затык в том что время как установилось так и не движется, т.е. часы не ходят - стоят на устанавленном значении. В чем может быть проблема? HELP PLEASE!!!! Control/status register bit7: 1- stop counting, reset divider , 0- count pulses так вот ноликом часики запускаются
|
|
|
|
|
May 3 2007, 16:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата А его можно там включить на выход? Вывод 7 у него для этого и целый регистр 0x0D. А прерывания выдаёт он на 3-й пин ПРАВКА. Попутал с 8563;) У 8583 действительно нет Цитата схема мастеркитовская Да чихать от кого схема - в регистре 0x00 биты TEST и STOP правильные? ПРАВКА. Попутал с 8563;) У 8583 в регистре 0х00 должны быть правильно прописаны биты [5:4] и бит STOP -7
--------------------
aka Vit
|
|
|
|
|
May 4 2007, 02:04
|
Частый гость
 
Группа: Участник
Сообщений: 160
Регистрация: 5-04-06
Из: Москва
Пользователь №: 15 847

|
Цитата(Alex11 @ Nov 20 2006, 20:19)  У меня 8583 стоит в серийной продукции, работает без сбоев. Сейчас уже помню с трудом, но была там какая-то засада, связанная с тем, что контроллер был не штатный и не имел открытого коллектора на шине данных. В результате был очень короткий конфликт на шине при попытке подать повторный старт без стопа, после чего деталь впадала в ступор. У меня вот тоже.  Подскажите пожалуйста какой конденсатор между первой ногой и vcc у Вас стоит. А то у меня 10pf и они отстают. А вообще непонятно какие там могут быть проблемы, самая обычная i2c RTC, по моему там вообще нет никаких подврдных камней. Я тоже писал на Си, но она у меня не к AVR подключена. Она у меня вообще с первого раза пошла и даже без отладки. А вот генератор в ней вообще отключить по моему невозможно. Я её и выбрал из её цены и потому что на выходе int можно получить секундные импульсы - очнгь удобно. Цитата(day177 @ May 3 2007, 16:04)  Ковыряю PCF8583 в железе. В мэйне вызываем инициализацию i2c, потом инициализацию PCF8583, устанавливаем значение времени (пока для теста), в while показываем секунды и минуты, по прерыванию считываем время с PCF8583. Так вот затык в том что время как установилось так и не движется, т.е. часы не ходят - стоят на устанавленном значении. В чем может быть проблема? HELP PLEASE!!!! А Вы осциллографам на кварце смотрели ? Резисторы на SDA и SCL стоят ? И уверены что вообще время устанавливаете, просто если после подачи питания стчитывать время оно должно идти.
|
|
|
|
|
May 4 2007, 08:04
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
А вы последовательно с кварцем постоянный конденсатор ставите?  ну не знаю,может у вас кварцы особо точные.Я ставлю триммер 5/25 pf,на ногу INT с секундными импульсами частотомер в ре- жиме измерения периода и кручу,кручу...Кварцы гуляют очень прилично.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
May 4 2007, 11:22
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
to WHALE вот про это можно немного по-подробнее "на пине INT секундные импульсы,заведенные на прерывания проца. читаю время из него один раз по включению,а далее по прерываниям программный счет-гораздо быстрее получается,чем постоянное считывание счетных регистров PCF."
А гадина эта таки завелась - перешил той же прошивкой и часики затикали. В чем была проблема хз.
|
|
|
|
|
May 7 2007, 08:27
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
to WHALE я так и не понял после сброса чипа - PCF по умолчанию генерит прерывания каждую секунду или где-то надо что-то изменить?
если да, то в каком регистре и какой бит?
|
|
|
|
|
May 10 2007, 06:26
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
Вот кусок даташита: «В режиме подсчета реального времени, если режим alarm не задействован, вывод INT может генерировать постоянные прерывания с частотой 1Гц и скважностью 50%.» Вопрос: какие регистры и какие биты отвечают за это? Никак не пойму. Симулирую в Proteus, но прерывания не происходят – толи модель PCF-ки кривая, то ли я что-то неправильно делаю  HELP!!!
|
|
|
|
|
May 10 2007, 10:48
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
как же плюнуть на протеус - как же устройство отлаживать  в реале ваще черти что - динамическая индикация, считывание часов в пррывании по НЛУ - так вот вместо нормальной индикации поочередно показываются все цифры. плюс еще очень быстро проблескиваю все цифры. Может просто один раз вызывается прерывание, необходимый флаг не возвращается в исходное состояние и так остается в НЛУ и прерывания идут лавинно
|
|
|
|
|
May 10 2007, 14:25
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
"бери интеграл по частям" заведи четыре переменные, положи туда при старте 1, 2, 3 и 4 и отлаживай сначала динамическую индикацию. отладил.. копайся в обработке прерывания от часов, например при попадание туда увеличивай на единицу одну из переменных для вывода на индикатор и тыды.. ЗЫ Кстати, надеюсь выход от чипа часов, тот который должен вызывать прерывание меги у тебя подтянут резистором на +U.. Цитата(day177 @ May 10 2007, 14:48)  как же плюнуть на протеус - как же устройство отлаживать  в реале ваще черти что - динамическая индикация, считывание часов в пррывании по НЛУ - так вот вместо нормальной индикации поочередно показываются все цифры. плюс еще очень быстро проблескиваю все цифры. Может просто один раз вызывается прерывание, необходимый флаг не возвращается в исходное состояние и так остается в НЛУ и прерывания идут лавинно
|
|
|
|
|
May 11 2007, 07:41
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755

|
Цитата(Jury093 @ May 10 2007, 18:25)  ЗЫ Кстати, надеюсь выход от чипа часов, тот который должен вызывать прерывание меги у тебя подтянут резистором на +U.. на схеме резюка не было, за сим не ставил. Потом полистал даташит - оказывается нада ставить (мастеркит мать его перемать  ) в реале импульсы есть 1Гц. Модель протеуса кривая. Все переписал/переделал  В связи с изменением алгоритма программы обратный вопрос - как включить прерывания только по alarm?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|