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

Помогите Разобраться С Таймером На Atiny2313


Рекомендуемые сообщения

Сделал простые часы на микроконтроллере Atiny2313, а они не правильно идут. Спешат приблизительно за 1 минуту на 1 секунду. Не могу разобраться или Таймер/Счетчик настроил не правильно или в коде какая то ошибка. Фьюзы ни какие не трогал. Помогите разобраться.

Микроконтроллер: Atiny2313

Кварц: 8МГц.

Делител частоты: 1024

Переполнение происходит: 7813 раз/сек. в hex: 1E85

#include <tiny2313.h>
#include <delay.h>

unsigned char seconds, ten_seconds, minutes, ten_minutes, hours, ten_hours, b;


// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)    
{ 

seconds++;

 TCNT1H=0x00;
 TCNT1L=0x00;



   if (seconds >= 10)
   {
   seconds = 0;
   ten_seconds++;
   };

     if (ten_seconds >= 6)
     {
     ten_seconds = 0;
     minutes++;
     };

       if (minutes >= 10)
       {
       minutes = 0;
       ten_minutes++;
       };

         if (ten_minutes >= 6)
         {
         ten_minutes = 0;
         hours++;
         };

           if (hours >= 10)
           {
           hours = 0;
           ten_hours++;
           };

             if (ten_hours >= 2 && hours >= 4)
             {
             ten_hours = 0;
             hours=0;
             };



}



void main(void)
{
// Crystal Oscillator division factor: 1

CLKPR=0x80;
CLKPR=0x00;


// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In 
// State2=P State1=P State0=P 
PORTA=0x07;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTB=0x00;
DDRB=0xFF;

// Port D initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0x7F;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x1E;
OCR1AL=0x85;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// Global enable interrupts
#asm("sei")

while (1)
     {

     //Вывод на симисегментники

     }
}

Изменено пользователем Sandor
Ссылка на комментарий
Поделиться на другие сайты

 Фьюзы по умолчанию стоят так, что микроконтроллер работает от внутреннего генератора БЕЗ КВАРЦА!

Проверить можно выпаяв кварц.

Стабильность без кварца низкая, вот ошибка и набегает.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Очередное изобретение велосипеда :))) использование микросхемы PCF8583 совместно с контроллером позволит тебе заиметь сразу часы с секундами и сотыми долями, календарь и 1 аппаратный будильник + память на 128байт. Если её подпереть литиевой батарейкой, часы не будут сбиваться при отключении питания.

Контроллер только должен будет считать значение и показать его на индикаторе. Даже если не считывать значение, микросхему можно использовать в качестве источника секундных импульсов.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Очередное изобретение велосипеда :)))

Ну учиться человек. Зачем критиковать.

>>Не могу разобраться или Таймер/Счетчик настроил не правильно или в коде какая то ошибка. Фьюзы ни какие не трогал. Помогите разобраться.

Ради посмотреть на самый популярный компилятор для AVR на данном сайте(CodeVision) загрузил в него Ваш код и запустил симулятор. Погрешность значительно меньше чем Вы пишете. Поэтому смотрите, как тактируете контроллер. Mazzi думаю прав.

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

за материальный, либо моральный ущерб причиненный данным сообщением напрямую или косвенно.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Делал вот так.

При использовании внешнего кварцевого резонатора 4 мГц меняем следующие поля:Поле Было Действие Стало

CKDIV8 "0" сбрасываем "1"

SUT1 "1" устанавливаем "0"

SUT0 "0" сбрасываем "1"

CKSEL3 "0" сбрасываем "1"

CKSEL2 "0" сбрасываем "1"

CKSEL1 "1" устанавливаем "0"

"minutes" и "hours" на семисигментниках стали показывать "1" (получилось так 01:01) секунды меняются, минуты не добавляются, и перестали работать кнопки.

Нашел еще один забавный сайтик http://www.engbedded.com/fusecalc/ поставил фьюзы как там было сделано. Теперь микроконтроллер не видится программатором. Завтра пойду покупать новый

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А поставил ты их где? Просто особенность может быть, лог.1 для контроллера это незапрограммированный фьюз, многие программы учитывают сей факт и инвертируют галочку. Отсюда очень часто возникает путаница ставить галку или очистить в программаторе для активации фьюза... Чтобы этого избежать если не уверен точно - надо смотреть в документации какие биты что значат и записать в программаторе сразу слово конфигурации. Контроллер может и рабочий, но переключен на тактирование от внешнего сигнала, и если его подать то будет все нормально.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Очередное изобретение велосипеда smile.gif)) использование микросхемы PCF8583 совместно с контроллером позволит...........

Предложение, Алексей, совершенно не в кассу. Часы реального времени в отдельный чип есть смысл выделять в энергоемких системах, где затраты на коммутацию питания превысят цену этого чипа.

Для мелких и дешевых контроллеров проще и совершенно равноценно по функциональности применение часового кварца и слипа.

Это так, в качестве оффтопа...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Купил новый микроконтроллер, скажите где какие поставить фьюзы, что-бы он работал от внешнего кварца. Я ставил в прошлый раз галочки в CVAVR напротив SUT1, CKSEL1 микроконтроллер работал не правильно.

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Если программатор имеет возможность чтения FUSE-бит, то для начала считайте исходное состояние их. По состоянию бита SPIEN определите логическое соглашение, принятое программатором. И, только потом, выполнить осознанные действия по установке бит в нужное состояние. Для примера приведен рисунок из DS в принятом логическом соглашении.

Изменено пользователем akl
Ссылка на комментарий
Поделиться на другие сайты

Купил новый микроконтроллер, скажите где какие поставить фьюзы, что-бы он работал от внешнего кварца. Я ставил в прошлый раз галочки в CVAVR напротив SUT1, CKSEL1 микроконтроллер работал не правильно.

вот Вам калькулятор. Я на нем теперь смотрю. Так что 100% рабочий:D

fusecalc.zip

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

за материальный, либо моральный ущерб причиненный данным сообщением напрямую или косвенно.

Ссылка на комментарий
Поделиться на другие сайты

Програматор у меня STK200/300 И пользуюсь я Code Vision AVR. Судя по картинке я поставил галочки напротив CKOUT, SUT1, CKSEL2. Микроконтроллер опять на читаеется и не стирается и не пишется.

Ссылка на комментарий
Поделиться на другие сайты

 У одних программаторов установленная галочка обозначает 1, а у других 0.

Посмотри как у меня. И сравни с тем, что у тебя.

post-78645-1273227824,37_thumb.png

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Походу врубил низкую частоту.Или тактирование хрен знат от чего.Если есть ещё чип,посмотри какие у него фузы по умолчание,на твоём прогере.Или через AVR Studio залезть и посмотреть от чего тактируется.Но это если он свяжется и покажет фузы.

У меня была подобная проблема.Через студию не связывался,потом через код вижн связался ничего не программил,кроме фузов.Вот так я и восстановил их.Даже не помню на какой частоте.Программатор аналог STK500.

Ссылка на комментарий
Поделиться на другие сайты

Sandor, ещё если хочешь чтоб твои часы ходили более точно,

то используй "правильные" для таких устройств кварцы,

например ближайший к 8МГц будет номинал 8.192МГц или 7.3728МГц,

соответственно нужно будет изменить коэффициент пересчёта таймера...

Электроника это целый океан творчества...

Ссылка на комментарий
Поделиться на другие сайты

Програмкой UniProF и програматором "Громова" микроконтроллер определился сбросил фьюзы и микроконтроллер заработал. Попробовал такое проделать с первым микроконтроллером, но ни чего не получилось.

Поставил фьюзы CKDIV8, SUT0, CKSEL0 микроконтроллер заработал от внешнего кварца, но время на часах показывает 01:01 не могу разобраться что за беда

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
Sandor, ещё если хочешь чтоб твои часы ходили более точно,

то используй "правильные" для таких устройств кварцы,

например ближайший к 8МГц будет номинал 8.192МГц или 7.3728МГц,

соответственно нужно будет изменить коэффициент пересчёта таймера...

А каким образом подсчитана частота кварца

Ссылка на комментарий
Поделиться на другие сайты

Таким, чтобы деление этой частоты на целое число степени двойки дало удобный для часов результат - а именно частоту в 1000гц для подсчета милисекунд, и последующего деления до секунд.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Каким образом были получены эти цифры 8.192МГц или 7.3728МГц, не подбирались же они путем перебора

Поэкспериментировав с числами 32768, 8192000, 7372800 получил:

a2cdf179a86f8737a25e464a9d527b32.png

Я так понял, что-бы часы шли правильно нужен кварц у которого получается такая прогрессия 1, 2, 4, 8, 16, 32, 64, 128....

Ссылка на комментарий
Поделиться на другие сайты

Часы будут идти правильно при любой частоте кварца. Просто некоторые частоты легче делить АППАРАТНО, т.е. на степень двойки, используя не программный счетчик а например предделитель таймера!

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

еще может быть проблема в том, что обработка прерывания длится дольше чем время между ними, вот и получается билибурда :)

чем шире кругозор, тем тупее угол обозрения

Ссылка на комментарий
Поделиться на другие сайты

Решил спросить здесь. Подскажите пожалуйста, программирую ATtiny 2313, в описании написано, бит конфиг. SPIEN. Программирую Понипрогом, но в нём нет такого бита. Может он называется ещё по другому? такой контроллер шью впервые.

Ссылка на комментарий
Поделиться на другие сайты

Ты что-то путаешь, есть AT90S2313, а есть ATTiny13 более современный его аналог. У старого контроллера могло и не быть такого бита!

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

у меня нового типа, указано установить BOTLEVEL1 и SPIEN. А в понипроге нету SPIEN

теперь и не читает, что записал до этого. Наверное переключил на кварц, а кварца в проге нету. Обратно никак?

Сделал вот это - Прошивка для микроконтроллера ATtiny2313.

Схема: Цифровой измеритель ёмкости.

http://radioded.ru/content/view/77/49/ , а с прошивкой тупик, как шитиь не знаю пока.

Изменено пользователем cam
Ссылка на комментарий
Поделиться на другие сайты

товарищи, может кто умеет компилировать, программа на сайте http://radioded.ru/projects/c_meter/cmcsrc.zip. Прошивка не должна отличаться для старого и нового типа контроллера? Буду признателен.

Изменено пользователем cam
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...