使用 ATmega328p 在 Microchip Studio 上模拟 Timer0 的 T0 外部时钟

问题描述 投票:0回答:1

我已设置

Timer0
以与引脚
T0
上的外部时钟配合使用:

TCCR0A=0x02 // CTC Mode
TCCR0B=0x07 // Start timer on external T0 clock (rising edge)
OCR0A=90 // Compare after 90 clock ticks
TIMSK0=0x03 // Interrupt enable on OCR0A compare match or timer overflow (irrelevant this latter)

我正在使用 Microchip Studio Simulator 和刺激文件来模拟 T0 引脚上的时钟。 由于 T0 不是芯片的内部寄存器,因此我考虑设置

PORTD
寄存器,因为引脚 T0(物理上)与 PD4 是同一个焊盘。我没有其他引脚连接到 portd,所以为了简单起见:

$repeat 1000
   PORTD=0xFF // Set PORTD high
   #800000 // wait 50ms
   PORTD=0x00 // Set PORTD low
   #800000 // wait 50ms
$endrep

刺激文件已正确加载,并且不会引发任何错误。但计时器没有启动(TCNT0 始终保持 0x00),我很确定问题是 T0 没有变化。 有什么线索可以解决这个问题吗?

simulator atmega microchip
1个回答
0
投票

想法是对的,只是端口错了。将使用

PIND
代替
PORTD
,这是有道理的:它是输入端口寄存器,从中获取 T0 值。

$repeat 1000
   PIND=0xFF // Set PORTD high
   #800000 // wait 50ms
   PIND=0x00 // Set PORTD low
   #800000 // wait 50ms
$endrep
© www.soinside.com 2019 - 2024. All rights reserved.