роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: прерывания...
Mozart Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Янв. 2007  



нужно ли инициализировать стек в Си??? и если да то как??? асмовской вставкой?
CODE:

ISR(ADC_vector)
{
SendByte(ADCL);
sei();
}
void InitADC() {
ADMUX = _BV(REFS1)|_BV(REFS0) /*2.56 INTERNAL REFERENCE VOLTAGE*/
|_BV(ADLAR) /*LEFT ADJUSTMENT*/
|_BV(MUX2)|_BV(MUX0); /*ADC5*/

//cbi(DDRC,ADC_DDR);

DDRC &= ~_BV(ADC_DDR); //0 - input ddc5
PORTC |= _BV(ADC_PORTC); //pull-up portc5

ADCSRA |= _BV(ADIE); //interrupt
}
void
main(void)
{
InitADC();
InitPort();
EnableADC();
sei();
while (1)
{
StartADC();
.
.
.
}

}


в этом коде, вместо того, чтобы прыгнуть на вектор прерывания, программа начинается сначала т.е. всё инициализируется...
 
 Top
Admin Администратор Post Id


Администратор


Сообщений всего: 892
Дата рег-ции: Май 2006  



Инициализация стека должна добавляться автоматически при линковании программы. Микроконтроллеры имеют различную организацию стека (например, at90s1200 имеет аппаратную реализацию). В зависимости от того, что написано в make-файле, стек будет проинициализирован тем или иным образом.

Как он проинициализировался, следует проверить по сгенерированному WinAVR листингу на ассемблере (генерация ассемблерного кода также прописывается в make-файле).
 
 Top
Mozart Post Id


Рядовой


Сообщений всего: 16
Дата рег-ции: Янв. 2007  



а где в маке прописывать?

дело в том, что когда смотрю в студио и вызываю прерывание, оно соотвтетственно проимходит, но программа начинается сначала...

и стек не инициализируется по крайне мере в студио пишет stack disable
 
 Top
Admin Администратор Post Id


Администратор


Сообщений всего: 892
Дата рег-ции: Май 2006  



Используйте стандартный шаблон make-файла, который создает MFile.

После компиляции смотрите в файлах с расширением .lss и .lst
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru