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

 
 
> Глюки AVRStudio+WinAVR или в моей голове, нет возможности правильно Отладить программу на си
Чиппер
сообщение Dec 2 2012, 12:59
Сообщение #1





Группа: Участник
Сообщений: 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;





}

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Dec 10 2012, 04:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Где-то примерно так:
CODE

#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

volatile unsigned int ADCCompare_new =0;
volatile unsigned int ADCCompare_old =0;

#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_COMPA_vect)
{
INVBIT(PORTB,PB1);//
INVBIT(PORTB,PB0);//
if(ADCCompare_new != ADCCompare_old)
{
OCR1A = ADCCompare_old = ADCCompare_new;
}
}


int main(void)
{
cli();

// Init TC1 - CTC Mode
TCCR1A = 0;
TCCR1B = (1<<WGM12) | (1<<CS10);
OCR1A = 510;
TCNT1 = 0;
TIMSK = (1<<OCIE1A);

// Init ADC
SFIOR=0;
ADCSRA = (1<<ADEN)|(0<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADMUX=1; //vibor vhoda

// Init Port's
DDRA=0x00; //in
DDRB=0xff; //out
DDRC=0xff; //out
DDRD=0x00; //in
PORTA=0x00;
PORTB=0x01;
PORTC=0x00;
PORTD=0x00;

TIFR = 0xFF;
sei();
while(1)
{
_delay_ms(1000);
ADCSRA |= (1<<ADSC); // Start ADC Conversion
while((ADCSRA & (1<<ADIF)) != 0x10);// Wait till conversion is complete
ADCCompare_new = 510 - (ADC/3); // Read the ADC Result
ADCSRA |= (1 << ADIF); // Clear ADC Conversion Interrupt Flag
}
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Чиппер   Глюки 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
- - Чиппер   Переделал вот листинг #include <avr/io.h> #i...   Dec 7 2012, 14:57
|- - V.K   Вставьте: asm("nop"); и на этой строке...   Dec 7 2012, 15:20
- - Чиппер   (( Попробывал Теже яйца только в профиль. Я вот вс...   Dec 8 2012, 12:46
|- - _Артём_   Цитата(Чиппер @ Dec 8 2012, 14:46) этот г...   Dec 8 2012, 14:09
- - 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


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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 17:44
Рейтинг@Mail.ru


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