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

oner

Members
  • Постов

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

  • Посещение

Весь контент oner

  1. Простите, но на каком основании тогда Вы утверждаете, что Li-Ion и свинцовые нельзя зарядить одним устройством?
  2. Может вы все же уточните - чем зарядка свинцовых АКБ радикально отличается от остальных, кроме величин токов и напряжений?
  3. ISR(ADC_vect)// Обработчик прерывания от АЦП { ADCSRA = 0; // Выключаем АЦП if((ADMUX & 0x0F)==1) // Если был выбран канал ADC1 { voltage_value = voltage_value + ADC; // Суммируем измеренные значения напряжения и помещаем в буфер ADMUX = (ADMUX & 0xF0) | 0; // Выбираем канал ADC0 } else { current_value = current_value + ADC; // Суммируем измеренные значения тока и помещаем в буфер ADMUX = (ADMUX & 0xF0) | 1; // Выбираем канал ADC1 adc_counter++; // Увеличиваем счетчик выборок АЦП на 1 } // Включаем АЦП ADCSRA |= (1 << ADEN)|(1 << ADSC)|(1 << ADPS2)|(1 << ADPS1)|(1 << ADPS0)|(1 << ADIE); }
  4. Если не секрет - чем заряд свинцовых АКБ радикально отличается от заряда остальных?
  5. Я хочу расширить это устройство до свинцовых аккумов
  6. Т.е. все-таки PC0 и PC1 используются, как каналы АЦП, а PC2 и PC3 - совсем нет? А PC4 вообще используется, как выход ШИМ?Очень смущает это, потому что в программе из статьи инициализация АЦП выглядит так: ADCSRA |= (1 << ADEN)|(1 << ADSC)|(1 << ADPS2)|(1 << ADPS1)|(1 << ADPS0)|(1 << ADIE); И правильно ли я понимаю, что ток заряда устанавливается эмпирически. т.е. после замеров падения напряжения на эмиттерном резисторе транзистора 2SA614 и соотнесения его с некими коэффициентами. забитыми в контроллер?
  7. Всем привет! На просторах сети нашел статью с описанием зарядного устройства на Atmega8. Описание устройства в статье недостаточно для меня. Допустим, я хочу на базе материала данной статьи сделать зарядное устройство на ток ампер в 10 с защитой от перегрева аккумулятора при заряде. Правильно ли я понимаю, что зарядное устройство в этой статье: а) одни порты АЦП использует по назначению, а другие - как выход? б) не замеряет непосредственно ток заряда аккумулятора, а контроллирует только ток разряда?
  8. Спасибо.
  9. oner

    1602 и 12864

    Вопрос знатокам: можно ли без особых танцев с бубнами для выведения строчного текста вместо дисплея 1602 подключить 12864? В идеале используя то же количество проводов между контроллером и дисплеем. Контроллер Atmega8. И если можно, то как?
  10. Люди, что происходит? Дабы полностью разобраться с тем, как работает JTAG и PORTC контроллера atmega32, я упростил код программы до #include <mega32.h> #include <delay.h> void main(void) { #asm("sei") PORTC=0x00; DDRC=0x01; while (1) { PORTC.7=1; //включаем 0 ножку порта В delay_ms(100); // ждем 100 мс PORTC.7=0; //выключаем 0 ножку delay_ms(100); //ждем 100 мс } } В результате у меня светятся PORTC.3 и PORTC.5. Невероятно, но PORTC.7 соизволил мигать. Пардон. В данном случае дело действительно во фьюзе JTAG. Однако, программа, работавшая на Atmega8 при таких же фьюзах не работает.
  11. Самое забавное, что я вообще не использовал кварц с Atmega8, а использовал время от внутреннего таймера (см.код).
  12. Зачем же Вы так объединяете время время выполнения обоих условий со временем выполнения первого из условий? За большой временной интервал, который отсчитывает переменная s у меня условие, выполняемое время o, условие выполнится s/o раз, что и было на Atmega8. А здесь первое условие прокрутится 1 раз. Что Вы имеете в виду под "тестовым примером"? Особенно в условиях, когда я изначально не знаю о том, что именно не работает?
  13. А почему в случае с Atmega8 у меня без часового кварца все работало? В смысле - а так ли он нужен в данном случае? Поставить его - не проблема, но занимать два пина на то, без чего получалось обойтись, не хотелось бы. Переписал порты к виду: { s++; // увеличиваем переменную каждую секунду if (s<21000) { // Режим 0 (Разрядка) o++; if(o>20) { PORTC.5=1; } if(o>(20+n)) { o=0; PORTC.5=0; } } if (s>21000) // Переключение режимов разрядки и зарядки { PORTC.5=0; PORTC.4=1; ss++; if(ss>20) { PORTC.3=1; } if(ss>(20+m)) { ss=0; PORTC.3=0; } } TCNT1=0; //обнуляем таймер } Что с часовым кварцем, что без него - постоянно горит PORTC.5
  14. Я тут уже паниковать начинаю - программа, тикавшая, как часы с Atmega8 при переносе на Atmega32 реагирует или полным неадекватом, или портами с нулевым выходом.Что с JTAG, что без него. Полдня шил живой контроллер, в панике перебрал все возможные варианты и пришел к такому результату на брэдборде со светодиодами: При high fuses D9 DDRC = 0x01; while(1)PORTC ^= 0x00; на выходах порта С светятся PC2 и PC3 При high fuses 99 DDRC = 0x01; while(1)PORTC ^= 0x00; на выходах порта С светятся PC1, PC2 и PC4. При high fuses 99 DDRC = 0xFF; while(1)PORTC ^= 0xFF; на выходах порта С светяся PC0, PC1, PC6 и PC7. При high fuses D9 DDRC = 0xFF; while(1)PORTC ^= 0xFF; на выходах порта С светятся все, секунд через 5 PC1 и PC7. Особо смущает, что нет засвечивания PORTC.5 через 21 секунду, как указано в коде и, повторюсь, чо без проблем происходило в Atmega8 как в протеусе, так и на реальном контроллере. Кварц я повесил на XTAL1 и XTAL2, а зачем вешать кварц на PC6 и PC7?
  15. Может, тогда все же DDRC = 0x01; while(1)PORTC ^= 0x00; ведь PORTC используется, как выход.
  16. Переустановил Протеус. Нашел кучу фьюзов, но только не JTAG. Вы уверены, что он точно настраивается в протеусе?
  17. Да у меня тут всё через... Прежде, чем делать в железе, я всё прогоняю на компьютере. В частности - через протеус. А шью тоже через AVRDudeShell.
  18. Замечательно. А в Протеусе мне где фьюзы выставлять?
  19. Простите, но где это делается? Насколько я знаю, фьюзы выставляются только при прошивке контроллера в реале. А что Вы имеете в виду?
  20. Мои фантастические приключения продолжаются. Возникла необходимость подключить LCD, поэтому было решено перейти на контроллер с бОльшим числом портов. Выбор, ясное дело, пал на Atmega32, но после переписывания ссылок на соответствующую библиотеку, а также другие выходные порты система в протеусе стала творить непонятно что. Особо смущает то, что один из портов, несмотря на объявление оного в коде, вообще отказывается выдавать сигнал. Что за фигня? Скрин, а также файлы исходника и протеуса прилагаю. 111.7z
  21. Я уже морально готов болгаркой кусок жесткого диска с записанной на него программой вырезать.
  22. При удалении через установку и удаление прогрмм выскакивает окно, я его запостил в стартовой записи этой ветки форума. Это окно пустое и со временем в нем ничего не появляется.
  23. В процессе установки этой программы у меня произошел обрыв интернета и установка прервалась. Однако, сама программа как бы установилась, менеджер приложений видит ее и говорит, что она занимает аж 4,5 гига памяти. Однако, на диске С в Program Files папка "Atmel" весит всего 150 кБ. При этом при поворной установке, равно как и при попытке удалить недоустановленный Atmel Studio 7, появляется такое окошко: и висит себе спокойно. Ни удаления, ни установки. Clean Master не помог. Как удалить это теперь?
×
×
  • Создать...