Отговори на тема  [ 25 мнения ]  Отиди на страница Предишна  1, 2
Zilog - Z8 Encore! F083A Series 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2593
Местоположение: Велико Търново / София
Мнение Re: Zilog - Z8 Encore! F083A Series
Metty, навсякъде в техниката се брои от 0. Това не е чушки или домати.
След като си нулирал брояча на прекъсвания трябва да натрупаш 20 прекъсвания. Когато брояча стане 20, ще имаш 20 интервала. Т.е. първото прекъсване с номер 0 не е интервал а старт. Всъщност то при теб не се влиза изобщо в прекъсване когато стартираш.
Твоят таймер доколкото разбирам не може да се накара да брои и да генерира прекъсване до различна стойност от 65 535. Това значи, че ти на всяко прекъсване трябва да го зареждаш с предварителна стойност. На теб ти трябват 39 062.5 такта. Първо закръгляш на 39 062 примерно. След това 65 535 - 39 062 = 26 473 ти е стойността която трябва да зареждаш в брояча на таймера при всяко негово стартиране. т.е. във всяко прекъсване. Т.е. не брои от 0 до 39 062, а от 26 473 до 65 535 (което е същото, но таймера може само така да работи)

Трябва осцилоскоп или анализатор. Може и със светодиод, ама ще има да налучкваш повече. Може и телефонна слушалка като тази на снимката. С нея ще чуеш над 10 kHz. , което може да те ориентира в някои ситуации.
А да пишеш на хартия програмата, без процесора забрави. Нищо няма да научиш.
засега е това :)


Прикачени файлове:
KTD-1.jpg
KTD-1.jpg [ 41.09 KiB | Прегледано 2612 пъти ]

_________________
https://github.com/slav4ocom/
Нед Юни 10, 2018 3:31 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Благодаря ви отново !

Принципно, идеята за логически анализатор е добра, но засега нямам.

Второ, таймера (явно го може) го настроих да брои от 0 до 39063 (закръглено) и пуснах следния код, който е абсолютно същия като предишния, но брои от 0 до 20, нали ни трябват 20 прекъсвания:

void interrupt Timer0_ISR(void) _At TIMER0
{
static u08 Delay_Counter_5s = 0;

if (Delay_Counter_5s == 20)
{
PAOUT ^= 1<<POUT0_VALUE; /* Превключване на нивото на извод PA0 */

Delay_Counter_5s=0;
}

else
{
Delay_Counter_5s++;
}

T0CTL1 |= 1<<TEN_BIT; /* Стартиране на таймера отново (One-shot mode) */
}

=>

Таймера почва да брои от 0 до 39063:

=> Според Славчо, това не е интервал, а СТАРТ на прекъсването - 0=20 (false) - брояча се увеличава

=> Таймера почва да брои от 0 до 39063 => ТОВА Е ПРЕКЪСВАНЕ (ИНТЕРВАЛ) НОМЕР 1 - 1=20 (false) - брояча се увеличава

=> Таймера почва да брои от 0 до 39063 => прекъсване - 2=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 3=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 4=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 5=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 6=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 7=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 8=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 9=20 (false) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 10=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 11=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 12=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 13=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 14=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 15=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 16=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 17=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 18=20 (true) - брояча се увеличава
=> Таймера почва да брои от 0 до 39063 => прекъсване - 19=20 (true) - брояча се увеличава

=> Таймера почва да брои от 0 до 39063 => ТОВА Е ПРЕКЪСВАНЕ (ИНТЕРВАЛ) НОМЕР 20 - 20=20 (true) - СВЕТВА ДИОДА И НУЛИРАМЕ БРОЯЧА

Просто искам да знам, дали по горната логика е вярна, би следвало да е ! :rolleyes:

BTW, имам го процесора, закачил съм и диод и засичам с хронометър 5s, нз защо си останал с впечатление, че пиша на хартия и т.н. :)))


Вто Юни 12, 2018 12:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10622
Местоположение: София
Мнение Re: Zilog - Z8 Encore! F083A Series
Ползвай тага за код. Така това което публикуваш ще е доста по-четимо.


Вто Юни 12, 2018 1:42 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Здравейте,

Взех си Saleae логически анализатор и с него получавам следните стойности (за 5s): W (Width) = 5.015s, f (Frequency) = 99.69mHz, T (Period) = 10.03s. А, без софтуерния брояч стойностите са: W = 0.2508s, f = 1.994Hz, T = 0.5015s.

Системна честота - 20MHz => Честота на таймера - 20MHz / 128 (prescaler) = 156250Hz => Периода на таймера - 1 / 156250 = 0.0000064s или 6.4us => Таймера се увеличава с 1 на всеки 6.4us.

За да получа 250ms, брояча трябва да изброи: 250 000 / 6,4 = 39 062.5 пъти (периода). Това ми е коефициента на таймера, демек ще брои от 0 до 39 063 или 39 062. Тук, както и да го закръгля (39 063 или 39 062), все получавам горните стойности с лог. анализатора.

Просто се чудя, дали така трябва да бъде (със закръгляне ) или аз нещо бъркам сметките и трябва да получа абсолютно точни стойности.

Това е софтуерния брояч, който е едно към едно към този по-горе, но брои от 0 до 19, защото това са 20 стойности, а нали аз това искам 20 прекъсвания. Би следвало, да е верен :)

Код:

void interrupt Timer0_ISR(void) _At TIMER0
{
   static u08 Delay_Counter_5s = 0;
   
   if (Delay_Counter_5s == 19)
   {
      PAOUT ^= 1<<0; /* Превключване на нивото на извод PA0 */
      
      Delay_Counter_5s=0;
   }

   else
   {
      Delay_Counter_5s++;
   }
}



Благодаря!


Съб Юни 16, 2018 10:58 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2593
Местоположение: Велико Търново / София
Мнение Re: Zilog - Z8 Encore! F083A Series
Ами ако избереш 200ms и 25 прекъсвания, няма да има закръгляне.

_________________
https://github.com/slav4ocom/


Съб Юни 16, 2018 12:03 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Е да, получавам 31 250, но с лог. анализатора, отново получавам същите стойности: W (Width) = 5.015s, f (Frequency) = 99.69mHz, T (Period) = 10.03s. Без софтуерния брояч стойностите са: W = 0.2005s, f = 2.493Hz, T = 0.4011s.

Явно, все пак не може да докараме абсолютно точни стойности. Е, след закръгляне си идват точно. 8O


Съб Юни 16, 2018 12:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2593
Местоположение: Велико Търново / София
Мнение Re: Zilog - Z8 Encore! F083A Series
Ами първо осцилатора зависи дали е кварцов резонатор или някакъв вътрешен RC - няма да е толкова точен.
Майче трябва да извадиш 1 от коефициента.

_________________
https://github.com/slav4ocom/


Съб Юни 16, 2018 1:02 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Извинявай, какво имаш впредвид да извадя 1 от коеф. и защо? Коеф. на таймера ли визираш?


Съб Юни 16, 2018 2:54 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Според спецификацията, този е default-ния и оттам идва разликата за която питам :)

Internal precision RC oscillator

• 119 kHz or 20 MHz
• ± 4% accuracy when trimmed
• No external components required
• Unlock and write Oscillator Control Register (OSCCTL) to enable and select oscillator at either 20 MHz or 119 kHz


Съб Юни 16, 2018 4:17 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 22, 2014 6:23 pm
Мнения: 48
Мнение Re: Zilog - Z8 Encore! F083A Series
Мисля, че темата може да бъде затворена : )

Благодаря на всички !


Вто Юли 10, 2018 1:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 25 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни