Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Инициализация тиньки - видать, что-то пропустил, а что - не пойму. Подскажите, плиз.
Отправлено
YellowTiger 25 июня 2007 г. 15:57
Tiny45, Внутренний RC на 4MHz с делителем на 4.Сгенерил CV AVR'овским wizard'ом простейший проект: 5 пин - выход, инициир-й нулем, нижние пины (0..4) - входы в третьем состоянии^
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 System clock
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
Из периферии включен только таймер 0.
Разрешены прерывания от таймера-0 и int0.
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x40;
MCUCR=0x01;
GIFR=0x40;// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
На прерывании по переполнению таймера висит простейший код:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
static unsigned int iIntCounter; if ( iIntCounter++ == 1 ) PINB.5 = 1; // toggle 5th out pin once per MAXINT
}
И вот, со всем этим барахлом, мендр на 5 выводе симулируется в авр-студии (4), но в железе его нет.
При этом, не только верификация, но и отдельное чтение из м/к подтверждают, что код унутрь записался верно.
Составить ответ | Вернуться на конференцию
Ответы
- Спасибо всем. Вероятно, я попросту обсчитался с делением на 256 - переборщил. Я так и думал, что это должно быть что-то, что совсем рядом. Как правило, именно такие вещи кажутся лучше всего проверенными, отчего и не проверяются - я все биты-флаги перечитал/перещупал, пока искал, что не так. :о))) Спасибо. — YellowTiger (25.06.2007 17:01:13 83.149.0.98, пустое)
- а в железе через 65535 прерываний таймера. — ы (25.06.2007 16:36:55 80.92.98.211, пустое)
- По-умолчанию ноги настроены вовнутрь — Elektronik (25.06.2007 16:34:53 194.85.99.225, пустое)
- Cлова что cконфигурировали наружу есть, а кода нет. — Elektronik (25.06.2007 16:36:33 194.85.99.225, пустое)
- Код есть (это ж визардом сделано, а у него с памятью все в порядке :о) ), просто, я его пропустил, вот он: — YellowTiger (25.06.2007 16:43:46 83.149.0.98, 235 байт)
- ну может дрыг при записи в PINB у Танек не работает, пробовали писать как положено через PORTB ? — Elektronik (25.06.2007 16:52:39 194.85.99.225, пустое)
- PINB.х = 1 - работает 100% — =L.A.= (25.06.2007 17:15:41 213.134.214.10, пустое)
- Пробовал, тоже не вышло, но там я сам допустил ошибку, которую только потом просек, потому сегодня стал описывать только SBI, так как во-первых, этот дрыг описан в даташите, а во-вторых, студия его симулит... Если сокращение счетчика до размеров одного байта (получится 15 герц) не поможет - попробую. — YellowTiger (25.06.2007 16:58:2 83.149.0.98, пустое)
- а какой смысл несет выражение в обработчике прерывания?! — eXeC001er (25.06.2007 16:00:58 83.239.13.202, пустое)