Alright, I give up (for now).
I thought I had timers ALL figured out, but I brought the scope home from work, and it turns out I've got NO idea what I'm doing.
I'm using the following code:
When I run this code on my PIC 16F648A, I get a frequency of 72Khz on B.7, when my math says that I should be getting ~244Hz. AND to make matters more confusing, when I change the line OPTION_REG = %00000011" to another prescaler value, I don't get any change in the output frequency.Code:@ device pic16F648A, intrc_osc_clkout, mclr_off, protect_off, lvp_off, wdt_off DEFINE OSC 4 TRISB = 0 ' Outputs on CMCON = 7 ' Turn all comparators to fully digital (needed??) OPTION_REG = %00000011 'Set prescale to 1:16 TMR0 = 2 INTCON = %10100000 '$A0 enable TMRO interrupt on interrupt goto clkreset start: goto start clkreset: disable PORTB.7=1 PORTB.7=0 TMR0 = 2 'correct timer for missed cycles? INTCON = %00100000 '$20 Reset interrupt set T0IE, clear T0IF enable resume
I'm obviously missing something very basic here (like last time where I mixed up TRISB and PORTB commands).
Could someone please save what's left of my hair?
Thanks!





Bookmarks