Bir lіchilnik impulsіv z elektronik yılı nasıl oluşturulur. Elektrikli darbeler. Paralel transfer olan kişiler

lichnik dürtüsel- sekans dijital ek, bu bilgi kelimesinin seçimini ve rahunka'nın üzerinde mikro çalışmasını sağlayacak, bu da lichnik'teki sayının değerini 1 değiştirecektir. Lichnik'in ana parametresi rahunka modülüdür. Tse azami sayı bir lichnik tarafından korunabilen tek sinyaller. Lichnik'ler ST ile gösterilir (İngiliz sayacında).

Dürtü lichniks sınıflandırmak

● rahunku modülünün arkasında:
. çift-onlar;
. çift;
. yeterli bir modül sonrası rahunka ile;
. zі zminnym modülü rahunka;
. yol tarifi için:
. subsumuuyuchi;
. görmek;
. tersine çevrilebilir;
● iç bağlantıları kalıplama yöntemine göre:
. sonraki transferler ile;
. paralel transferler ile;
. kombine transferler ile;
. Kiltsev.

Lichilnik dürtüselliği özetlemek

Toplanan lichnik'e bakın (Şek. 3.67, fakat). Bazı JK flip-flop'larında böyle bir uyandırma arayan, sanki "1" mantıksal sinyalinin her iki girişinde de mevcudiyet için, senkronizasyon girişlerinde negatif voltaj düşüşleri göründüğü anda karıştırılır.

Timchasovі diyagramları, scho іlustruyut work lichilnik, şek. 3.67, B. K aracılığıyla rahunka modülü (dürtülerin rahunka katsayısı) atanır. Sol tetiğin kampı, iki sayının en genç sırasına, sağdaki ise kıdemli sıraya verilir. Çıkış istasyonunda, tüm tetikleyicilerde mantıksal sıfırlar ayarlanır. Cilt tetiği, yalnızca negatif bir voltaj düşüşü varsa kendi durumunu değiştirir.

Bu sırayla, tüm lichnik, giriş darbelerinin toplamını gerçekleştirir. Saatlik diyagramlardan, cilt saldırgan darbesinin frekansının daha düşük, önde daha düşük olduğu görülebilir, bu nedenle cilt tetikleyici, giriş sinyalinin frekansını ikiye böler, bu da frekans aralıklarını kazanır.

Daha sonraki bir transferle görebileceğiniz üç basamaklı lichilnik

Son transferler ile üç sıralı lichilnik'e bir göz atalım, robotun şeması ve saat diyagramları ve şekil 2'deki rehberliği. 3.68.
(xtypo_quote) Sayaç için, T tetikleyici modunda kullanılabilen üç JK tetikleyici mevcuttur (rastgele girişle tetikleyici).(/xtypo_quote)

Mantık 1 J i girişine uygulanır Cilt tetikleyicisinden önce, senkronizasyon girişine beslenen darbenin arka cephesinin gelmesi, cilt tetikleyicisi ileri çerçeveyi değiştirir. Tüm tetikleyicilerin çıkışlarındaki ilk tetik sinyalleri 1'e eşittir. Son iki sayı 111'i veya onuncu sayı 7'yi kaydetme nedeni. İlk darbe F'nin bitiminden sonra ilk tetikleme değişir: Q 1 sinyali eşit olur 0 ve Q 1 - 1.

Kampınızı çevirdiğinizde diğer tetikleyiciler değişmez. Başka bir senkronizasyon darbesinin tamamlanmasından sonra, ilk tetik tekrar kampını değiştirerek kamp 1'e geçer (Q x = 0). Başka bir tetiğin dönüşünü değiştirmekle ilgileneceğim (başka bir tetik, başka bir senkronizasyon darbesinin bitiminden sonra dönüşü gecikmeli olarak değiştirecektir, böylece geçiş için bir saat gerekir, bu nedenle ilk tetiği kullanma zamanı gelmiştir) .

İlk dürtü F'den sonra, lichnik kampı 11O'yu kurtarır. Değişimden uzak, sonuncusundan önce aynı şekilde bir lichnik olacağım. 000 olduğumda, lichnik tekrar 111 numaralı istasyona dönüşecek.

Kendi kendini kaydeden sonraki bir aktarımla üç basamaklı lichilnik.

Üç basamaklı kendi kendini kaydeden lichnik'in daha sonraki bir aktarımla görünür olduğu açıktır (Şekil 3.69).

Döner tabla 000'in tüm tetikleyicilerin çıkışlarına geçişinden sonra, ABO'nun mantık öğesi aracılığıyla J i girişlerine beslenen bir mantıksal 0 sinyali üretilir. İlk tetikleyiciye kadar, ardından tüm tetikleyici T-'ye girer. tetik modu ve darbelere yanıt vermeyi durdurur F.

Son transferlerden üç haneli ters çevrilebilir lichilnik

Son transferlerden üç sıralı ters lichnik'e bir göz atalım (Şekil 3.70).

İzleme modunda, giriş sinyalleri T st girişine gönderilmelidir. Bu gerçekleştiğinde T s girişine lojik 0 sinyali uygulanır.Bütün tetikleyiciler istasyon 111'de olsun. Ters girişteki ikinci tetik bir mantıksal 1 sinyaline neden olursa, T girişine başka bir darbe geldiğinde, başka bir tetikleyicinin girişinde mantıksal bir 1 belirir, ardından diğer tetik durumunu değiştirir (ilk tetik de değişecektir) başka bir dürtü geldiğinde durumu). Uzakta, aynı şekilde değişeceğim. Katlama modunda, lichnik 4 basamaklı subsum lichnik'e benzer şekilde çalışır. Bu sinyal T s girişine uygulandığında. T girişine mantıksal bir 0 uygulanır.
Örnek olarak, paralel transfer serisi 155 (TTL) ile tersinir sürücülerin (Şekil 3.71) mikro devrelerine bakalım:
● ІЕ6 - onda iki geri dönüşümlü lichnik;
● ІЕ7 — çift ters çevrilebilir lichnik.

Doğrudan ona rahunka atanır, tıpkı bir visnovok (5 veya 4) gibi impulslar verilir. Giriş 1, 9, 10, 15 bilgi amaçlıdır ve giriş 11 ileri kayıt için seçilir. 5 giriş sayısı lichinik (sıfırlama) ile ileri giriş yapmanızı sağlar. Kimler için bilgi girişi için ek veri ibraz etmek ve daha sonra 11 girişi için düşük seviyeli giriş için bir dürtü göndermek gerekir ve katip numarayı hatırlayacaktır. Giriş 14 - yüksek voltaj uygulandığında Pro kurulumunun girişi. Lichnikleri daha fazla sayıda safta teşvik etmek için, vicorists doğrudan tekrarlayan aktarım(Visnovki 12 ve 13 vіdpovіdno). Görünüm 12'den itibaren, sinyal hücum kaskadının doğrudan rachunka girişine ve 13'ten ters kademeli girişe gönderilmelidir.

Mikrodenetleyici üzerindeki okuyucu, 4 adet yedi segmentli ışık göstergesi ile popüler MK PIC16F628A'da tekrarlanması ve seçilmesi kolaydır. İki kontrol girişi vardır: +1 ve -1 ve ayrıca Sıfırlama düğmesi. Yeni lichnik planının yönetimi, giriş düğmesine uzun süre basılmaz basılmaz, hesabın girmesine izin verilene kadar devam edemeyecek şekilde uygulanmaktadır. Azami sayı nadіyshli dürtüsel ben vіdpovіdno pokazynnya ALS - 9999 Ters sipariş 0000 değerine kadar. Lichnik ekranı, güç kaynağı açıldığında kontrolörün hafızasına kaydedilir, böylece elektrik kesintileri durumunda veriler kaydedilir.

Şematik diyagram PIC16F628A mikrodenetleyicide ters çevrilebilir döner tabla:

Skidannya lichilnik'in ekranı ve bir kerede bir hafıza olacağım 0 zdіysnyuєtsya düğmesi "Sıfırla". Mikrodenetleyici üzerindeki ters çevirme anahtarı ilk kez açıldığında, ALS göstergesinin iletilmeyen bilgileri gösterebileceğini unutmayın. Ale, düğmelere ilk saldırı ile bilgiler normalleşiyor. De ve yak programı kazanabilirsiniz - belirli ihtiyaçlar için para yatırmak için, örneğin, bir tasfiye işçisi için mağazaya veya ofise veya sarma yönünün bir göstergesi olarak kurun. Mikrodenetleyici üzerindeki bu lichnik'in birilerine yaramazlık getireceğini düşünüyorum.

Eğer birinin elinde gerekli bir ALS göstergesi yoksa, ancak başka biri varsa (veya 4 başka gösterge koyarsa), diğerini yeniden oluşturmaya ve aygıt yazılımını yeniden oluşturmaya yardım etmeye hazırım. Forumdaki arşivlerde, sıcak anotlu ve sıcak katotlu göstergeler için bir diyagram, bir pano ve ürün yazılımı bulunmaktadır. El işi pano aşağıdaki küçük resimde gösterilmiştir:

Є ayrıca Yeni sürüm PIC16F628A mikrodenetleyicideki lichnik için üretici yazılımı. devre ve lichnik ödemesi miktar dışında bırakıldığında, ancak düğmelerin tanınması değiştiğinde: düğme 1 - giriş darbeleri (örneğin, küçük indükleme anahtarı), düğme 2, giriş darbelerinin çıkışında denetleyiciyi açar , göstergede sol nokta yandığında, düğme 3 - düğme nokta. Düğme 4 - kızak. Bu varyantta, mikrodenetleyici için lichnik şeması, sarma makinesine kolayca yerleştirilebilir. Dönüşleri sarmadan veya sarmadan hemen önce arkadaki "+" veya "-" düğmesine basın. 5V voltaj ve 50mA strum ile stabilize bir dzherel şeklinde bir lichilnik yaşamak. Tüketim için pillerle yaşayabilirsiniz. Gövde, sizin benzerliğinize ve kabiliyetinize göre düşecektir. Basınç şeması - Samopalkin

Elektrik darbe jeneratörleri

Lichnik, elektrik darbelerinin sayısını sağlayan dijital bir cihaz olarak adlandırılır. Lichilnik'in pererakhunka katsayısı, beklenen minimum darbe sayısından daha yüksektir. lichnik'in girişi lihilnik çıkışında durduktan sonra kendilerini tekrar etmeye başlarlar. Lichnik'e subsumuovuychim denir, sanki dermal char dürtüsünden sonra, lichnik'in çıkışındaki dijital kod bir artırılır. Lichnik'te, görebileceğiniz gibi, lichnik'in girişindeki bir deri darbesinden sonra, çıkıştaki dijital kod bire dönüşür. Sumuvannya modundan uyanıklık moduna geçmenin mümkün olduğu Lichnik'lere geri dönüşümlü denir.

Lіchilniki, ileriye dönük bir kurulumla olabilir. Bu tür lichniklerde, ön kurulumun girişlerinden gelen bilgiler lichnik'in çıkışına iletilir.ön kurulumun özel girişinde sinyal. Lichnikler yapılarına göre ardışık, paralel ve paralel dizilere bölünmüştür. Lansy'deki son çift lichnik, art arda lichinnyh tetikleyicilerini içeriyordu. Paralel olarak lіchilnі lіchlіnі dürtüler girişte bir saat servis edilir lichilnik'in tüm safları. Paralel lichnikler, sonuncularla eşleştirilmiş daha fazla shvidkodiyaya sahip olabilir. Paralel-poslіdovnі lichniki mayut yüksek shvidkodіyu bu büyük anlam. nya coefіtsієnta pererakhunku.

Elektrik puls üreteçleri TTL ve CMOS serilerinde kullanılmaktadır. Bir TTL lichnik'in poposu olarak, K155ІE5 mikro devresine bakıyoruz. K155ІE5 lambasının işlevsel şeması biraz 1.51, a, yak'a işaret ediyor zihinsel bilgiönemli diyagramlarda, küçük bir 1.51, b. K155ІE5'in aslında iki lichnik'i olabilir: iki taşma katsayısı ile (giriş C0 ve çıkış Q 0) ve taşma katsayısı vіsim (giriş C1 ve çıkış Q 1, Q 2, Q 3) ile. Q 0 çıkışını C1 girişine bağlamak ve C0 girişine darbe uygulamak için on altı perepahunka katsayısına sahip bir lichnik girmek kolaydır. Timchasov'un böyle bir lichnik'in çalışmasına ilişkin diyagramı küçük bir 1.52'ye işaret ediyor.

Küçük 1.53'te, lichnik K155ІE5'in değişim katsayısını değiştiren bir bağlantı şeması tanıtıldı. Lichnik Q0, Q1, Q2, Q3'ü bırakın katsayılarınıza bağlı olarak 1, 2, 4, 8. Çıkın. S 1 S 2 Küçük olan 1.53 b'de, on pererahunka katsayısını ve küçük olanda 153 c - on ikiyi çıkarmak için bir bağlantı şeması gösterilmiştir. Bununla birlikte, 1.53, a - c küçüklerine yönelik şemalarda, sıfır kampta lihilnikler kurmak mümkündür.

Şekil 1.54, a b'de, likörler, likör tesisatının girişinin sıfır kampa aktarıldığı likör kayması ve sim katsayıları ile gösterilmiştir. analiz robotik şemalar, Şekil 1.53 - 1.54, verilen katsayıyı kaldırmak için taşmanın girişlerden değiştirilmesi gerektiğini gösterir. mantıksal öğe Lichilnik'ten çıktıktan sonra, nebhіdniy kofіtsієnt pererakhunka vermek için özetleyemezsiniz.

Tablo 1.3'te, deri solucanı dürtüsü verildikten sonra pererakhunka on katsayısı ile lichnik çıkışlarına bir istasyon kuruldu, ayrıca lichnik sıfır kampının önüne yerleştirildi.

CMOS serisinin yaptıklarına bir göz atalım. Küçük 1.55'te, kod çözücülü onuncu kaydedici olan K561ІE8 mikro devresinin zihinsel tanımı tanıtıldı. Sıfır değirmen R'ye kurulumun mikro devre maє girişi, pozitif polarite darbeleri beslemesi için giriş CP ve giriş negatif kutuplu tıbbi dürtülerin temini CN.

Lichnik'in yankılanması, CP girişindeki pozitif polarite darbelerindeki düşüşlerden kaynaklanırken, mantıksal birim CN girişi için sorumludur. Lichnik'in peremikannya'sı, CN girişindeki negatif polarite darbelerindeki düşüşlere ve CP girişindeki mantıksal sıfıra bağlı olacaktır. Lichnik'in on çıkışından birinde mantıklı bir yalnızlık var. Girişe R mantıksal birimi gönderilirken lichnik'in sıfıra ayarlanması dikkate alınır. Lichnik'i sıfır durumuna ayarlarken, "0" çıkışında mantıksal bir tane ayarlanır, ancak diğer çıkışlarda - mantıksal bir sıfır. K561ІE8 mikro devreleri, öndeki CN girişi ile ön mikro devrenin aktarılmasından sonra son aktarımla pil deşarj cihazına takılabilir. Küçük 1.56'da, K561ІE10 mikro devreleri üzerinde bir torba deşarj lichnik diyagramı gösterildi.

Promislovistu, elektronik yıllığı için lichnikler yayınladı. Bir de onların yaptıklarına bakalım. Küçük olan 1.57'de, K176ІE3 mikro devresinin zihinsel tanımı indüklendi ve küçük olan 1.58 - K176ІE4 mikro devresinde. Mikro devrelerde, mikro devre 1.59 tarafından indüklenen gösterge segmentlerinin standart değeri için mikro devrelerin görünümü gösterilir. Çip devreleri pererakhunka katsayısı tek tek test edilir. K176IE3 mikro devresinin aşırı ısınma katsayısı altıdan yüksek ve K176IE4 mikro devresinin aşırı ısınma katsayısı ondan daha yüksek. R girişine mantıksal birlik sinyali uygulayarak sıfır lihilnikov zdiisnyuєtsya'ya ayarlama. Lichnik'in geçiş tetikleyicisi, C girişindeki pozitif darbelerin azalmasıyla tetiklenir. Bu çıkıştaki voltaj düşüşü, istasyon 9'dan istasyon 0'a geçişin geçtiği anda oluşur.Yıl okumasını 24 yılda sıfırlamak gerekir.

S girişine mantıksal bir sıfır sinyali uygulandığında, lichnik girişine gönderilen darbelerin sayısını yansıttığı için lichnik'in çıkışlarındaki mantıksal olanlar bu segmentlerde olacaktır. Girişe mantıksal bir S birimi uygulandığında, çıkış sinyallerinin polaritesi değiştirilir. Çıkış sinyallerinin polaritesini değiştirme imkanı, dijital göstergeleri bağlamak için devreyi basitçe değiştirmenizi sağlar.

Küçük 1.60'ta K176ІE4 mikro devresinin çıkışlarına bir ışıldayan gösterge bağlamak için bir devre indüklenir. Göstergeyi K176IE3 mikro devresinin çıkışlarına bağlamak benzer olacaktır.

Işık göstergelerini 176IE4 mikro devresinin çıkışlarına bağlama şemaları Şekil 1.61'de gösterilmiştir ve bu 1.61 b. S girişinde, parlayan katotlu göstergeler için mantıksal bir sıfır ve parlayan anotlu göstergeler için mantıksal bir sıfır ayarlanır.

K176ІE5, K176IE12, K176IE13, K176IE17, K176IE18, K176ID2, K176ID3 mikro devrelerinin tanımı ve elektronik yıldaki kayıtları şurada bulunabilir. Mikro devreler K176IE12, K176IE13, K176IE17, K176IE18 3 ila 15 St gerilime izin verir.

MİKROKONTROLÖR ÜZERİNDEKİ CHILTER

Teknoloji ve otomasyonun zengin ek binalarında hala mekanik ışıklar kuruludur. Kokusu vvazhayut vіdvіduvаchіv, konveєrі üzerindeki ürünler, ince verstas sarmada dart bobinleri. Böyle bir mekanik ön camı tek seferde bilmek kolay değildir ve yedek parça temini ile tamir etmek imkansızdır. Mekanik anahtarı PIC16F628A mikrodenetleyicinin elektronik panosu ile değiştirmenizi öneririm.

Elektronik lichnik, K176, K561 serisinin mikro devrelerinde yoga yapıyormuş gibi katlanabilir. özellikle gerektiğinde ters hesap. Ale, müşteriyi yalnızca bir mikro devre kullanmaya teşvik edebilirsiniz - kendi deponuzda sahip olabileceğiniz evrensel mikro denetleyici PIC16F628A çevresel müştemilatlar ve bina virishuvati geniş renk görevler.

Eksen, geçenlerde bir adamdan bir sürü deşarj için bir lіchilnik dürtüsellik yaratmasını istedim. Işık göstergelerine baktım çünkü pis koku çok yer kaplıyor ve çok fazla enerji tasarrufu sağlıyor. Bunun için LCD devresini uyguladıktan sonra. Mikrodenetleyicinin sayacı, 15 karaktere kadar giriş darbelerini dondurabilir. Noktalı iki ilk deşarj. EEPROM muzaffer değildi, bu yüzden lichnik kampını hatırlamaya gerek yoktu. Aynı zamanda dönüş rahunka - tersin işlevidir. Bir mikrodenetleyicide basit bir lichilnik'in ana diyagramı:

İki kişilik Lіchilnik zіbrany diğer panolar Folyo sclotextolіtu. Koltuk küçük olana yöneliktir.

Kartlardan birinde, diğerinde - 4 düğme, bir kontrolör ve lichnik'in diğer detayları ve yaşam bloğu için bir LCD göstergesi kuruludur. Bu lichnik planını ödemekle ilgileniyor format, mikrodenetleyici ürün yazılımının yanı sıra forumda bulunabilir. Basın malzemesi Samopalkin.

Genellikle, bir mikrodenetleyici eklentisi ile çalışırken, "antropomorfik" bir saat eklemek gerekir - bir saniye ve bir ışık ne sıklıkta parlar, çift tıklama saati için maksimum aralık çok incedir. , hvilini ve navit yıl (iyi hakkında söylemekten korkuyorum ...).
Aynı zamanda, mikrodenetleyicilerde, anne sağda mikrosaniyelerle - dürtü periyotları, anti-beyin temizleme vb.
Ve ayrıca uzun süre kesintisiz çalışmak ve navit dobu - havacılık ekipmanı, otomotiv, Sverdlovin uzantıları gibi ekler (birkaç gün kesintisiz çalışma hakkında bazen bulunabilir). Bu durumlarda, zamanlayıcıları ve 8 bitlik değişiklikleri yeniden sıralamak kabul edilemez.
Her şeyi tek bir renkte birleştirmek istiyorum evrensel çözüm- anneler vimiryuvannya saatini mikrosaniye hassasiyetine zasіb, böylece gün sayısı tekrarlanmaz.
Neden ben n i? Uzun süre acı çektim ve 8-bit AVR mikrodenetleyiciler için bir çözüm doğurdum. Kimin için 8 bitlik bir zamanlayıcı ve 4 baytlık bir değişiklik ayarladım. PIC'leri ve AT89'u aynı anda kullanmıyorum ve diğer gömülü platformlarla arkadaş değilim. Vtіm, yakshcho okuyucuları yardımcı olacak, büyüyeceğim ve onlar için.
Perevagi - bir tekrar kodu (zaten üzerinde çalışıyorum); işte basitlik (işin müşteri kısmı için herhangi bir değişiklik yoktur); kodun istemci kısmı zihinsel olarak platformdan bağımsızdır; diriltmek için - bir toplama işlemi (ale, dürüst olmak gerekirse, 4 baytlık bir değer için); HAYIR yeni bir bina inşa edeceğim- Gerçek saat zamanlayıcı.
Nedolіk birini tanıyorum - böyle kısa ve düzenli bir zamanlayıcı işgal etti.
Makale bizim için Pochatkivtsy'nin önünde bir ağustosböceği olacak - burada Amerika'yı görmüyorum.

teori

Ayrıca, 12MHz kuvarslı Atmega16A'ya dayalı ek siparişimi de verebilirim. Yoga timer-lichilnik 0'ı alın. Sekiz bitlik zamanlayıcı - dikiş yapmamız gerekiyor. Niye ya? Lütfen:
  1. kuvars için 12 MHz alın ve ikame katsayısını 8 alın - 1500 KHz frekansını alıyoruz;
  2. CTC modunu alın (vites küçülürken kapatma) ve geçersiz kılmayı 150'den vites küçültmeye ayarlayın - geçersiz kılma frekansını 10 KHz'e alıyoruz;
  3. aynı zamanda, kademeli olarak değişir (0,1 milisaniyelik cilt artışı);
  4. işaretsiz bir 32-bit değerse, yaklaşık olarak sonra tersine çevrilmeyecektir.
    • 429496729,6 milisaniye;
    • 42949.7 saniye;
    • 7158.3 kilin;
    • 119.3 yıl;
    • 4.97 borç.
Başka bir deyişle, bu şekilde, (mayzhe) 5 dB'de 0.1 milisaniyeye kadar doğrulukta bir zamanlayıcı oluşturuyorum (burada gerekli, bu doğru, gerçek kuvarsın sizi öldürebileceğini söylemek güvenli - tsedali hakkında). Ek olarak, penceredeki zamanlayıcı 0 değerini analiz etmek için - cildi 2/3 mikrosaniye artırır - 0,67 mikrosaniyeye kadar hassasiyette bir zamanlayıcı elde etmek mümkündür.
Bitirmek? Meni - gözler için. 0.1 milisaniye için Vykoristovuyuchi lichilnik, projelerimde var:
  • Işığın üçlüğüne ve ışığın aralarındaki duraklamalara saygı duyuyorum;
  • vrakhovy zaman aşımları UART, USB'den pid çalışma saati;
  • Tüm durumları teste tabi tutuyorum - uzay saati kombinasyonlarını katlamak;
  • ADC ve diğer sensörler için saat ve saat aralığının görünür şekilde ayarlanması;
  • Bilgisayarımı bir saat kontrol ediyorum (ekleyeceğim) robotlar ve belirli bir aralıktan bilgi iletiyorum;
  • tuşlara basıldığında mikrosaniyelere kadar geliştirilmiş sıçrama önleme kontrolü, uzun hatlarda darbelerin analizi.
ONE ATmega16 CONTROLLER'a girmek çok kolay! Ve neden Assembler değil, çapraz platform Ci! І zhovnіshny lichnik gerçek saat!
Fena değil, değil mi?

AVR için Uydurma

AVR'de her şey nasıl çalışıyor?
Nasampered, "DeciMilliSecond" dediğim gibi değişikliği aramaya başlıyoruz:
// main.h typedef imzasız uzun dword; // işaretsiz 32 bit tamsayı harici uçucu dword dmsec; // 0.1msn // main.c geçici dword'de dmsec;
@sigara içilmez ile ilgili doğru bir hatırlatma olarak, derleyicinin optimize etmeye çalışmaması için geçici olacak şekilde değiştirilebilir.
İşlev değişikliğinin başlatılması üzerinde çalışıyorum:
dmsn=0;
Ardından, zamanlayıcı robot modunu 0'a ayarladım:
//. zamanlayıcı 0 - 0.1 msn Zamanlayıcı0_Modu (TIMER_Mode_CTC | TIMER0_Clk_8); Timer0_Cntr(149); Timer_Int(Timer0_Cmp);
MCU_init.h'ye gittiğimde, gerekli olan her şeyi çürüteceğim:
// mcu_init.h #include //. TIMSK #define Timer0_Cmp(1<< 1) // совпадение таймера 0 // . TCCRn #define WGM1 (1 << 3) #define CS1 (1 << 1) // . источник сигнала для таймера 0 #define TIMER0_Clk_8 CS1 // предделитель 8 // . режим работы таймера #define TIMER_Mode_CTC WGM1 // CTC (сброс при совпадении) // . настройка таймера #define Timer_Int(Mode) TIMSK = (Mode) #define Timer0_Mode(Mode) TCCR0 = (Mode) #define Timer0_Cntr(Cntr) OCR0 = (Cntr)
Öyleyse, mümkünse, yeniden dirilmene izin veriyorum:
#asm("SEI")
Dirilişi anlatmak için kayıp. Bu daha basit, öndeki daha düşük bıyık:
#Dahil etmek kesinti Timer0_Compare (void) (++dmsec;)
İşte bu, açıklamaların zamanlayıcısı, nalashtovaniya ve lansmanları!

PIC için uydurma

PIComani'nin bana söylediği eksen:

Zirvelerde, ek Timer2 modülünden sonra tekrarlamak kolaydır. Yeninin kendisi, büyük için devrilme işlevine benzer.

PR2 = 75 - zamanlayıcı sıfırlandığında ve yeniden başlatma oluşturduğunda değer
T2CON.T2CKPS = 2 - ön ölçekleyici 1:16
T2CON.T2OUTPS = 0 - sonradan ölçekleyici yok
T2CON.TMR2ON = açık - açık zamanlayıcı

IPR1.TMR2IP = 1 - yüksek öncelikli geçersiz kılma
PIR1.TMR2IF = kapalı - bayrak sıfırlama
PIE1.TMR2IE = açık --TMR2 ve PR2 güçlendirmesinden sonra yeniden denemeyi etkinleştir
INTCON.GIE = ​​​​açık -- yeniden deneme işlemini etkinleştir

Gördüğünüz gibi burada ön ölçekleyici daha büyük, PR2 bundan daha küçük.
Ayar verileri, USB Tam Hız için standart frekans olan 48 MHz sistem frekansında (Fosc/4 ile zamanlayıcıda) 10 kHz frekansında bir kesinti oluşturacaktır.

Vikoristannya

Bu zamanlayıcının istemcisinin kodu çapraz platform olmalıdır (bu nedenle AVR'de zamanlayıcı değerini 0'a itmeyin).
USB üzerinden eksen parçası kod değişimi:
#include "main.h" // Burada dmsec değiştir, next_USB_timeout #include "FT245R.h" // Burada USB modülü ile çalışmanın fonksiyonları #include "..\Protocol.h" // Burada, mikrodenetleyici değişimi için protokol - bilgisayar // * * // ** USB paket analizi // ** void AnalyzeUSB (void) ( #define RECEIVE_BYTE(B) while (!FT245R_IsToRead)\ ( if (dmsec > end_analyze) return; )\ B = FT245_ReadByte (); #define RECEIVE_WORD(W) // 2 bayt için benzer #define RECEIVE_DWORD(W) // 4 bayt için benzer dword end_analyze, d;NewAnalyze: if (!FT245R_IsToRead) // paket yok mu? // zaman aşımı global değişim için RECEIVE_BYTE (b) // paket başlık anahtarı (b) ( SetFullState: RECEIVE_DWORD (d); // word is_initialized = 1 oku; // ; break; ) // NewAnalyze'e geçiş (paket); #undef RECEIVE_BYTE // isteğe bağlı #define #undef RECEIVE_WORD
RECEIVE_BYTE, RECEIVE_WORD, RECEIVE_DWORD makro işlevleri, belirli bir değişim aşaması için sabit saatlerle okuma prosedürleri uygular. Sonuç olarak, başka bir tarafta asılı kalırsa, mikrodenetleyici hazırda bekletme moduna girmez. Saygı gösterin - WatchDog'un buna ihtiyacı yok! І tüm zavdyaki değişiklikleri/sabit max_USB_timeout, böylece zaman aşımı 0,1 milisaniyeye kadar bir doğrulukla ayarlanır.
Değiştirilen next_USB_timeout'un "yayındaki sessizlik" analizi bu şekilde uygulanır. Bu, mikrodenetleyicinin 1) bilgisayarın bir şey bildiğini algılamasına, 2) sanki sinyal veriyormuş gibi (benim ruh halimde, “pardon” ışığı kaydedilmiştir) tanımasını sağlar. MaxSilence_PC_DEV sabiti/değişimi, "sessizlik"in anlamını en geniş aralıklarda değiştirmenize olanak tanır - milisaniyenin bir bölümünden birkaç deb'e kadar.
Benzer şekilde, diğer tüm anlar gerçekleşir.
Mikrosaniye sayısını değiştirmeniz gerekiyorsa, eşleşen bir işlev vardır:
#define GetUSec(A,B) ( #asm ("CLI"); A = dmsec; B = TCNT0; #asm ("SEI"); ) // ** // ** 2/3usec // ** dword Fark (dword prev_dmsec, byte prev_usec) ( dword cur_dmsec; byte cur_usec; ​​​​dword dif; // . GetUSec mevcut saat kontrolü (cur_dmsec, cur_usec); // Farkı hesapla fark = cur_dms<<= 8; if (cur_usec < prev_usec) dif += 255 + (dword) cur_usec - prev_usec; else dif += cur_usec - prev_usec; return dif; }
Fonksiyonlar ileri saat - dmsec ve zamanlayıcı 0 ileri değeri iletilir.
GetUSec makrosunun arkasında, kopyalama sırasında dmsec değeri kaydedilmedi. Geçerli saati kopyalıyorum.
Saatlik farkı, yeniden sıralama düzeltilerek 2/3 mikrosaniye biçimine verdik.
Bu saat başı dönüş.
Ve sıçrama önleme ve diğer girişleri kontrol etmek için harika bir bükülme verdik. Geçerli saat bir saate ayarlandığında yeniden başlatmayı unutmayın - veya daha doğrusu GetUSec makrosunu kullanın.

Sonuçlar

Tüm zamanlayıcı bana en iyi çözüm gibi geldi. Sanırım şaraba ihtiyacın olacak. Ve bu tür projelerde yoga yapıyorum:
  • Eskrim durumları panosu. Bu, üç kontrolörlü bir pvmetre için bir pidlog için ağır bir ödemedir - merkezi olan ATmega128 ve iki ek kontrol (sağ ve sol taraf) olarak ATmega64. Üç kontrolör ve bileşenleri arasında galvanik bağlantı yoktur - iyonistörler temelinde yaşayan, optokuplör bağlantıları aracılığıyla iletişim. Merkezi kontrolör, bazı iyonistör gruplarını şarj eder ve bu arada diğer iyonistörlerin kenarlarını rahatsız ederek yaşar. Burada, ara bağlantıyı en aza indirmek için bunlarla ilgili her şeyi değiştirmek için zengin bir algoritma oluşturmak mümkün oldu. Zokrema, kutsanmış robot için 8 röle var - burada 3.3ms için zamanlayıcılar kullanıyorlar (bir saatlik röle aktivasyonunu garanti ediyor). Pekala, sorun değil, 10 röleyi kontrol eden suçlu taraflar da beş yüz çoklayıcıdan. Tüm durum, tam olarak ayarlanmış saat özellikleriyle çalışır (1 ms'ye kadar doğruluk, maksimum zamanlama - 6 saniye). Üzgünüm, USB, UART için banal zaman aşımı.
  • derinlik sensörü. Burada başka bir göreve yemin ederim (robotta proje). Durumu "1 cm aşağı" ve "1 cm aşağı" ayarlayan iki iletken (bagatometre) vardır. Kişisel olmayanı yönlendirme yöntemleri. Deri vakalarında, dürtü kombinasyonları. Bu zamanlayıcının yardımı için, sabit bir dürtünün değeri olan bir çubuk atadım. Bilgisayardan, karışıklık için izin verilen maksimum saat ayarlanır (burada 10 mikrosaniye başlar), sert lehim temizleme, darbenin minimum/maksimum süresi. Peki ve є yükleme modu - sensör mantıklı bir analizör haline gelir. Tse, hattın çalışmasını ayarlamanıza ve katsayıları ayarlamanıza olanak tanır. Mola süresini yenileyeceğim, svetlodiody.
  • Analog Sinyal Sensörü. Banal 8 kanallı ADC. Burada gerekli duraklamaları göstermek için bir vicorist zamanlayıcı kullanıyorum.
Diğer platformlardaki modern habrakoristuvach'lar, ilk zamanlayıcının başlatma kodunu ve yenisine erişim kurallarını değiştirebilir - buraya ekleyeceğim. Diğer platformlar için başka saatler eklemek gerekebilir. Ancak her durumda, zamanlayıcının kendisi için birkaç mikrosaniye ve değişim zamanlayıcısı için 100 mikrosaniyenin katı sınırlarında olabilir. Bo, göründüğü gibi, bazen bir milisaniye gelmiyor. İşletim sistemleri (OS)