Не работает инкремент

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 13
Зарегистрирован: Ср апр 29, 2009 10:10:42
Откуда: Киев

Сообщение Alexonus »

Вот код:

Код: Выделить всё

/***************************************************** 
This program was produced by the 
CodeWizardAVR V2.03.9 Evaluation 
Automatic Program Generator 
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. 
http://www.hpinfotech.com 
 
Project :  
Version :  
Date    : 31.08.2009 
Author  : Freeware, for evaluation and non-commercial use only 
Company :  
Comments:  
 
 
Chip type               : ATmega8 
Program type            : Application 
AVR Core Clock frequency: 8,000000 MHz 
Memory model            : Small 
External RAM size       : 0 
Data Stack size         : 256 
*****************************************************/ 
 
#include <mega8.h>  
#include <delay.h>  
#define FIRST_ADC_INPUT 0  
#define LAST_ADC_INPUT 0  
#define SET_B(x) |= (1<<x)  
#define CLR_B(x) &=~(1<<x)  
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];  
#define ADC_VREF_TYPE 0x20  
unsigned int count,count1,count2,m,i; 
interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR  
{  
static unsigned char input_index=0;  
// Read the 8 most significant bits  
// of the AD conversion result  
adc_data[input_index]=ADCH;  
// Select next ADC input  
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))  
input_index=0;  
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;  
// Delay needed for the stabilization of the ADC input voltage  
delay_us(10);  
// Start the AD conversion  
ADCSRA|=0x40;  
}  
void main(void)  
{  
count=0; 
count1=0; 
count2=0; 
m=0; 
 
PORTB=0x00;  
DDRB=0xFF;  
 
PORTD=0x00; 
DDRD=0xFC; 
PORTB = 0b11111111; 
 
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);  
ADCSRA=0xCC;  
#asm("sei")  
delay_ms(200); 
while (1)  
{  
 
if (PIND.0==0) {count2=count2+1;while(PIND.0==0){};} 
if (count2==2) { 
 
 
 
PORTD SET_B(7); 
count=count+1; 
delay_ms(50); 
 
if (count==1) {while (PIND.1==1) {PORTB = 0b00000000;}}  
 
if (count==2) {while (PIND.1==1) {PORTB = 0b00000001;}} 
 
if (count==3) {count=0;} 
 
count1=count1+1; 
 
count2=0; 
PORTB = 0b11111111; 
PORTD CLR_B(7); 
}; 
 
 
};  
} 
Не включается условие count==2 Работает только при count==1

Тестил в (Шпроте) там все нормально

Может что то с Ватчдогом , надо юзать?

Пробывал reset (1)

АЦП может как то влиять ?
Контактная информация:
Реклама
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Сообщение Murav »

Alexonus писал(а):Может что то с Ватчдогом , надо юзать?
Он включен?
Реклама
Родился
Сообщения: 13
Зарегистрирован: Ср апр 29, 2009 10:10:42
Откуда: Киев

Сообщение Alexonus »

нет. А его нужно всегда включать?
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

Просто Вы невнимательны в написании программы. Включите подсветку парных операторных скобок "{" и "}" и проверьте свою программу. Оформите исходный код красиво, в соотв. с каким-нибудь стилем, и у Вас больше не будет таких проблем.

P.S. Вачдог не должен быть включен, если программа не написана с его использованием, т.е. у Вас он должен быть ВЫКЛЮЧЕН.

P.P.S. Указывать Вам на Вашу ошибку прямо не имеет смысла, т.к. через 10 минут после исправления этой, у Вас возникнет такая же, в другом месте.
Giggity giggity goo!
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Судя по коду вы пишите в CodevisionAVR - он не подсвечивает скобок... у Вас в них проблема. Воспользуйтесь Notepad++, CodeBlocks, Eclipse - и Ваша ошибка будет ясна.
Today fine night...
Реклама
Родился
Сообщения: 9
Зарегистрирован: Сб сен 25, 2010 20:36:36

Сообщение maximkamiass »

Mamonth писал(а):Судя по коду вы пишите в CodevisionAVR - он не подсвечивает скобок... у Вас в них проблема. Воспользуйтесь Notepad++, CodeBlocks, Eclipse - и Ваша ошибка будет ясна.
В новой версии коде вижн есть подсветка скобок.
Реклама
Родился
Сообщения: 13
Зарегистрирован: Ср апр 29, 2009 10:10:42
Откуда: Киев

Сообщение Alexonus »

Ну вот как может быть проблема в скобках если, в (Шпроте) все работает....
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Со скобками у Вас всё в порядке. К Вам один вопрос.
Не включается условие count==2
С чего Вы это взяли ? Не забывайте, протеус далеко не железо !
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»