Analogwert einlesen funktioniert nicht (C515C)

OP #1687302
Lesenswert?
• ▲
▼
Hallo,
habe ein miniMODUL-515C der Firma Phytek:
http://www.phytec.de/fileadmin/user_upload/downloads/Manuals/L-230D.pdf

Controller ist der C515C von Infineon drauf. Programmieren tu ich mit 
Keil uVision4.

Ich hab mal ein kleines Programm geschrieben, das mit dem Simulator von 
Keil auch wunderbar funktioniert, nur beim Testen auf dem Board nicht.
1
/******************* Text im Quelltext einbinden *********************/
2
#include<stdio.h>
3
#include <reg515c.h>
4

5
/*************************** Konstanten ******************************/
6

7
/*********************** globale Variablen ***************************/
8

9
/************************ Hauptprogramm ******************************/
10

11
sbit P40 = P4^0;   //Definition Port-Pin 4.0
12
sbit P41 = P4^1;   //Definition Port-Pin 4.1
13
sbit P42 = P4^2;   //Definition Port-Pin 4.2
14
sbit P43 = P4^3;   //Definition Port-Pin 4.3
15
  
16
int aduwert(char kanal)
17
{
18
  ADCON1 = kanal;
19
  ADDATL = 0;   // ADU starten
20
  while(BSY);    //auf Wandlungsende warten
21
  return((ADDATL>>6)+ADDATH*4);
22
}
23
      
24
void main(void)
25
{    
26
  int analogwert_AN0;
27
  float spannung0;
28
     
29
  ADEX = 0;    //interner Wandlungsstart
30
  ADM = 0;    //keine kontinuierliche Wandlung
31

32
  while(1)
33
  {
34
      while(BSY);
35
     analogwert_AN0 = aduwert(0);     //Analogwert einlesen lassen
36
    
37
         
38
    spannung0 = 5 * ((float)analogwert_AN0/1024);    //Analogwert umrechnen auf Eingangsspannung bei 5V Referenzspannung
39
            
40
    if(spannung0 > 1.0)
41
      P40 = 0;
42
    else
43
      P40 = 1;
44

45
    if(spannung0 > 2.0)
46
      P41 = 0;
47
    else
48
      P41 = 1;
49
    
50
    if(spannung0 > 3.0)
51
      P42 = 0;
52
    else
53
      P42 = 1;
54
  }

Zum Testen habe ich ein 100k Poti auf +5V und GND gehängt und den 
Schleifer auf den Eingang. Ist 100k vielleicht zuviel?

Als Referenzspannung habe ich die Jumper so gelassen wie sie auf dem 
Board waren, was bedeutet, dass 5V Versorgungsspannung als Ref-Spg 
dient.

Versteht ihr des auch so, dass Pin 80 des Boards An0 ist?

An was könnte es noch liegen?
#1687901
Lesenswert?
• ▲
▼
Zum leichteren Debuggen des Problems würde ich dir empfehlen, Ausgaben 
(Position, Variablen) per RS232 an allen wichtigen Stellen im Code 
einzufügen. Anhand dieser Ausgaben kannst du dann schon mal sagen, was 
an welcher Stelle genau passiert. Somit lässt sich das Problem recht gut 
eingrenzen.

Ciao,
     Rainer

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.