Forum: Mikrocontroller und Digitale Elektronik Atmel Atmega644p (Crumb644 v1.1) mit PCF8591 Problem


von Michael R. (blackr0xx)


Angehängte Dateien:

Lesenswert?

Hallo,
also ich muss für ein Schulprojekt mit einem uController (Crumb644 v1.1 
mit Atmega644p) einen PCF8591P so ansteuern, dass ich am Ende einen 
Sinus erzeugen kann.

Ich habe einen dementsprechenden Schaltplan entworfen und die Platine 
nach einer Überprüfung eines Lehrers auch gebaut.
So, es ist mir möglich den AD/DAC anzusteuern jedoch macht er nicht 
das,was ich will.

Aus dem Datenblatt habe ich die Information, dass ich zuerst ein 
Adressbyte schicken muss (bei mir 0x90, da der fest vorgesehene Teil 
(1001) und mein Adressteil (0000) sind). Nach diesem wird ein 
Kontrollbyte geschickt mit meiner Info, dass ich analoge Spannungen 
ausgeben will also 0x40 (da Datenblatt sagt 0100 0000) und dann der Wert 
zB 128.
Wenn ich den Chip jedoch ansteuere schießt er entweder auf Vcc (+5V) 
oder auf AGND (bei meinen Jumpern jetzt GND).

Ich benutze die I2C-Library von Peter Fleury, eine UART-Lib meines 
Lehrers, welche aber sicher funktioniert und habe im Anhang den 
Programmcode meiner Main gepostet.

Kann mir bitte jemand helfen ich bin nämlich schon seit einem Monat am 
verzweifeln.

Danke schon im Voraus
LG Michael

von Michael R. (blackr0xx)


Lesenswert?

Hat denn wirklich niemand eine Ahnung was das Problem sein könnte?

von holger (Gast)


Lesenswert?

>Hat denn wirklich niemand eine Ahnung was das Problem sein könnte?

AGND? Wenn du das an -5V angeschlossen hast ist der Chip im Arsch.

von holger (Gast)


Lesenswert?

Und miss mal die Spannung an Vref.

von Michael R. (blackr0xx)


Lesenswert?

Ok,

Danke für die Antworten.
Ich werde mir in der Schule mal nen neuen IC besorgen und es nochmal 
testen.
Aber die Schaltung müsste/sollte doch eigentlich ohne Probleme 
funktionieren, wenn ich den AGND-Jumper auf GND hänge, oder?

von Jobst M. (jobstens-de)


Lesenswert?

Michael R. schrieb:
> Aber die Schaltung müsste/sollte doch eigentlich ohne Probleme
> funktionieren, wenn ich den AGND-Jumper auf GND hänge, oder?

Du solltest alle Jumper um Deinen DAC/ADC auf Masse setzen.
Den AGND-Jumper, die Adressjumper und alle unbenutzten Eingänge.
Dann sollte bei korrekten Daten auf dem I²C-Bus alles laufen.

Also:
1. START senden
2. 90h senden (Adresse + Write)
3. ACK bekommen? Ja, dann weiter, sonst Fehlerbehandlung
4. 40h senden
5. ACK bekommen? Ja, dann weiter, sonst Fehlerbehandlung
6. Datenbyte senden
7. ACK bekommen? Ja, dann weiter, sonst Fehlerbehandlung
8. Weitere Daten vorhanden? Ja, dann zu 6, sonst weiter
9. STOP senden


Gruß

Jobst

von Michael R. (blackr0xx)



Lesenswert?

Hallo,
Ich habe mich lange nicht gemeldet, da es mir schon langsam zu 
anstrengend wurde, jedoch habe ich es jetzt geschafft alles zum Laufen 
zu bekommen.

Der Fehler lag in der Bibliothek von Peter Fleury, welche eindeutig 
nicht funktionierte. Das bemerkte ich als ich einmal mit dem Oszilloskop 
zum Messen kam. Dabei sah ich, dass auf der SCL-Leitung ein unglaublich 
verzerrter Takt gelegen ist.

Nun habe ich eine andere gefunden und es endlich geschafft meinen Sinus 
auszugeben, auch wenn er gerade mal 4Hz schafft.

Im Anhang schmeiß ich mal mein Programm, ein Oszi-Bild und ein 
AtmelStudio6 Template für alle die nach mir auch so ein Projekt machen 
wollen oder müssen. :D

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.