|
|
  |
Проблема с прерыванием WinAVR+AVRStudio, Выдает ошибку прикомпиляции, хотя в хидере так прописана команда, хелп |
|
|
|
Apr 28 2008, 10:39
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165

|
Пользуюсь 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, 11:09
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Кастусь Рыжов @ Apr 28 2008, 13:39)  Кто подскажет. Скриншот прилагается. Скриншот - это, конечно, хорошо. Но неплохо бы привести весь исходник. Глядя на ваш текст не видно, какие заголовочные файлы включены и начало функции, внутри которой вы пытаетесть описать обработчик. Что вы хотели этим получить, как вы себе представляете это должно работать? В языке С нет возможности описывать одну функцию внутри другой (кроме расширения в компиляторе gcc). Обработчик - самостоятельная функция, как и любая другая. Именно на это и ругается компилятор. И еще - пользуйте специальную кнопку с символом "#" в форме ввода сообщений для оформления исходников - сделайте так, чтобы другим было удобно помогать вам.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 30 2008, 09:31
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165

|
Цитата(Kuzmi4 @ Apr 29 2008, 16:13)  2 Кастусь Рыжов - как бы вам это сказать... хм.. в обсчем я так понял с вашего скниршота - у вас в мэйне идёт объявление интерупта... Отсюда и ошибка компилера... Но в мэйне объявлять интерупты - я такое первый раз вижу...  Спасибо за помощь, до меня дошло, я уже и сам исправился. Описал прерывание не в майне. Просто я самостоятельно учу Си, да еще с аглицким - проблема, поэтому косяков напорол. Приходится методом проб и ошибок. От меня  за помощь
--------------------
Прибор должен работать не в принципе, а в корпусе!
|
|
|
|
|
Apr 30 2008, 12:20
|
Участник

Группа: Новичок
Сообщений: 33
Регистрация: 13-08-07
Пользователь №: 29 751

|
Попробуй книгу автора Шпак Ю.А. "Программирование на языке С для AVR и PIC микроконтроллеров". В книге используется winAVR версии 2003хххх если проблемы с инглишом. В инете она точно есть.
|
|
|
|
|
May 1 2008, 11:46
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165

|
Цитата(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 и Си.
--------------------
Прибор должен работать не в принципе, а в корпусе!
|
|
|
|
|
May 1 2008, 16:23
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
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МГц принимать клок.. В обсчем предварительно проштудируте даташит по вашим вопросам - там много чего полезного пишут - тучи вопросов отпадут.. В обсчем удачи в изучении..
|
|
|
|
|
May 3 2008, 12:40
|

Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165

|
Цитата(Kuzmi4 @ May 1 2008, 19:23)  2 Кастусь Рыжов - приложил файлик - в нём я с помощью поллинга с TWI работаю с 24с256 - нормально всё себя чувствует, только проц занят, но тут под задачу - у меня там проц во время работы с TWI ничем не должен был заниматься, потому А если совсем лень - напишите в саппорт - вроде как даже носом тыканут куда смотреть и литературы подкинут.. В обсчем удачи в изучении..  Премного благодарен, учить хочу, грызу даташиты и Си. Сразу и IAR учу, Словей вы конечно непонятных наговорили-поллинг. Ну всеравно спасибо. А на саппорт в Атмел писать,по русски что ли? А можно вам в личное сообщение кусочек кода кинуть будет, чтоб покритиковали? простите, если офтоп сказал
--------------------
Прибор должен работать не в принципе, а в корпусе!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|