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

 
 
> Подключения АЦП, Глючит и ничего не показывает
AnKing
сообщение Feb 3 2008, 17:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 2-02-08
Пользователь №: 34 686



Задача: Собрать устройство которое будет выключать светодиод порта В при изменении освещения ниже допустимого уровня

Средства:
-Atmega8
-Фотодиод ФД265А
-LCD Для вывода резцльтата ацп на экран

Реализация:
Подключаю AVCC, AREF, длинную ногу фотодиода к +5V
AGND к GND;

PC0(ADC0) подключаю к короткой ноге фотодиода и через резистор 5КОм в GND

Код программы на С:
Код
#include <mega8.h>
#include <delay.h>
#include <stdlib.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x12;PORTD
#endasm
#include <lcd.h>

// Declare your global variables here

char sstr[10];

interrupt [ADC_INT]  void  adc_isr(void)
{
PORTB = (1<<0);
lcd_gotoxy(0,1);
lcd_putsf("RABOTAET");
lcd_gotoxy(0,0);
lcd_putchar(ADCH);
//delay_ms(127);
//ADCSRA|=0x40;
#asm ("cli")
}

void __init_mk(void) {
DDRB=0xFF;
PORTB=0xFF;

ADCSRA=0x8F;

ADMUX=0;

#asm("sei")
}


void main(void)
{
lcd_init(16);

lcd_clear();

__init_mk();

ADCSRA|=0x40;

while (1)
      {
      PORTB = (1<<0);
      lcd_gotoxy(7,1);
      //lcd_putchar(rand());
      itoa(rand(),sstr);
      lcd_puts(sstr);
      lcd_gotoxy(13,1);
      lcd_putchar(sstr[2]);
      delay_ms(25);
      
ADCSRA|=0x40;
      PORTB = (0<<0);
      delay_ms(150);
      };
}

Прерывания повторяются нормально, но вот число выводимое на дисплей - константно и равно - 838(с каким-то странным префиксом - черный квадрат без двух точек внизу слева)

Что я сделал неправильно?
Go to the top of the page
 
+Quote Post



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

 


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


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