|
Глюки AVRStudio+WinAVR или в моей голове, нет возможности правильно Отладить программу на си |
|
|
|
Dec 2 2012, 12:59
|
Группа: Участник
Сообщений: 10
Регистрация: 27-12-09
Пользователь №: 54 511

|
вот листинг моей программы , это грубо говоря пищалка против клопов ультро звуковая , должна настраиваться переменным резистором подключенным к порту а на нужной частоте. Но факт в том что программа на каторой компелируется текст начинает глючить , то проходит через прерывание таймера Т1 по три раза , то скачет через строчку и появляется после нескольких десятков нажатий F11 в разных местах. Самое интересное что эту же программу я заредил в VMLAB Она и там показала ту же окалесицу. Я с этой бедой борюсь больше 2 лет ( а мне не смешно.) Голова кругом!!! То-ли менять компилятор (я к этому то долгл приноравливался ) , То ли писать на Ассемблере. Я бы с Удовольствием выложил видео Файл Что эта программа вытворяет , если покажите куда.
#include <avr/io.h> #include <stdio.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h>
volatile unsigned char a;
#define INVBIT(x,y) (x^=(1<<y))
ISR(TIMER1_OVF_vect) { INVBIT(PORTB,PB1);// управление светодиод INVBIT(PORTB,PB0);// управление светодиод a=0;
}
void display(void);
int main(void) { TIFR =0; TIMSK=0x04;// прерывание по перепол т1 TCCR1A=0; TCCR1B=1; TCNT1=65535-500; sei(); SFIOR=0; ADCSRA=0xe0;
SFIOR=0; DDRA=0x00;//in DDRB=0xff;//out DDRC=0xff;//out DDRD=0x00;//in PORTA=0x00; PORTB=0x01; PORTC=0x00; PORTD=0x00;
ADMUX=1;//vibor vhoda
horo: ADMUX=1; _delay_ms(1000); ADCCompare=ADC; ADCCompare=ADCCompare/3; ADCCompare=500-ADCCompare; TCNT1=65535-ADCCompare;
a=1; horo1: if (a==0) {goto horo;} goto horo1;
}
|
|
|
|
|
 |
Ответов
|
Dec 7 2012, 14:57
|
Группа: Участник
Сообщений: 10
Регистрация: 27-12-09
Пользователь №: 54 511

|
Переделал вот листинг #include <avr/io.h> #include <stdio.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h>
volatile unsigned int a; // èçìåíÿåìàÿ äëèòåëüíîñòü ìîðãàíèé volatile unsigned int ADCCompare; //
#define SETBIT(x,y) (x|=(1<<y)) #define CLRBIT(x,y) (x&=~(1<<y)) #define INVBIT(x,y) (x^=(1<<y)) #define CHKBIT(x,y) (x&(1<<y)) #define BITON(x,y) (x&(1<<y)) #define BITOFF(x,y) (!(x&(1<<y)))
ISR(TIMER1_OVF_vect) {
INVBIT(PORTB,PB1);// INVBIT(PORTB,PB0);// a=0;
}
// ((PIND & 0x04) == 0 ) ïðîâåðèòü åñëè 4 áèò = 0 // ((PIND & 0x04) != 0 ) ïðîâåðèòü åñëè 4 áèò = 1 // 7654 3210 // 1000 0000 = 80 // 0100 0000 = 40 // 0010 0000 = 20 // 0001 0000 = 10 // 0000 1000 = 08 // 0000 0100 = 04 // 0000 0010 = 02 // 0000 0001 = 01
int main(void) { TIFR =0; TIMSK=0x04;// ïðåðûâàíèå ïî ïåðåïîë ò1 TCCR1A=0; TCCR1B=1; TCNT1=65535-500; cli(); SFIOR=0; ADCSRA=0xe7;
SFIOR=0; DDRA=0x00;//in DDRB=0xff;//out DDRC=0xff;//out DDRD=0x00;//in PORTA=0x00; PORTB=0x01; PORTC=0x00; PORTD=0x00;
ADMUX=1;//vibor vhoda
horo:
TCNT1=65535-(500-(ADC/3)); a=1; horo1:
if ( ADIF==1) {goto horo;}
goto horo1; }
Оптимизацию сделал на ноль и на один тоже ставил в листинге на строчке а=1 в программе проподает стрелка при значении CYCLE COUNTER 204 А ЕСЛИ НАЖАТЬ ПАУЗУ ЭТО ЖЕ ЗНАЧЕНИЕ УЖЕ РАВНО 3206010 , ПРИ ЧЕМ НИ КАКИЕ ТОЧКИ ОСТАНОВА РАССТАВЛЕННЫЕ В РАЗНЫХ МЕСТАХ ПРОГРАММЫ И ПРЕРЫВАНИЯ НЕ СРАБАТЫВАЮТ. КАК ТО РАЗ ДАЖЕ ОСТАНОВИ ПРОГРАММУ ГДЕ СТРЕЛА ВЫШЛА ЗА ЛИСТИНГ ПРОГРАММЫ . кАК ОТЛАЖИВАТЬ ПРОГРАММУ ВООБЩЕ НЕ ПОНЯТНО((
|
|
|
|
Сообщений в этой теме
Чиппер Глюки AVRStudio+WinAVR или в моей голове Dec 2 2012, 12:59 alexeyv 1. Какой чип?
2. Какая тактовая частота? В даташит... Dec 3 2012, 03:50 Чиппер Проц Mega16l , Тактовая частота 16 мегагерц .
Пыта... Dec 3 2012, 06:53 Палыч Цитата(Чиппер @ Dec 3 2012, 10:53) Пытаюс... Dec 3 2012, 08:22  Чиппер Цитата(Палыч @ Dec 3 2012, 21:22) Насколь... Dec 3 2012, 09:50 alexeyv 1. Если FCPU =16МГц, то необходимо поставить делит... Dec 3 2012, 08:33 ILYAUL Есть столько сайтов , что бы сбросить и дать ссылк... Dec 3 2012, 12:58 Чиппер Нашел , скачивайте и посмотрите .
http://files.mai... Dec 4 2012, 13:44 alexeyv Цитата1 .Зачем мне включать делитель если частотой... Dec 5 2012, 04:07 Чиппер (( Попробывал Теже яйца только в профиль.
Я вот вс... Dec 8 2012, 12:46 _Артём_ Цитата(Чиппер @ Dec 8 2012, 14:46) этот г... Dec 8 2012, 14:09 alexeyv Где-то примерно так:
CODE
#include <avr/io.h... Dec 10 2012, 04:45 TriD Не вдаваясь в тонкости реализации программы, скажу... Dec 10 2012, 13:20 Чиппер Цитата(TriD @ Dec 11 2012, 02:20) При оши... Dec 13 2012, 13:06  demiurg_spb Понизьте уровень оптимизации до 0 или 1 тогда можн... Dec 13 2012, 13:54 TriD Цитата(Чиппер @ Dec 13 2012, 17:06) Спаси... Dec 16 2012, 12:20 Чиппер Еще один вопрос Синтаксис Глобальных переменных Ка... Dec 22 2012, 00:48 demiurg_spb Цитата(Чиппер @ Dec 22 2012, 04:48) Стран... Dec 22 2012, 07:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|