@@ -30,6 +30,7 @@ Version Modified By Date Comments
30
30
0006 D Mellis 09/12/29 Replaced objects with functions
31
31
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
32
32
0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY
33
+ 0009 J Reucker 15/04/10 Issue #292 Fixed problems with ATmega8 (thanks to Pete62)
33
34
*************************************************/
34
35
35
36
#include < avr/interrupt.h>
@@ -296,13 +297,13 @@ void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
296
297
#if defined(TCCR0B)
297
298
if (_timer == 0 )
298
299
{
299
- TCCR0B = prescalarbits;
300
+ TCCR0B = (TCCR0B & 0b11111000 ) | prescalarbits;
300
301
}
301
302
else
302
303
#endif
303
304
#if defined(TCCR2B)
304
305
{
305
- TCCR2B = prescalarbits;
306
+ TCCR2B = (TCCR2B & 0b11111000 ) | prescalarbits;
306
307
}
307
308
#else
308
309
{
@@ -389,15 +390,15 @@ void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
389
390
break ;
390
391
#endif
391
392
392
- #if defined(TIMSK3)
393
+ #if defined(OCR3A) && defined( TIMSK3) && defined(OCIE3A )
393
394
case 3 :
394
395
OCR3A = ocr;
395
396
timer3_toggle_count = toggle_count;
396
397
bitWrite (TIMSK3, OCIE3A, 1 );
397
398
break ;
398
399
#endif
399
400
400
- #if defined(TIMSK4)
401
+ #if defined(OCR4A) && defined( TIMSK4) && defined(OCIE4A )
401
402
case 4 :
402
403
OCR4A = ocr;
403
404
timer4_toggle_count = toggle_count;
@@ -454,21 +455,21 @@ void disableTimer(uint8_t _timer)
454
455
#endif
455
456
break ;
456
457
457
- #if defined(TIMSK3)
458
+ #if defined(TIMSK3) && defined(OCIE3A)
458
459
case 3 :
459
- TIMSK3 = 0 ;
460
+ bitWrite ( TIMSK3, OCIE3A, 0 ) ;
460
461
break ;
461
462
#endif
462
463
463
- #if defined(TIMSK4)
464
+ #if defined(TIMSK4) && defined(OCIE4A)
464
465
case 4 :
465
- TIMSK4 = 0 ;
466
+ bitWrite ( TIMSK4, OCIE4A, 0 ) ;
466
467
break ;
467
468
#endif
468
469
469
- #if defined(TIMSK5)
470
+ #if defined(TIMSK5) && defined(OCIE5A)
470
471
case 5 :
471
- TIMSK5 = 0 ;
472
+ bitWrite ( TIMSK5, OCIE5A, 0 ) ;
472
473
break ;
473
474
#endif
474
475
}
0 commit comments