Neu in der PIC-Programmierung
Versuchen, einen PIC16F627A TIMER 1 mit MPLAB X IDE zu simulieren , wobei RB7/T1OSI inkrementiert und RB4 durch TMR1 ISR umschaltet.
#include <stdio.h>
#include <xc.h
#pragma config WDTE = 0;
//timer1
//period 1 ms or every 100 T1CKI
//external from T1CKI rising edge (1 sec Period) T1OSCEN = 0; //
//PIN RB4
void interrupt Pulse_ISR (void)
{
PORTBbits.RB4 = !PORTBbits.RB4;
PIR1bits.TMR1IF = 0;
TMR1L = 0x96;
TMR1H = 0xFF;
}
void Init (void)
{
//Global Interrupt
//Peripheral Interrupt
//TMR1IE
//1:8 prescalar
//t = 1us*8*N N = 100
//TMR1 = (2^16+1) - 100 = 65436 FF96
TRISB4 = 0;//RB4 is output
TRISB6 = 1;//RB6 and RB7 are input
TRISB7 = 1;
INTCONbits.GIE = 1;
INTCONbits.PEIE = 1;
PIE1bits.TMR1IE = 1;
T1CONbits.T1CKPS = 0b11;//1:8
T1CONbits.T1OSCEN = 1;//TMR1 increments on T1OSI RB7
T1CONbits.TMR1CS = 1;
TMR1L = 0x96;
TMR1H = 0xFF;
PORTBbits.RB4 = 1;
T1CONbits.TMR1ON = 1;
}
void main (void)
{
Init ();
//I will simulate a 1 ms pulse 50% Duty Cycle at T1CKI/RB6
while(1);
}
Ich habe einen Stimulus erstellt, bei dem ich einen Impuls an Pin RB7 mit einer Periode von 500 us erzeugt habe
und ich beobachte das Ergebnis durch IO-Pins
Ich baue das Projekt und debugge es, beobachte RB4 IO Pins und es schaltet nie um.
Kann mir jemand sagen warum? Danke schön.
MPLAB X IDE v3.55 PIC16F627A Debugging-Tool: Simulator
Ab Seite 170 des MPLAB® IDE User's Guide über die Simulationsmöglichkeiten auf 14-Bit-Core-PICs:
Timer1 wird in seinen verschiedenen Modi unterstützt, außer wenn er im Zählermodus durch einen externen Quarz läuft.
T1OSO
Pin injiziert habe. Da Sie bei Verwendung eines Kristalls beide Pins damit verbunden haben, können Sie versuchen, Ihr Programm mit dieser Problemumgehung zu simulieren.
Roger Rowland
Roger Rowland
Eingebetteter_Typ
Eingebetteter_Typ
Eingebetteter_Typ
zakkos
Eingebetteter_Typ
while(1);
, wenn ich am Anfang einen Haltepunkt setzePulse_ISR (void)
und die Debugging-Simulation ausführe, erreicht der Code den Haltepunkt nicht.Eingebetteter_Typ
zakkos
#include <xc.h>
Das hat nichts mit Ihrem Problem zu tun, könnte aber ein kleiner Ärger sein, wenn Sie dieses Snippet dann kopieren/einfügen möchten.