Thông báo

Collapse
No announcement yet.

Giao tiếp ADC với ATTINY85

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Giao tiếp ADC với ATTINY85

    Nhờ các bạn giúp mình với, mình đang định làm một mạch dùng AVR TINY85 với mục đích như sau:
    - Nếu điện áp vào ADC1>200mA thì led trê PB1 sẽ sáng
    - Mình đã viết chương trình chạy được trên Protues nhưng khi nạp IC thực tế lại không chạy,
    - Đây là chương trình của mình:

    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V1.24.8d Professional
    Automatic Program Generator
    © Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 5/26/2010
    Author : F4CG
    Company : F4CG
    Comments:


    Chip type : ATtiny85
    Clock frequency : 12.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 128
    ************************************************** ***/

    #include <tiny85.h>
    #include <delay.h>

    #define FIRST_ADC_INPUT 0
    #define LAST_ADC_INPUT 1
    unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
    #define ADC_VREF_TYPE 0x30

    // ADC interrupt service routine
    // with auto input scanning
    interrupt [ADC_INT] void adc_isr(void)
    {
    register 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)+input_index;
    // Start the AD conversion
    ADCSRA|=0x40;
    }

    // Declare your global variables here
    /***********Ham so sanh***********/
    void sosanh(unsigned char adc)
    {
    unsigned char so;
    so=adc;
    if (so>0x0F)
    PORTB.1=1;
    else
    PORTB.1=0;
    }
    void main(void)
    {
    // Declare your local variables here

    // Crystal Oscillator division factor: 1
    #pragma optsize-
    CLKPR=0x80;
    CLKPR=0x00;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif

    // Input/Output Ports initialization
    // Port B initialization
    // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In
    // State5=T State4=T State3=T State2=T State1=0 State0=T
    PORTB=0x00;
    DDRB=0x02;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0A output: Disconnected
    // OC0B output: Disconnected
    TCCR0A=0x00;
    TCCR0B=0x00;
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFh
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Timer 1 Overflow Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    PLLCSR=0x00;
    TCCR1=0x00;
    GTCCR=0x00;
    TCNT1=0x00;
    OCR1A=0x00;
    OCR1B=0x00;
    OCR1C=0x00;

    // External Interrupt(s) initialization
    // INT0: Off

    // Interrupt on any change on pins PCINT0-5: Off
    GIMSK=0x00;
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Universal Serial Interface initialization
    // Mode: Disabled
    // Clock source: Register & Counter=no clk.
    // USI Counter Overflow Interrupt: Off
    USICR=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    ACSR=0x80;
    ADCSRB=0x00;

    // ADC initialization
    // ADC Clock frequency: 750.000 kHz
    // ADC Voltage Reference: 2.56V, AREF discon.
    // ADC Bipolar Input Mode: Off
    // ADC Reverse Input Polarity: Off
    // ADC Auto Trigger Source: None
    // Only the 8 most significant bits of
    // the AD conversion result are used
    // Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
    DIDR0&=0x03;
    DIDR0|=0x00;
    ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
    ADCSRA=0xCC;
    ADCSRB&=0x5F;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    // Place your code here
    sosanh(adc_data[1]);
    delay_ms(30);
    };
    }

    Mình có gởi kèm mạch nguyên lý, nhờ mấy pro giúp với. Thanks!
    Attached Files

  • #2
    bạn cho mình hỏi chút, bạn mua con ATtiny85 ở đâu vậy, giá của nó là bao nhiêu ?

    Comment


    • #3
      cach nap cho attinyX5

      Các bạn cho mình hỏi cách nạp cho con ATTINYX5 với. Thanks
      Nhận vẽ mạch in ^_^
      TEL: 0167 4500 365
      Mail:

      Comment


      • #4
        Sao không có ai giúp mình vậy mình đang cần gấp
        Nhận vẽ mạch in ^_^
        TEL: 0167 4500 365
        Mail:

        Comment


        • #5
          viet bai roi bo chon dung co ai giup meber kieu nay

          Comment

          Về tác giả

          Collapse

          baptrang Tìm hiểu thêm về baptrang

          Bài viết mới nhất

          Collapse

          • Andrea14
            Vấn đề về tốc độ quay
            bởi Andrea14
            Chào mọi người,

            Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
            Hôm qua, 12:42
          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          • afrendly
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi afrendly
            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
            04-12-2025, 01:27
          Đang tải...
          X