mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC - immer bizarre Werte


Autor: Michael H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe einen ADC an einem Mega8 und mir dazu die passende LIB 
geschrieben. Leider bekomme ich vom ADC nur Mist.

ADC läuft mit Prescaler 128, Quarz ist 14,xx MHz. Die ausgelesenen werte 
schicke ich mir über RS232.

Protokollerklähring: 0xaa steht für anfang, dann folgen die zwei Werte, 
dann 0xee für ende.

======================
00000000: aa 00 40 ee
aa 00 40 ee
aa 00 40 ee
aa 00 c0 ee

00000010: aa 00 c0 ee
aa 00 00 ee
aa 00 40 ee
aa 00 00 ee

00000020: aa 00 c0 ee
aa 00 80 ee
aa 00 80 ee
aa 00 80 ee

00000030: aa 00 00 ee
aa 00 80 ee
aa 00 c0 ee
aa 00 80 ee
=======================

Das ganze zieht sich so immer weiter.

Meine ADC datei ist im Anhang.

adc.c hänge ich in den Anhang, main folgt hier:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "leds.h"
#include "edelay.h"
#include "adc.h"
#include "usart.h"

void main(void){
d  // INITZILASATION
  led_green_on();
  adc_init(0);
  adc_activate(1);

  usart0_init();


  while(1){

    usart0_putc(0xaa);
    //highvoltage_control();
    unsigned int send;
    send=adc_read_and_null(0);
    usart0_putc(send<<8);
    usart0_putc(send);
    usart0_putc(0xee);
    for(i=40;i;i--){
      edelay(64000);
    }



    if(send<256){
      led_yellow_off();
      led_green_off();
      continue;
    }else if(send<512){
      led_yellow_off();
      led_green_on();
      continue;
    }else if(send<768){
      led_yellow_on();
      led_green_off();
      continue;
    }else{
      led_yellow_on();
      led_green_on();
      continue;
    }

  }


  while(1);
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
>     send=adc_read_and_null(0);
>     usart0_putc(send<<8);

So wird das auch nichts, wenn du dir die Highbits links rausschiebst.

Lass dir doch das Zeugs im Klartext ausgeben. Du bist ein Mensch, du 
willst lesbare Zahlen haben!
void usart_puts( const char* s )
{
  while( *s )
    usart_putc( *s++ );
}

int main()
{
...
   char buffer[10];
....

      send=adc_read_and_null(0);
      sprintf( buffer, "%d ", send );
      usart_puts( buffer );
....


Autor: Michael H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, das habe ich mal gemacht;Prefix ist immer Val
online
Val 747
Val 575
Val 580
Val 578
Val 574
Val 587
Val 572
Val 594
Val 571
Val 599
Val 572
Val 600
Val 577
Val 599
Val 585
Val 593
Val 591
Val 584
Val 598
Val 579
Val 604
Val 580
Val 606
Val 579
Val 604
Val 585
Val 601
Val 590
Val 595
Val 599
Val 587
Val 607
Val 583
Val 608
Val 582
Val 608
Val 583
Val 607
Val 589
Val 600
Val 596
Val 592
Val 604
Val 586
Val 608
Val 584
Val 610
Val 581
Val 607
Val 584
Val 602

Der Wert ist unabhängig von der Spannung. Diese liegt am ADC an. Der 
Chip ist auch komplett neu.

Autor: Michael H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jipphipp hura, es geht... es scheint, als sei in meiner Lib noch ein 
Fehler mit der Kanalwahl...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.