Пятница, 26.04.2024, 05:18
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Измеритель разряда литиевых батарей - Страница 2 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разработано и сделано ! » Измеритель разряда литиевых батарей
Измеритель разряда литиевых батарей
uwrteyДата: Пятница, 18.01.2013, 18:30 | Сообщение # 16
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Помнишь, Я жаловался, что мой программатор сам запитывает программируемую схему от  разъема LPT, хотя делать этого не должен.
А когда я подключаю питание к программируемой схеме то, он отказывается прошивать.
я разобрался в чем дело! ( смотри схему )
видишь диод КД522  ....  Так я его не правильно припаял!  у него разметка наоборот ( со стороны анода, а я привык что разметка со стороны катода )
Прикрепления: 7590233.jpg (44.1 Kb)


не успеваю за своими мыслями......
 
uwrteyДата: Пятница, 18.01.2013, 19:58 | Сообщение # 17
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Исправил схему. Я подтянул Reset к питанию через выключатель. В режиме программирования выключатель будет включен, а в остальное время будет выключен.
Мне кажется намного разумнее сделать подтяжку РЕСЕТа в самом программаторе. ( то-есть РЕСЕТ будет подтянут только тогда, когда программатор будет включен ) Ты как думаешь ?
Прикрепления: 3433592.jpg (212.8 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Пятница, 18.01.2013, 22:25 | Сообщение # 18
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
Исправил схему. Я подтянул Reset к питанию через выключатель. В режиме программирования выключатель будет включен, а в остальное время будет выключен.
а смысл ?
подтяни резет к 5 в. через 10 ком и забудь про этот вывод.. он будет использоваться только для программирования или сброса микроконтроллера..
для управления дисплеем он не может быть использован без изменения фюзов..

лучше для строба (sclk) дисплея используй вывод управляющий полевиком...
для отладки можно выводить строки на дисплей, а потом когда дисплей отключишь уже использовать этот вывод только для управления полевиком


Виталий (аka ВитГо)
 
uwrteyДата: Пятница, 18.01.2013, 22:32 | Сообщение # 19
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ок
Прикрепления: 5497192.jpg (234.8 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Пятница, 18.01.2013, 22:38
 
ВитГоДата: Пятница, 18.01.2013, 22:45 | Сообщение # 20
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну или так...

Виталий (аka ВитГо)
 
uwrteyДата: Пятница, 18.01.2013, 22:53 | Сообщение # 21
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
где бы почитать про АЦП ?

вот, уже что то нашел http://sokolsp.at.ua/publ....-1-0-18 smile


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Пятница, 18.01.2013, 23:37
 
ВитГоДата: Суббота, 19.01.2013, 00:22 | Сообщение # 22
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
да, пойдет

у меня работало чтото такое

Код
ADC_CONV:         ; Прерывание осуществляющее захват значений АЦП каналов
                    PUSH    R16            ; сохраним регистр temp
                 IN      R16   , SREG      ;   сохраним регистр флагов
                 PUSH   R16
                 PUSH   R17
                 PUSH   ZL
                 PUSH   ZH
                 PUSH   R0
                 PUSH   R1
                      
                 LDS      R16      , ADC_NUM   ; номер канала АЦП для чтения
                 LDI      ZL      , low (ADCX_VAL)
                 LDI      ZH      , high(ADCX_VAL)

                 CALL   SYP_MUL2R16_ADDZ
                 ; в Z адрес для сохранения значения АЦП канала

                 IN      R17      , ADCL      ; читаем значение канала АЦП   
                 ST      Z+      , R17      ;   
                 IN      R17      , ADCH      ;
                 ST      Z+      , R17      ;

                 INC      R16      ; увеличиваем номер канала ADC для чтения
                 STS      ADC_NUM      , R16   ; сохраним номер канала для чтения

                 CPI      R16      , 7         ; прочитаны все 7 каналов ?
                 BREQ   ADC_CONV_EXIT
                 ; нужно читать остальные каналы                 

                 LDI      R17      , ADC_ADMUX
                 OR      R17      , R16      ; накладываем номер канала для чтения
                 OUT      ADMUX   , R17      ; сохраняем настройки АЦП

                 ; Запускаем следующее преобразование.   
                 LDI      R16   ,   ADC_ADCSRA
                 OUT      ADCSRA   ,   R16

ADC_CONV_EXIT:      ; выход   
                 POP      R1
                 POP      R0
                 POP      ZH
                 POP      ZL
                 POP      R17
                 POP      R16
                 OUT      SREG   , R16
                 POP      R16
                 RETI

настроечные константы были такие

Код
; Аналого-цифровой преобразователь
.equ      ADC_ADMUX   = (0<<REFS1)|(1<<REFS0)    ; настройки АЦП - от внутреннего генератора
.equ      ADC_ADCSRA   = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(0<<ADATE)|(6<<ADPS0)   ;
 

это все для меги 16... проверь совпадают ли для тиньки


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 19.01.2013, 15:04 | Сообщение # 23
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
почитал, кое что понял, а кое что нет ......
___________________________________________________________________________________________

нам понадобится регистр ADMUX  стр 90 датащита

в нем биты

REFS0  - выбор опорного напряжения ( лог_0 = VCC // лог_1 = внутренний источник )

ADLAR - этот бит определяет как производить запись в регистры ADCH и ADCL ( слева направо или наоборот )

MUX1 и MUX0 - определяют какой аналоговый вход будем использовать

___________________________________________________________________________________________

а еще понадобится регистр ADCSRA  стр 91

в нем биты

ADEN - установка этого бита включает АЦП

ADSC - этот бит устанавливается автоматически, когда происходит преобразование АЦП. когда преобразование завершается этот бит сбрасывается в нуль. ( что бы включить одиночное преобразование нужно установить вручную этот бит )

ADATE - этот бит включает автоматический запуск АЦП // (лог_1 = автозапуск, лог_0 = одиночное преобразование )

ADIF - этот бит устанавливается  при обновлении данных после завершения преобразования АЦП

ADIE - этот бит разрешает прерывание ( в том случае если бит I в регистре SREG установлен )

APDS2, APDS1 и APDS0 - эти биты устанавливают тактовую частоту

___________________________________________________________________________________

и еще один регистр ADCSRB

ACME - включает аналоговый компатор (смотреть стр 78 таблицу 35)

ADTS0, ADTS1 и ADTS2 - выбор типа автозапуска АЦП ( таблица 40 на странице 93 )


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 20.01.2013, 16:55
 
ВитГоДата: Суббота, 19.01.2013, 17:40 | Сообщение # 24
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
а что из этого не понял ?
посмотри теперь на код что я дал выше и делай тест-программу


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 19.01.2013, 22:36 | Сообщение # 25
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (ВитГо)
а что из этого не понял ?

1) ну например не понял для чего устанавливать ADSC // ( ..... это для  инициализации АЦП ? )

2) и не понял зачем скидывать ADATE ( отключаем автозапуск... автозапуск чего ? )

( пользовался google translate - может что не так перевел...)

3) у тебя не задан аналоговый вход (MUX0-MUX4) // ( по умолчанию что ли какой то стоит ? )

4) Читал где то что модуль АЦП может работать как в режиме одиночного преобразования, так и непрерывного.


Вопрос про одиночное преобразование. Как может разрешится новое одиночное преобразование? ( по какому событию ? )


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 20.01.2013, 00:12
 
ВитГоДата: Воскресенье, 20.01.2013, 09:03 | Сообщение # 26
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
1) ну например не понял для чего устанавливать ADSC // ( ..... это для  инициализации АЦП ? )
2) и не понял зачем скидывать ADATE ( отключаем автозапуск... автозапуск чего ? )
ADSC устанавливаем чтобы запустить преобразование
ADATE - сбрасываем чтобы получить результат только одного преобразования (следующее автоматом запущено не будет) ... обычно это используется когда нужно получить значения с нескольких каналов АЦП
Цитата (uwrtey)
3) у тебя не задан аналоговый вход (MUX0-MUX4) // ( по умолчанию что ли какой то стоит ? )
почему не задан ?! вот задаю

 
Код
LDI      R17      , ADC_ADMUX  
  OR      R17      , R16      ; накладываем номер канала для чтения  
  OUT      ADMUX   , R17      ; сохраняем настройки АЦП
 

Цитата (uwrtey)
4) Читал где то что модуль АЦП может работать как в режиме одиночного преобразования, так и непрерывного.
 
Цитата (uwrtey)
Вопрос про одиночное преобразование. Как может разрешится новое одиночное преобразование? ( по какому событию ? )

вот установкой ADSC и сбросом ADATE и запускается одиночное преобразование


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 20.01.2013, 09:56 | Сообщение # 27
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
а, вот оно как.. smile

Не привычно видеть запись типа
Цитата
out ADMUX, R17

а еще меня удивила запись типа "(6<<ADPS0)", но с ней я разобрался... smile

сейчас попробую что ни будь написать...

_____________________________________________________

блин, что  сфорумом ? с интернет-эксплорера не возможно отправлять новые ответы....
( я на работе маюсь, дома у меня мозила - проблем нет )


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 20.01.2013, 10:19
 
ВитГоДата: Воскресенье, 20.01.2013, 10:36 | Сообщение # 28
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
блин, что  сфорумом ? с интернет-эксплорера не возможно отправлять новые ответы....
не знаю, у меня хром, вроде нормально все работает..

вообще конечно немного напрягает забота и апгрейды хостинга.. о том что есть какие то изменения я узнаю только после того как чтото отваливается и я спрашиваю у службы поддержки.. не знаю буду ли я продлять хостинг на следующий год... может быть действительно проще купить только хостинг и заплатить за создание сайта (или самому разобраться с cms какой нить)


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 20.01.2013, 12:25 | Сообщение # 29
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
а мне нужно одиночное преобразование или постоянное ?

наверно постоянное задействовать ?

и как частоту мигания светодиода регулировать ? ШИМ нужно городить ?


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 20.01.2013, 13:27
 
ВитГоДата: Воскресенье, 20.01.2013, 13:06 | Сообщение # 30
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
в принципе можно одиночными работать..

запусти таймер с периодом например 100 мс

каждое прерывание таймера читаешь значение из АЦП и запускаешь единичное новое преобразование
после этого печатаешь значение на экране...

можно и непрерывное преобразование запустить - тогда даже проще получиться - просто считываем значение АЦП и печатаем его на экране в цикле...


Виталий (аka ВитГо)
 
Форум » Разработка электронных устройств » Разработано и сделано ! » Измеритель разряда литиевых батарей
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz