Forum: Mikrocontroller und Digitale Elektronik ATmega16: Probleme bei der Analogumwandlung und beim I2C Bus


von Bernd H. (bernd_h)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich mache zur Zeit eine Technikerausbildung per Abendschule und bin 
gerade mitten in der Projektarbeit (viele von Euch werden den Stress 
kennen)
Wir wollen für das Projekt eine Steuerung für eine Photovoltaik-Anlage 
entwickeln, bei der sich die Anlage automatisch der Sonne nach 
ausrichtet. Soweit klappt mittlerweile das meiste, allerdings komme ich 
nun an einen Punkt bei dem ich den Wald vor lauter Bäumen nicht sehe. 
Ich bin für die Programmierung von zwei Mikrocontrollern zuständig, 
beide befinden sich in unterschiedlichen Platinen, welche Zustände 
miteinander austauschen sollen. Nun zu meinen Problemen:

1. Meine Steuerplatine soll die Analogwerte von zwei IR Sensoren 
erfassen, dann bestimmen welcher den höheren Wert hat und demnach die 
Anlage drehen. Die IR Sensoren werden durch eine 
Stromverstärkerschaltung verstärkt und der MC(ATmega16) misst den 
Ausgang der OPs.
Mit einem Jtag MK2 Nachbau der Firma sure-electronics kann ich sehen das 
Werte erfasst werden, komischerweise macht der MC bei Werten unter 200mV 
nichts (obwohl ich die Werte im Ruhezustand jtaggen kann)
Versuche ich die Werte, nach einer Berechnung, mit Pointer zu übergeben 
(wie im Anhang) passiert auch mit höheren Werten nichts oder nur ruckeln 
der Motoren als ob das Programm die Schleife einfach unterbrechen würde.

2. Beim I2C Bus bekomme ich zwar von der Masterplatine die Meldung, dass 
der Bus i.O. ist, ich kann jedoch weder ein Signal mit einem 
Signalanalyser messen noch bekomme ich die richtigen Werte von der 
Slaveplatine übermittelt. Mir kommt es manchmal sogar so vor, als ob der 
Bus eine Art Kurzschluss bilden würde (Pullups 4,7k).


Ich bin, was die C Programmierung angeht noch ein ziehmlicher Neuling, 
was die Mikrocontrollerprogrammierung angeht erst Recht. Ich habe jedoch 
in den letzten Monaten viele Bücher und Datenblätter gewälzt und denke, 
dass ich das meiste schon Recht gut verstanden habe. Ich wäre sehr 
dankbar wenn mir einer einen Tip geben könnte oder wenigstens mal über 
das Programm drüber schaut und mir sagen kann "Ne, das kannst du so 
nicht machen, mache das lieber..."
Eine weitere Sache die mich wundert, ist das ich viele Variablen als 
volaitile definieren muss, da sie mir ansonsten keinen Wert anzeigen. 
Ich habe für die Optimierung nur -Os (optimize for size) ausgewählt ist 
das vielleicht schon falsch?
Legt nicht viel Wert auf die Kommentare, bei manchen muss ich die 
Berechnungen neu machen, da wir in letzter Zeit viel getestet und somit 
geändert haben.
Ich bekomme übrigens keine Fehler und nur die Warnung:

Das Ziel "PostBuildEvent" wurde übersprungen, da die Bedingung "false" 
war . ('$(PostBuildEvent)' != '') wurde als ('' != '') ausgewertet.

Vielen Dank im voraus

von Bernd H. (Gast)


Lesenswert?

Kann mir hier wirklich keiner einen Tip geben oder wenigstens mal über 
den Code drüberfliegen?
Ich wäre für jede Hilfe dankbar, da die Zeit langsam knapp wird.

von Lena (Gast)


Lesenswert?

Hallo Bernd,

hast du schon eine Lösung für dein Problem:

Das Ziel "PostBuildEvent" wurde übersprungen, da die Bedingung "false"
war . ('$(PostBuildEvent)' != '') wurde als ('' != '') ausgewertet

gefunden?
Ich habe gerade das gleiche Problem und finde auch keine Lösung

von Bernd H. (Gast)


Lesenswert?

Hallo Lena,
ich habe zwar noch keine Lösung dafür gefunden, denke jedoch, dass es 
nicht so wichtig ist. Ich denke, dass er einfach nur einige Dateien 
nicht abgelegen kann.
Hast du denn das Problem, dass kein Hex-File erzeugt wird ? Das kannst 
du nämlich unter den Properties einstellen.

Grüße
Bernd

von Lena (Gast)


Lesenswert?

Hallo Bernd,

danke für deine schnelle Antwort.
Ja, ich habe das Problem, dass kein .hex-File erzeugt wird. Ich verwende 
allerdings ein externen Makefile und dann ist die Einstellung bei den 
Properties nicht verfügbar.

Gruß Lena

von Bernd H. (Gast)


Lesenswert?

Hallo Lena,
ich habe es gerade bei mir getestet, die Einstellungen werden 
tatsächlich ausgeblendet. Mit einem externe Makefile habe ich keine 
Erfahrungen, sorry.

Wofür brauchst du den überhaupt ein externes Makefile? Wird dein 
Programmer nicht unterstützt oder dein Jtagger?

Wie gesagt ist vielleicht nur eine dumme Frage aber ich zähle mich auch 
eher als Neuling auf dem Gebiet.

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.