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

Serg24

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

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

  • Посещение

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


  1. Вот что бы было понятно к чему я это всё затеял! http://www.compeljournal.ru/images/articles/2005_1_7.pdf эти AVR почти ничего не кушаю (300мкА! - 1мгЦ) но слишком крутые для меня. корпуса что то в стиле tqfp100 и цена 40-60 грн. мне надо дешевле и 32-50 ножки.... ОЧЕНЬ НАДА! :1111493779: что послабее у AVR есть? Кто то писал про Tiny так это даже не уровень M8!)) а вобще
  2. Подскажите пожалуйста, микроконтролер AVR уровня M8-M16 (что бы ножек не 100было). с потреблением в рабочем режиме <1мА. и не экзотический! а то на мою любимую М8 конкретный акумулятор надо получается :05:
  3. У меня для перелачи данных UART c M8 используется оптопара. и получается что этот лог.0 - 5В на выходе TXD дают потребление 20ма постоянно ( что можно сделать? Всем УМНЫМ ГОЛОВАМ сюда!!!))) а то дудеть устаю :1111493779:
  4. ну так RC генератор) паяльником прикоснулся и он поплыл)))) зацените ИДЕЮ! if (T1<=7790){OSCCAL++;} if (T1>=7830){OSCCAL--;} мне :a14: держит частоту 7810 стабильно а уйдёт за диапазоны снова подстоится в диапазон +/-0,3%, и OSCCAL изменяется в крайнем случае :yeah:
  5. Всем ОГРОМНОЕ спасибо! выбрал код как подсказал otrog! так как у меня все таймеры зяняты. лишние коды вставлять не стал и писал как бы сам. выбрал код такого плана. unsigned int i=TCNT1; TCNT1=0; if (i<7813) OSCCAL++; //Увеличиваем тактовую частоту else OSCCAL--; //Уменьшаем тактовую частоту SECOND_PULSE=1; при его использовании кждую секунду значение меняется 7811 (точность офигенная)/7837 (точность 0.3%) меня это всё устраивает с головой. только не будет ли проблем со стабильностью от такого частого изменения значения OSCCAL? как бы ... генератор... 8Мгц... все время там переключается что то... может какие то такты будут раз в секунду пропадать ? или я просто параноик?
  6. ОХО! я тогда сейчас уже лягу высплюсь и за это плотненько возьмусь!
  7. а где нибуть на русском имеется? мк M8. "С помощью OSCCAL и допустим Т1, используя прерывания от Т2, " это почти продумал... просто у меня Т1 работает по 3 -20 тактов + пропуски на программу ... долго ломал голову как собрать все эти отрывки ) но додумался. вопрос тогда: методом последовательного приближения. - это как? там ведь ещё надо погрешности посмотреть у меня не точно совпадут например 10000 тактов Т1 с 1 тактом Т2 а будет колебатся 10000 + - 50 например. а мк нагружать сильно не надо он на регистрации собий важных!) посдкажите имено практически может формулами а лучше блолками програм на ICC AVR )))
  8. Здавствуйте! кто может конкретно подсказать как автоматически подстараивать внутрений RC генератор с максимальной точностью на основе кварца 32768гц на таймере Т2. Я так понимаю точности часового кварца с головой если учитывать что в худшем случае уход составляет 1сек в день (а в дне 3600х24 секунд). Подскажите как это сделать самым практическим способом. Всем заранее :a14: а я весь вот такой :wassat: даже соображаю туго... работы много ночи не сплю, так что не сильно не бить :smile3009: и хорошо пояснять
  9. SysRq ТЫ СУПЕР!))) огоромное спасибо! smac спасибо за хорошие советы!! Есть непонятнка одна. в PowerDown потреблял 100мкА при PORTX=0, я выставил DDRX=0 стало 60мкА, что же ещё надо выключить что бы стало 8 мкА? Вобще есть какие то правила что надо обязательно выключать перед уходом в слип для минимального потребления?
  10. ну вот как бы Вы должны меня тогда понять больше всех так как вот цены в грн! : микросхемы DS32C35-33# MAX/DALL SO20 108.72 микросхемы DS32C35-33IND# MAX/DALL SO20 116.42 да и не нужен мне RTC на месяцы. 2-3 дня максимум 7 дней нужно что бы время шло. обычный режим ночь без света. а утром правильное время с компа в ком порт и по новой! + будут варианты исполнения в которых оябзателен будет акумулятор на 2.5Ач! и ионистор уже не надо будет. тоесть микропотребление не сама цель. цель в нормальной реализации RTC без доплаты! Всем спасибо за помощь! Остался последний вопрос!- Как имено грамотно сделать RTC немного не понятно. начну с главного вопроса. если исптользовать таймер 2 асинхронно то получается нужно использовать внутрений RC генератор. а его стабильность в зависимости температуры не известна. а ведь довольно важно что бы скорость обмена с СОМ портом (UART) была в районе +/- 0.5 %. Так же не смог найти калибровочный байт (нужен для частоты 8Мг). Подскажите плиз как и где его прочитать!? В книгах написано что он должен прочитатся программатором при програмировании и т.д. у меня програматор STK 200\300самодельный а программа ICC_AVR V7. 000. я вощем не смог разобратся.
  11. #pragma interrupt_handler uart0_rx_isr:12 unsigned char uart0_rx_isr(void) { //uart has received a character in UDR ch=UDR; UCSRB=0;C2_OFF;C3_OFF;WDTCR=0x1F;WDTCR=0x00;MCUCR = 0x80;PORTD=0x08;PORTB=0;PORTC=0;asm("sleep");asm("nop"); if(sb==1){TCCR0=0;sb=0;if(ch>=128){CLI();ST=1; UDR=0;UCSRB=0x08;/*only peredacha*/ch-=128;UDR=('#');d();UDR=('1');d();UDR=ch;UCSRB=0;EP_W(0,ch);lcd_t(ch);while(1);}else{ch=0;sl_count=0;TCC R1B=0x05;}} if(ch==42){sb=1;UDR=0;UCSRB=0x90;pause_timer1();/*only priyom*/timer=0;TCCR0 = 0x05;} } сори! вот так как выше всё. почему unsigned char uart0_rx_isr(void) ну функция так определяется в с++ а вобще фиг его знает... я форму брал из генератора кода. сейчас вынесу вход в спящий режим в main.
  12. добавлю что в книге написано что контроллер сам выходит из спящего режима по любому прерываю что доступно в данном режиме. или может напутали и всё таки нужна какая то команда? и вот кусок программы который уводит в режим слип при принятии символа с UART: unsigned char uart0_rx_isr(void) { //uart has received a character in UDR ch=UDR; /*вот эта строчка уводит в слип*/ UCSRB=0;WDTCR=0x1F;WDTCR=0x00;/*запрещаю WDT что бы не ресетился*/MCUCR = 0xa0;PORTD=0x08;PORTB=0;PORTC=0;asm("sleep");asm("nop"); /*это продолжение порграммы вам её читать не обязательно*/ if(sb==1){TCCR0=0;sb=0;if(ch>=128){CLI();ST=1; UDR=0;UCSRB=0x08;/*only peredacha*/ch-=128;UDR=('#');d();UDR=('1');d();UDR=ch;UCSRB=0;EP_W(0,ch);lcd_t(ch);while(1);}else{ch=0;sl_count=0;TCC R1B=0x05;}} if(ch==42){sb=1;UDR=0;UCSRB=0x90;pause_timer1();/*only priyom*/timer=0;TCCR0 = 0x05;} }
  13. в режиме сна считает только время...(когда питания нет) когда появляется питания (но комп не включен) начинается запись событий в память, у событий должно быть время. можно конечно записывать только разницу времени но смысла это не меняет, в спящем режиме должен вестись отчёт времени(или разница времени), тактирование от внутренего генератора, вобщем вопросы как были так и остаются открытыми...
  14. я уже писал что там потребление будет в пределах 30-40мкА, и как раз всё будет проще если я не буду ставить внешний RTC) получится диод ионистор на 1ф и контролер.. все дела... питание пропало он ушол в спячку , потом проснулся при появлении питания и работает дальше сохранив в себе время.
  15. доработал програму для ухода схемы в спящий режиим. всё не плохо потребление 7,5мкА но не могу пробудить внешним перыванием по INT1. в рабочем режиме всё происходит как и задано программно в прерывании, загораются диоды проверочные и т.д. а только уходит в режим PowerDown не пробуждается и не делает прерывание. из Idle так же не выходит. Хотя сделал всё GICR = 0x80;(разрешение прерывания INT1) +подтягивающий резистор PORTD=0x08;(для +5В на INT1) + MCUCR = 0xa0(спящий режим powerdown); + asm("sleep"); вот само прерывание #pragma interrupt_handler int1_isr:3 void int1_isr(void) { //external interupt on INT1 WDTCR=0x1F; WDTCR=0x0F; LED_ON; PORTB = 0x10; PORTC = 0xfe; PORTD = 0x0f; LED_ON; } если бы порты конфигуриролись как написано то всё бы на плате светилось после замыкания INT на землю). в рабочем режиме замыкаю INT1 на землю всё светится. после ухода в спячку пробуждатся по этому прерыванию не хочет = на плате темнота)) вот подсказанная мне информация из даташита на М8 "Low level interrupts on INT0/INT1 are detected asynchronously. This implies that these interrupts can be used for waking the part also from sleep modes other than Idle mode." Подскажите что это может быть!???
  16. и сколько DS1307 стоит, и есть ли у неё преимущества перед8583 ?
  17. 1Ф стоит 10грн 0.33Ф стоит 8.5грн M8/88-10грн pcf8583-10грн. потребление pcf8583 в даташите написано10-30мка. откуда вы взяли цифру 0,25мкА?
  18. не флудите))))) тут серьёзная тема. RTC на М8/88! насчёт потребления... PCF8583 у меня на 1Фараде работала 2 недели точно. её потребление 30мкА. думаю у М88 c часовым кварцем для Т2 будет потреблять не больше.
  19. Спасибо!!! уже засел проверять на практике! просто наши переводчики так переводят что я умный человек не могу понять что они перевели) надо оригиналы смотреть ты прав) флудер!) :07:
  20. "есть же часовой кварц - можно периодически калибровать частоту RC генератора по прерыванию часового таймера" вобще идея интересна только как подсчитывать количество тактов встроеного RC генератора с частотой 8Мг.... ведь программа на С++, это на асемблере можно считать сколько должна тактов пройти программа... "32768 - это 128*256, то есть нужно просто включить предделитель 128 для таймера 2." там вобще вопрос в другом я пределитель вобще поставил бы 1024 (я там писал) "в основном цикле - проверять напряжение внешн.питания, если появилось - запустить всю периферию и работать в нормальном режиме, если нет - засыпать дальше." - тоесть я так понял по напряжению на ножках никак нельзя прерывания получить? и ещё... как запустить основной цикл? ведь всё спит... в справочнике написано что из PowerDown возможно выйти 1- WDT 2- BOD 3-I2C 4- внешнее прерываение если оно обнаруживается аснхронно(! или Вы предлагаете WDT перегружать каждые 2сек раз M8 и смотреть питание и снова в sleep уходить? Вобщем вопросы открыты, весем гуру срочно сюда!) только есть просьба поподробнее описывать как всё реализовывается! я ведь и сам понимаю что в основном цикле можно всё делать, только вот как в него войти!)
  21. я тоже так хотел, но получается новые платы, + запаивать кварц и микруху RTC из них я нашол только PCF8583 (2$) а она хоть и доступная и не дорогая но большая сама по себе) хоть и смд, я собираюсь начать производство этих устройств и если это рельно сделать RTC на МК толучше на МК сделать, это будет дёшево и сердито. меньше пайки дыма и бегони за деталями. конечно в крайнем случае переделаю платы и буду ствить просто PCF8583. но это очень не практично считаю. Жду реальной помощи по вопросам!
  22. Здравствуейте. У меня свой проэкт в котором M8 работает как регистратор внешних событий, а внешний комп записывает приходящие на СОМ порт дные и подписывает их время. И есть задание сделать так что бы если комп отключен то что бы логи записывались в память а потом скидывались на сом порт при подключении компа. память я выбрал 24LC256 microchip (5ms). Так как ночью могут отключать вобще рубильник света а включать утром то устройство должно включится в рабочий режим с правильным временем. Как имено грамотно сделать RTC немного не понятно. начну с главного вопроса. если исптользовать таймер 2 асинхронно то получается нужно использовать внутрений RC генератор. а его стабильность в зависимости температуры не известна. а ведь довольно важно что бы скорость обмена с СОМ портом (UART) была в районе +/- 0.5 %. Так же не смог найти калибровочный байт (нужен для частоты 8Мг). Подскажите плиз как и где его прочитать!? В книгах написано что он должен прочитатся программатором при програмировании и т.д. у меня програматор STK 200\300самодельный а программа ICC_AVR V7. 000. я вощем не смог разобратся. Второе это как именно организовать отсчёт времени , ведь Т2 переполняется после 255. (при частоте кварца 32768 и коэфициенте деления 1024 частота работы таймера будет 32). тоесть переполнение произойдёт после 8 секундн. а контролер находится в слип режиме, тоесть надо получается через 8 сек пробудить его и добавить +8 секунд в переменну памяти и снова отправить в слип или я что то не понимаю? (я так понял что пока мега спит я же не могу ничего записывать программно так как тактирование алу и памяти отключены) Ещё есть впрос как пробуждать контролер если появилось питание? Физически могу организовать изменение напряжения на практичски любой из ножек (0-нет питания, 4В - есть питание, или наоборот). но я посмотрел асинхнно внешние прерывания в мегах 8/88 определятся не могут. тоже нужен совет! Всем кто реально может подсказать, особено по аське(7277332), очень прошу помочь! если есть кошелёк webmoney могу символически капнуть за помощь. Заранее всем огромное СПАСИБО!!!
×
×
  • Создать...