Микроконтроллер(mega8) ТУПИТ

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Микроконтроллер(mega8) ТУПИТ

Сообщение KaiTheKat »

Устройство в котором задействованы (UART, SPI и таймер (Mode: CTC, OC1A output: Toggle, 38Кгц). USART и SPI работают сами по себе, никому не мешают, но если перед включением МК на ножку OC1A (PB1) подать резистор (см. изображение) МК тупо перестает работать. Если сначала включить МК, потом подключить резистор, то он несколько сек работает и все. Не важно плюс транзистора подключен к питании или нет, также тупит. Так происходит, только если резистор подключить к OC1A (PB1) или OC1B (PB2). При подачи резистора к остальным ножкам все работает нормально. Кто нибудь сталкивался с похожей проблемой?

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Toggle
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(1<<COM1A0);
TCCR1B=(1<<WGM12)|(1<<CS10);
ICR1H=0x00;
ICR1L=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1A=12;
OCR1B=0x00;

//SPE: SPI Enable
//MSTR: Master
//SPR1, SPR0: fclk/128
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=25;

DDRD=255;
PORTD=0;

DDRB=0b11111111;
PORTB=0b00000000;

Изображение
Реклама
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение dr.doc »

Непропай положительной шины питания, высокий уровень нагрузки на порт. У меня было подобное: контроллер шился, получая через диоды на входах паразитное питание, но не работал. До тех пор, пока не пропаял земляной вывод. У Вас, похоже, нет +5 вольт.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение KaiTheKat »

Не совсем понял. Что значит "пропаял земляной вывод"?
У меня МК работает, если не подключать резистор к OC1A (OC1B). UART, SPI - все передает, принимает. Вот только, когда подключаешь резистор к OC1A (OC1B) МК перестает работать (UART, SPI перестает передавать-принимать).
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение Morroc »

МК может работать с неподключенным к ноге питания собственно питанием, но при этом имеются глюки типа как у вас.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение KaiTheKat »

У меня ноги питания МК подключены всегда, и при прошивки подключал.
Реклама
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение KaiTheKat »

Попробовал убрать из кода (инициализацию и работу SPI). При выключенном SPI все прекрасно работает. Подключение резистора к OC1A, не приводит к остановке МК, UART данные передает. Кто-нибудь знает, может одновременная работа SPI и таймера (Mode: CTC, OC1A output: Toggle) запрещена?
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение Alkul »

KaiTheKat писал(а):Кто-нибудь знает, может одновременная работа SPI и таймера (Mode: CTC, OC1A output: Toggle) запрещена?
Такого точно нет. Они работают независимо друг от друга. По-крайней мере, с точки зрения программы это именно так.
Аватара пользователя
KaiTheKat
Открыл глаза
Сообщения: 56
Зарегистрирован: Чт сен 04, 2014 18:21:01

Re: Микроконтроллер(mega8) ТУПИТ

Сообщение KaiTheKat »

В общем по экспериментировал я, и вот, что выяснил:
Если просто инициализировать SPI, все работает SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
МК у меня оказывается всегда работает, только если на OC1A подать резистор он зацикливается тут:
SPDR=120;
while(!(SPSR&(1<<SPIF)));

При подключенном резисторе дальше цикла не идет, при отключенном идет дальше цикла.

Вот полный код:

unsigned char data=0;
while(1) {
_delay_ms(10); //пауза 10 мс
SPDR=120; // передаем 120 по SPI
while(!(SPSR&(1<<SPIF))); // Ожидание окончания передачи SPI
data=SPDR; // в data записываем из SPI
while(!(UCSRA&(1<<UDRE))); // готовность uart
UDR=data; ..передача по uart
}
Ответить

Вернуться в «AVR»