ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
26 июня
191298 Топик полностью
Ксения (22.04.2010 00:54 - 01:14, просмотров: 172) ответил Скрипач на ATMEGA8 PortB.pin0, нужно особое приглашение? Резистор подтяжки, при DDRB = PORTB = 0, на этом пине не отключается. Только при SFIOR = 0b0100, что не очень подходит. Кто-нибудь сталкивался?
Проверила на железе - скрипичный эффект не обнаружен :) 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 вольта, когда светодиод гаснет, напряжение падает до нуля.