Forum: Mikrocontroller und Digitale Elektronik Analogwert einlesen funktioniert nicht (C515C)


von Martin S. (drunkenmunky)


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?

von Martin S. (drunkenmunky)


Lesenswert?

hat denn niemand einen Tip?

 Ist zwar ein 8051er aber ja eigentlich keine spezielle Frage...

was könnte ich noch kontrollieren/ausprobieren?

von R. W. (quakeman)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.