Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 53

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

ΠžΡ‚Π²Π΅Ρ‚: ΠšΠΎΠ΄ 11 Π² разряды OM7:OL7.

4. ΠšΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ Π² ΠΊΠ°ΠΊΠΈΠ΅ разряды рСгистра TCTL4 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записан, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ события ΠΊΠ°Π½Π°Π»Π° 1 Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π·Π° Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ уровня сигнала Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΊΠ°Π½Π°Π»Π° 1?

ΠžΡ‚Π²Π΅Ρ‚: ΠšΠΎΠ΄ 11 Π² разряды EDG1B:EDG1A.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ

Познакомившись с основными подсистСмами модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΌΡ‹ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² примСнСния. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подсистСму Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° для измСрСния частоты ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° слСдования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ логичСского сигнала. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² МК ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого подсистСму Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сравнСния ΠΈ подсистСму прСрывания МК.

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ частоты ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° логичСского сигнала

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° для измСрСния частоты ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° слСдования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот ΠΊΠ°Π½Π°Π» Π² Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… установок ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹, Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° события ΠΊΠ°Π½Π°Π»Π° ΠΈ подсистСмы прСрывания. ПолноС описаниС рСгистров ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π²Ρ‹ΡˆΠ΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ ΠΈ рСгистры управлСния:

β€’ Π‘ΠΈΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TEN (рСгистр управлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TSCR);

β€’ Π‘ΠΈΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ прСрывания ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ TOI ΠΈ Π±ΠΈΡ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° коэффициСнта дСлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ дСлитСля частоты Π½Π° Π²Ρ…ΠΎΠ΄Π΅ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ PR2:PR1:PR0 (рСгистр масок Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TMSK2);

β€’ Π‘ΠΈΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°Π½Π°Π»Π° IOSn (рСгистр Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΊΠ°Π½Π°Π»ΠΎΠ² Π·Π°Ρ…Π²Π°Ρ‚Π°/сравнСния TIOS). Если Π±ΠΈΡ‚ IOSn установлСн Π² 1, Ρ‚ΠΎ ΠΊΠ°Π½Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ сравнСния. Если Π±ΠΈΡ‚ IOSn Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ ΠΊΠ°Π½Π°Π» настроСн Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°;

β€’ Π‘ΠΈΡ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° события ΠΊΠ°Π½Π°Π»Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° EDGnB:EDGnA (рСгистры управлСния Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ TCTL3 ΠΈ TCTL4);

β€’ Π‘ΠΈΡ‚ события Π² ΠΊΠ°Π½Π°Π»Π΅ CnF (рСгистр Ρ„Π»Π°Π³ΠΎΠ² Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TFLG1);

β€’ Π‘ΠΈΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ прСрывания ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Π² ΠΊΠ°Π½Π°Π»Π΅ CnI (рСгистр масок Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TMSK1);

β€’ Π Π΅Π³ΠΈΡΡ‚Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° TCn, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски записываСтся ΠΊΠΎΠ΄ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ события Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ исслСдуСмого сигнала Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° пСрСполнСния счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹. Π’ΠΎΠ³Π΄Π°, для измСрСния частоты ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° слСдования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² логичСского сигнала, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий:

1. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°;

2. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ частоту тактирования счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹, для Ρ‡Π΅Π³ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ коэффициСнт дСлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ дСлитСля частоты Π½Π° Π²Ρ…ΠΎΠ΄Π΅ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹;

3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠΎ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°;

4. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² памяти МК ΠΊΠΎΠ΄ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ появлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°;

5. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² памяти МК ΠΊΠΎΠ΄ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ появлСния Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°;

6. Π’Π·ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ², которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρƒ исслСдуСмого сигнала. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π²ΡˆΠΈΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ дСлСния, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ частоту исслСдуСмого сигнала. На рис. 4.43 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π±Π»ΠΎΠΊ схСма рассмотрСнного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ (timer1.c), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ опроса Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° события Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° C2F. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Β» установлСнный Π² 1 Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ события ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΎΠ½Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ рСгистр Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ rising_1, сбрасываСт Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ установки Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° события. Когда Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ события установится Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ рСгистр Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ rising_2. Π Π°Π·Π½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… зафиксированных Π² рСгистрС Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ частоту исслСдуСмого ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠ³ΠΎ сигнала.

Рис. 4.43. Π‘Π»ΠΎΠΊ схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° измСрСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈ частоты исслСдуСмого сигнала


ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π² стилС написания исходного тСкста прСдставлСнного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° для измСрСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈ частоты ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠ³ΠΎ сигнала:

β€’ ΠžΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«mainΒ» содСрТит Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ‚Ρ€Π΅Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΌΡ‹ΡΠ»ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ;

β€’ Π˜ΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Π² соотвСтствии с ΠΈΡ… смысловым Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ;

β€’ ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ достаточно ΠΏΠΎΠ»Π½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ посрСдством ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΠ΅Ρ€Π΅Π΄ записью ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

/*-------------------------------------------------------------------*/

/* filename: timer1.c                                                */

/* МAIN PROGRAМ: Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° измСряСт ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΈ частоту ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠ³ΠΎ */

/* сигнала. Π‘ΠΈΠ³Π½Π°Π» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Π²Ρ…ΠΎΠ΄ 2 подсистСмы Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (IC2).  */

/*-------------------------------------------------------------------*/

/*ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹*/

#include <912b32.h>

#include <stdio.h>

#include <math.h>


/*ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ*/

void timer_init(void);

void measure_wave(void);

void period_freq(void);


/*Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅*/

unsigned long int rising_1;

unsigned long int rising_2;


void main(void) {

 timer_init(); /*инициализация Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°*/

 measure_wave(); /*ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π²ΡƒΡ… Ρ„Ρ€ΠΎΠ½Ρ‚ΠΎΠ² сигнала*/

 period_freq(); /*вычислСниС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈ частоты*/

}


/*----------------------------------------------------------------------*/

/* Ѐункция timer_init ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°           */

/* Канал 2 Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° настраиваСтся Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌΡƒ */

/* Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ сигнала                                                       */

/* Частота тактирования счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ устанавливаСтся 2 ΠœΠ“Ρ†.  */

/*----------------------------------------------------------------------*/

void timer_init(void) {

 TMSK1 = 0x00; /*Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ прСрывания ΠΎΡ‚ ΠΊΠ°Π½Π°Π»ΠΎΠ² Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°*/

 TMSK2 = 0x02; /*Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ коэффициСнт дСлСния 4*/

 TIOS = 0Ρ…00; /*ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°Π½Π°Π» 2 Π² Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°*/

 TSCR = 0Ρ…80; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°*/

 TCTL4 = 0Ρ…10; /*Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° событий ΠΏΠΎ*/

               /*ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ*/

 TFLG1 = 0xFF; /*ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ событий*/

}


/*-------------------------------------------------------------------*/

/* Ѐункция measure_wave Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°      */

/* Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° исслСдуСмого сигнала. ЗначСния Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ с */

/* использованиСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…                              */

/*-------------------------------------------------------------------*/

void measure_wave(void) {

 while((TFLG1 & 0Ρ…04) == 0) {

  /*ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π°*/

  ;

 }

 rising_1 = TCNT; /*Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹*/

                  /*Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ rising_1*/

 TFLG1 = 0Ρ…04; /*сброс Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° события ΠΊΠ°Π½Π°Π»Π° 2*/

 while((TFLG1 & 0Ρ…04) == 0) {

  /*ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π°*/

  ;

 }

 rising_2 = TCNT; /*Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ счСтчика Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹*/

                  /*Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ rising_2*/

 TFLG1 = 0Ρ…04; /*сброс Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° события ΠΊΠ°Π½Π°Π»Π° 2*/

}


/*------------------------------------------------------------------------*/

/* Ѐункция period_freq вычисляСт ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΈ частоту исслСдуСмого ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠ³ΠΎ*/

/* сигнала ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ значСния Π½Π° экранС                     */

/*------------------------------------------------------------------------*/

void period_freq(void) {

 unsigned long int new_rising;

 unsigned long int new_falling;

 float frequency;

 float period;

 unsigned int int_period;

 unsigned int int_freq, freq_tenths;

 if(rising_2 < rising_1) /*вычислСниС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°*/

 {

  new_rising = rising_2 + 0xFFFF;

  period = ((float)new_rising (float)rising_l)*0.0000005;

 } else {

  period = ((float)rising_2 (float)rising_l)*0.0000005;

 }

 frequency = 1.0/period; /*вычислСниС частоты*/

 int_freq = (int)(frequency/l000.0);

 freq_tenths = (int)((frequency –(float) int_freq*1000)/100.0);

 /*Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²*/

 printf("Frequency = %d.%d kHz \n\n" int_freq, freq_tenths);

 int_period = (int) (1000000*period);

 printf("Period = %d ΞΌs\n\n", int_period);

 printf{"Period = %f ms\n\n", (period*1000))};

}

/*------------------------------------------------------------------------*/

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для сигналов, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ пСрСполнСния счСтчика Π²Π½Π΅ΡˆΠ½ΠΈΡ… событий. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… Π·Π°Π΄Π°Π½ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹ ΠΌΡ‹ попросим Вас ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ…Β» сигналов Ρ‚Π°ΠΊΠΆΠ΅ стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. КакиС измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ слСдуСт внСсти? Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, сколько Ρ€Π°Π· пСрСполнился счСтчик Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сосСдними событиями Π² ΠΊΠ°Π½Π°Π»Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°. Для этого слСдуСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ счСтчик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° счСтчик пСрСполнится. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ счСтчика Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ установлСнному Ρ„Π»Π°Π³Ρƒ TOF. Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сбросом, ΠΈΠ»ΠΈ ΠΏΠΎ Ρ„Π»Π°Π³Ρƒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ прСрывания. Π’ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСрывания Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ счСтчик. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ зафиксирован, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ вычислСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ: