Mikrodenetleyici devreleri
Mikrodenetleyici devreleri
Jump to TINA Main Page & General Information
TINA bir çok destekliyor (PIC, AVR, Arduino, 8051, HCS, STM, KOL, TI-Tiva, TI-Sitara, Infineon-XMC) mikrodenetleyiciler; sürekli olarak yeni MCU'lar eklenmektedir. İşlemcide çalışan programı görebilir, değiştirebilir ve hata ayıklayabilir ve tabii ki kendi kodunuzu oluşturabilirsiniz.
TINA'da mikrodenetleyiciler için program sunmanın iki yolu vardır. Standart bir derleyici tarafından yapılan ikili kod ve hata ayıklama dosyasını (örneğin, PIC'ler için MPLAB) kullanabilirsiniz veya TINA'da yerleşik bir hata ayıklayıcı kullanarak hata ayıklamak için derleme kodunuzu yükleyebilirsiniz.
TINA'da mikrodenetleyiciler sadece yalnız değil, analog, dijital, HDL veya diğer modellerle birlikte simüle edilebilir.
MCU kodunu çalıştırma ve düzenleme
PIC Flasher.TSC devresini ExampleMicrocontrollersPic klasöründen yükleyin.
16F73 PIC mikrodenetleyicisini kullanarak aşağıdaki şema 16F73 PIC mikrodenetleyici ile görünecektir:
Bu devre birer birer ileri sayılır. Basın
Ekranın birer birer öne doğru çıkması gerekir.
ASM kodunu görmek için MCU’ya çift tıklayın. (Hızlı Başlangıç kılavuzundaki daha fazla ayrıntıya bakın).
TINA, kaynak kodunu doğrudan TINA'da düzenleyebileceğiniz ve değiştirebileceğiniz harika bir özelliğe sahiptir.
Kodda aşağıdaki değişikliği yapalım:
Talimatı (yukarıda seçilen) 25 satırında değiştirin (satır numarasını kod düzenleyici penceresinin sağ alt köşesinde görebilirsiniz):
addlw sitesinden 01H
02H eklemek için
Tuşuna basarak değiştirilen kodu TINA’ya kaydedin.
Basarsanız
Değiştirilen kodun TINA .TSC dosyasına otomatik olarak kaydedileceğini unutmayın.
Hata ayıklayıcısını kullanma
Daha etkileşimli başka bir uygulama görelim.
PIC16F84interrupt_rb0.TSC TINA örneğini ExampleMicrocontrollersPic klasöründen yükleyin.
Basın
Bununla birlikte, SW-HL1 anahtarına tıklarsanız, anahtar Düşük'ten Yüksek'e her değiştiğinde ekran 1 ile öne çıkar.
PIC'in kesme işlem kabiliyeti anahtar değişikliklerini tespit etmemize olanak sağlayacaktır.
Şimdi TINA'nın etkileşimli ASM hata ayıklayıcısını kullanarak işlemi daha ayrıntılı olarak görelim.
Hata ayıklayıcıyı etkinleştirmek için Analiz menüsünde Seçenek'i seçin. Ardından, Analiz Seçenekleri iletişim kutusunda aşağıda gösterildiği gibi "MCU Kod hata ayıklayıcısını etkinleştir onay kutusunu" ayarlayın.
OK düğmesine basın, MCU hata ayıklayıcı görünecektir:
Programın çalıştırılmasını adım adım izleyelim.
Yaklaşık 14 tıklamadan sonra, programın sonsuz bir döngüde olduğu görünen PT1: etiketine geliriz.
PT1: INCF SICAKLIK, F GOTO PT1
NT_SERV: label.
INT_SERV: INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORT
COUNTER değerini arttırın ve PORT A'ya kopyalayın; çıktı 1 olacaktır. Bundan sonra program, PT1'teki “sonsuz döngüye” geri dönecektir.
Hata ayıklayıcısındaki kodu düzenleme
Şimdi hata ayıklayıcının kullanımını göstermek için programda küçük bir değişiklik yapalım. INCF COUNTER, F deyimini bu şekilde Kopyala ve Yapıştır kullanarak çoğaltın:
INT_SERV: INCF COUNTER, F INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORTA
Şimdi tuşuna bastığınızda
Evet tuşuna ve ardından
Devreyi, hata ayıklayıcının sürekli Çalışan modunda, tuşuna basarak da kontrol edebilirsiniz.
Hata ayıklayıcının hızlı çalışmasına rağmen, “sonsuz döngüyü” ve ardından anahtarı değiştirdiğinizde Interrupt server kısmına (INT_SERV:) atlamayı görebilirsiniz.
Bir kesme noktası yapma
Adım adım modunu kullanarak, programda belirli bir noktaya ulaşmak genellikle imkansızdır. Bin adım atmak için yeterince sabırlı olsanız bile, programın akışı istediğiniz yere adım atmanıza izin vermeyebilir.
Belirli bir satırda durmak için bir "kesme noktası" ayarlayarak hedef ifadesini işaretleyebilirsiniz.
Programı kullanarak hata ayıklayıcının sürekli modunda
Bunu göstermek için, INT_SERV: etiketinden sonra interrupt sunucumuzdaki increment ifadesine tıklayın ve
Şimdi basın
Bir kesme noktası belirlemiş olsanız bile, kod yürütme durmaz çünkü asla kesme noktasına ulaşmaz. Bununla birlikte, anahtarı Düşük'ten Yüksek'e değiştirdiğinizde, program işaretli ifadede duracaktır:
INT_SERV: INCF COUNTER, F
Şimdi her iki adıma da devam edebilirsiniz.