Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с прерыванием WinAVR+AVRStudio
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Кастусь Рыжов
Пользуюсь WinAVR20071221 & AVRStudio 4.13.571

GПри компиляции обработки преравания дает ошибку. Только не пойму чегого оно хочет от меня. Кто подскажет. Скриншот прилагается.

код:
sei();//разрешение прерывания

ISR(TWI_vect)
{
PORTC = 0x00;
}

dump= chip;
for (addr=0;addr<0x20;addr++)
{
eeprom_write_byte (addr, dump);
}

goto keypad;
return(0);
}


Ответ компилятора

../ProgramI2C.c:246: error: static declaration of '__vector_17' follows non-static declaration
../ProgramI2C.c:245: error: previous declaration of '__vector_17' was here
../ProgramI2C.c:253: warning: passing argument 1 of 'eeprom_write_byte' makes pointer from integer without a cast
make: *** [ProgramI2C.o] Error 1
Build failed with 2 errors and 1 warnings...
Сергей Борщ
Цитата(Кастусь Рыжов @ Apr 28 2008, 13:39) *
Кто подскажет. Скриншот прилагается.
Скриншот - это, конечно, хорошо. Но неплохо бы привести весь исходник. Глядя на ваш текст не видно, какие заголовочные файлы включены и начало функции, внутри которой вы пытаетесть описать обработчик. Что вы хотели этим получить, как вы себе представляете это должно работать? В языке С нет возможности описывать одну функцию внутри другой (кроме расширения в компиляторе gcc). Обработчик - самостоятельная функция, как и любая другая. Именно на это и ругается компилятор.

И еще - пользуйте специальную кнопку с символом "#" в форме ввода сообщений для оформления исходников - сделайте так, чтобы другим было удобно помогать вам.
Kuzmi4
2 Кастусь Рыжов - как бы вам это сказать...
wacko.gif
хм.. в обсчем я так понял с вашего скниршота - у вас в мэйне идёт объявление интерупта... smile3046.gif
Отсюда и ошибка компилера...

На счёт варнинга - посмотрите в исходниках - какие аргументы у eeprom_write_byte - я уверен, что вы там ему не те аргументы подсовываете - вот и говорит компилер - ахтунг, собакирен за яйца - клац-клац......

Но в мэйне объявлять интерупты - я такое первый раз вижу...
smile.gif
Кастусь Рыжов
Цитата(Kuzmi4 @ Apr 29 2008, 16:13) *
2 Кастусь Рыжов - как бы вам это сказать...
wacko.gif
хм.. в обсчем я так понял с вашего скниршота - у вас в мэйне идёт объявление интерупта... smile3046.gif
Отсюда и ошибка компилера...

Но в мэйне объявлять интерупты - я такое первый раз вижу...
smile.gif


Спасибо за помощь, до меня дошло, я уже и сам исправился. Описал прерывание не в майне. Просто я самостоятельно учу Си, да еще с аглицким - проблема, поэтому косяков напорол. Приходится методом проб и ошибок. От меня a14.gif за помощь
fpmoleg
Попробуй книгу автора Шпак Ю.А. "Программирование на языке С для AVR и PIC микроконтроллеров". В книге используется winAVR версии 2003хххх если проблемы с инглишом. В инете она точно есть.
Pyku_He_oTTyda
Цитата
Описал прерывание не в майне.

а зачем его в main писать?
Кастусь Рыжов
Цитата(Pyku_He_oTTyda @ May 1 2008, 09:31) *
а зачем его в main писать?


Я ж говорю- исправился, написал не в майне, а до майна. Просто не думал, что ISR(interrupt_vector) применяется как функция, и что ее надо описать до майна. А при работе с TWI аппаратным обязательно ли давать разрешение прерывания от TWI или можно просто контролировать TWCR и TWSR регистры. ? Управлять только TWCR, разрешая прерывание в нем, не касаясь бита прерывания от TWI в SREG
Да,и еще- С какой масимальной частотой будет работать 24С04? Рассчитываю поставить кварц 4МГц и тактовую частоту SCL посчитал по формуле примерно 50кГц, если в TWBR=2 и TWPS1,TWPS0=10 ATmega16.




Цитата(fpmoleg @ Apr 30 2008, 15:20) *
Попробуй книгу автора Шпак Ю.А. "Программирование на языке С для AVR и PIC микроконтроллеров". В книге используется winAVR версии 2003хххх если проблемы с инглишом. В инете она точно есть.


Спасибо за участие в нужде. Книги есть . Евстифеев и Шпак. Просто не все понятно, особенно когда нет знания по Си, приходиться все сразу учить- и AVR и Си.
Kuzmi4
2 Кастусь Рыжов -
на счёт TWI - приложил файлик - в нём я с помощью поллинга с TWI работаю с 24с256 - нормально всё себя чувствует, только проц занят, но тут под задачу - у меня там проц во время работы с TWI ничем не должен был заниматься, потому в интеруптах не было нужды и писалось напрямую с даташита ...
А вообсче есть поиск - http://electronix.ru/forum/index.php?act=A...ost&id=9929 - это я выкладывал, собсно откуда и выдрал приложенный текстовичёк с исходником...
Можно и с помощью интеруптов - в инете поисчите, или на сайте атмела в апнотах - там точно есть...
А если совсем лень - напишите в саппорт - вроде как даже носом тыканут куда смотреть и литературы подкинут..

На счёт максимальной частоты, то тут есть даташит - мосЧная весч - на странице 6 для ST24C04 в табличке 7 есть такой параметр как fSCL (Clock Frequency) и указана максимальная частота в 100 кГц (у меги TWI выше 400кГц не может работать, что вроде как согласуется со спецификацией на I2C - так вроде стандартный TWI - 100кГц, а проапгрейдженый(я так понял по скорости, потому как в протоколе вроде изменений не было) - 400 кГц )..
Я с 24с256 работал на 400 кГц - мега выше не давала , но по даташиту на 5 вольтах она могла до 1МГц принимать клок.. В обсчем предварительно проштудируте даташит по вашим вопросам - там много чего полезного пишут - тучи вопросов отпадут..

В обсчем удачи в изучении..
smile.gif
Кастусь Рыжов
Цитата(Kuzmi4 @ May 1 2008, 19:23) *
2 Кастусь Рыжов -
приложил файлик - в нём я с помощью поллинга с TWI работаю с 24с256 - нормально всё себя чувствует, только проц занят, но тут под задачу - у меня там проц во время работы с TWI ничем не должен был заниматься, потому

А если совсем лень - напишите в саппорт - вроде как даже носом тыканут куда смотреть и литературы подкинут..


В обсчем удачи в изучении..
smile.gif
a14.gif

Премного благодарен, учить хочу, грызу даташиты и Си. Сразу и IAR учу, Словей вы конечно непонятных наговорили-поллинг. Ну всеравно спасибо. А на саппорт в Атмел писать,по русски что ли? А можно вам в личное сообщение кусочек кода кинуть будет, чтоб покритиковали? простите, если офтоп сказал 05.gif
Kuzmi4
2 Кастусь Рыжов - валяйте laughing.gif

Помогу, чем смогу wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.