Проверила на железе - скрипичный эффект не обнаружен :) http://www.olimex.com/dev/images/avr-p28.jpg
http://www.olimex.com/dev/avr-p28.html
Отчет о проделанной работе:
Взяла демо-плату AVR-P28 от OLIMEX
http://www.olimex.com/dev/avr-p28.html (см. картинку)
вставила в нее ATmega8-16PU (DIP-28)
Джампер в положении 5-вольтового питания.
Прошила вот эту программу:
C_task main()
{
PORTB = 0;
PORTC = (1<<LAMP5_PIN);
PORTD = 0;
// Сконфигурируем порты
DDRB = 0; // PORTB_DIRECTION
DDRC = (1<<LAMP5_PIN); // PORTC_DIRECTION
DDRD = 0; // PORTD_DIRECTION
// Timer
TIFR = 0x4; // TOV1, только T1 используется
TIMSK = 0x4; // TOIE1
// T1
TCCR1B = 0x5; // делитель - 1024
TCNT1L = T1L;
TCNT1H = T1H;
// Watchdog
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0); // 2.1 sec
for( ;;)
{
_WDR();
if( Flag & Flag_10s ) // 10 s
{
Flag &= ~Flag_10s; // стираю флаг
PORTB ^= 0x01; // переключаю подтяжку
PORTC ^= (1<<LAMP5_PIN); // переключаю светодиод
}
} // forever
}
Примечания:
1) 5-ый пин в порте PORTC управляет светодиодом - так веселее и понятнее, когда включена подтяжка.
2) Бит Flag_10s в переменной Flag устанавливается каждые 10 секунд в процедуре прерывания от таймера - код не приводится.
3) Напряжение между землей (8-ой пин) и PB0 (14-ый пин) измерялось цифровым мультиметром DT-832 со входным сопротивлением 1 Мом.
Результаты:
Когда светодиод горит (он переключается синхронно с подтяжкой) на пине PB0 измерено напряжение 4.81 вольта,
когда светодиод гаснет, напряжение падает до нуля.