реклама на сайте
подробности

 
 
> Микроконтроллер сбрасывается..., Несоответствие между заголовочным файлом и Datasheet...
Freeze Anti
сообщение Dec 25 2007, 09:07
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Здравствуйте...

У меня к вам вот такой вопрос...

Я пишу программу для ATmega32... Пишу ее в WinAVR 20060421... Так вот...
После команды sei() у меня происходит сброс... Есть предположения, почему он происходит...

Я просмотрел заголовочный файл iom32.h и обнаружил небольшое несоответствие с даташитом... В общем... В заголовочном файле написано...

Код
/* ADC Conversion Complete */
#define ADC_vect            _VECTOR(16)
#define SIG_ADC                _VECTOR(16)


а читая даташит, я вижу...

Цитата
Table 18. Reset and interrupt vectors
Vector No. | Program address | Source | Interrupt definition
. . .
16 | $01E | USART, TXC | USART, Tx Complete
17 | $020 | ADC | ADC Conversion Complete
. . .


Так вот... если я ошибаюсь, и моя ошибка не из-за этого - поправьте меня, пожалуйста... а если я не ошибаюсь, то хотел бы предложить создать топик, где описывались бы подобные ошибки... просто я захотел поделиться своим наблюдением... просмотрел поиск и не обнаружил ничего по этой теме...

Спасибо за внимание...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Freeze Anti
сообщение Dec 25 2007, 10:48
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Код
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <avr/interrupt.h>

. . .

unsigned short sCurrentTemp = 0;

INTERRUPT(SIG_ADC) //Обработчик прерывания от интегрированного АЦП
{
    unsigned int ADCData; //Буферная переменная для хранения
    ADCData = ADCW;         //результата преобразования
    sCurrentTemp = ADCData / 2;
    ADCSRA = ADCSRA | 0x40; //Устанавливаем разряд ADSC в регистре
                           //ADCSR, чтобы начать новое преобразование
}

. . .

void main(void)
{
    char sLogo1[] = {0x4F, 0x41, 0x4F, 0x20, 0x43, 0x48, 0xA8, 0xE1, 0x20, 0x50, 0x4F, 0x43, 0xE0, 0x4F, 0x50, 0x54, 0x45, 0x58, 0x00};
    char sLogo2[] = {0x4B, 0xB8, 0xAC, 0x20, 0x30, 0x2E, 0x31, 0x00};
    DDRB = 0xFF; //Выводы 0 - 6 порта B - выходы (передача данных и управляющие сигналы)
    InitLCD(); //Инициализируем ЖК-дисплей
    ClearLCD();
    ShowStr(sLogo1);
    GoToLine(2);
    ShowStr(sLogo2);
    DDRA = 0x00; //Все выводы порта A - входы
    DDRC = 0x00; //Все выводы порта C - входы
    ADMUX = 0xC0; //Назначаем в качестве аналогового входа PA0;
    ADCSRA = 0xEF; /*0b11101111 - активизируем АЦП с коэффициентом
                    деления 128, разрешаем прерывание от АЦП и
                    начинаем преобразование*/
    sei(); //Общее разрешение прерываний;
    _delay_ms(2000);
    while(1)
    {
        if (PINC & 0x02)
            Control();
        else
            if (PINA & 0x02)
                Set();
            else
                Measure();
    }
}


Вот... и после функции sei(); контроллер перезапускается... Посмотрел даташит и хедер... возможно, вы и правы... отсчет везде начинается с единицы, но только в хедере нет вектора RESET...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 11:37
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



1- INTERRUPT(SIG_ADC)
Вам не нужен INTERRUPT(...) !!!! Точка. Вам нужен ISR(...). Теже будьте внимательны к предупреждениям компилятора. Вы не подключили хеадер где описан INTERRUPT(), но в любом случае он вам не нужен!!!

2. unsigned short sCurrentTemp = 0;
Переменая должна быть 'volatile'!!!

3. _delay_ms(2000);
Неверно. Прочитайте описание _delay_ms и _delay_us. Извините, но мне влом описывать эту ошибку раз в квартал.

Анатолий.

Сообщение отредактировал aesok - Dec 25 2007, 11:44
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Freeze Anti   Микроконтроллер сбрасывается...   Dec 25 2007, 09:07
- - VassiL   Здравствуйте! У меня проблема такого плана.. Н...   Dec 25 2007, 09:28
- - Freeze Anti   Вот я о том же и говорю... Попробуйте в библиотеке...   Dec 25 2007, 09:33
- - aesok   Цитата(Freeze Anti @ Dec 25 2007, 12:07) ...   Dec 25 2007, 09:56
- - Палыч   Цитата(Freeze Anti @ Dec 25 2007, 12:07) ...   Dec 25 2007, 10:26
|- - Qwertty   Цитата(aesok @ Dec 25 2007, 14:37) 3. _de...   Dec 25 2007, 11:53
|- - aesok   Цитата(Qwertty @ Dec 25 2007, 14:53) А в ...   Dec 25 2007, 11:58
- - Kuzmi4   2 Freeze Anti - думаю что у вас есчё что-то вызыва...   Dec 25 2007, 11:24
- - Qwertty   А WDT случайно не включен фьюзом? И сбрасывается -...   Dec 25 2007, 11:38
- - VassiL   Цитата(aesok @ Dec 25 2007, 12:56) Ошибки...   Dec 25 2007, 11:50
|- - aesok   1. Пост номер 8, ответ 1. 2. #define Freq 4000000...   Dec 25 2007, 11:55
||- - Freeze Anti   Цитата(aesok @ Dec 25 2007, 14:55) 2. #de...   Dec 25 2007, 12:23
||- - aesok   Цитата(Freeze Anti @ Dec 25 2007, 15:23) ...   Dec 25 2007, 12:29
|- - Qwertty   Цитата(VassiL @ Dec 25 2007, 14:50) Хочу ...   Dec 25 2007, 11:56
|- - VassiL   Цитата(Qwertty @ Dec 25 2007, 14:56) Убер...   Dec 25 2007, 12:29
|- - aesok   Цитата(VassiL @ Dec 25 2007, 15:29) Спаси...   Dec 25 2007, 12:32
|- - VassiL   Цитата(aesok @ Dec 25 2007, 15:32) Версии...   Dec 25 2007, 12:35
- - Freeze Anti   спасибо всем большое... программа больше не сбрасы...   Dec 25 2007, 12:50
- - aesok   Цитата(Freeze Anti @ Dec 25 2007, 15:50) ...   Dec 25 2007, 12:58
- - VassiL   Цитата(aesok @ Dec 25 2007, 15:58) А вот ...   Dec 25 2007, 13:20
|- - Qwertty   Цитата(VassiL @ Dec 25 2007, 16:20) Я про...   Dec 25 2007, 13:26
|- - VassiL   Цитата(Qwertty @ Dec 25 2007, 16:26) Wina...   Dec 25 2007, 13:30
|- - IgorKossak   Цитата(Qwertty @ Dec 25 2007, 15:26) Wina...   Dec 25 2007, 13:45
|- - VassiL   Цитата(IgorKossak @ Dec 25 2007, 16:45) Б...   Dec 25 2007, 13:53
- - Freeze Anti   Цитата(aesok @ Dec 25 2007, 15:58) А вот ...   Dec 25 2007, 13:25


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.0167 секунд с 7
ELECTRONIX ©2004-2016