Forum: Mikrocontroller und Digitale Elektronik AD-Wandler Problem


von Steffen Burr (Gast)


Lesenswert?

Hallo!
Ich hab schon wieder eine Frage. Dürfte aber glaube ich einfach zu 
beantworten sein.

Ich programmiere den AT90S4433 in Assembler.
Ich möchte den internen 10 bit AD Wandler nutzen.
Folgende Schltung:

VCC ----|
        _10k
       | |
       | |<----- PC3
       |_|
        |
GND ----|

Mit dem folgenden Programm wollte ich den Wert auslesen.
ADCL habe ich dann auf einem LCD ausgegeben (dieser Teil fehlt im 
Sourcecode). Ich bekomme immer den Wert 255, egal was für eine 
Potieinstellung.

.include "4433def.inc"

.def temp1 = r16
.def data_h = r17
.def data_l = r18


        ldi temp1, RAMEND     ; Stackpointer initialisieren
        out SPL, temp1

  ldi temp1, 0x11110111    ; Port C = Aus- und Eingang (PC3 AD-Wandler)
        out DDRC, temp1

  cbi ADMUX, 6             ; Bandgap ausschalten
  cbi ADMUX, 2             ; PC3 als AD EIngang definieren
  sbi ADMUX, 1
  sbi ADMUX, 0

  ldi temp1, 0b11100101    ; Interrupts ausschalten, AD-Wandler 
Freerunmode
  out ADCSR, temp1   ;    einschalten, Prescaler auf 32 schalten

  rcall delay50us


main:
  in temp1, ADCL       ; gemessenen Wert einlesen
  mov data_l, temp1

  in temp1, ADCH
  mov data_h, temp1

  rjmp main


delay50us:                              ;50us Pause
           ldi  temp1, $42
delay50us_:dec  temp1
           brne delay50us_
           ret                          ;wieder zurück

Ich hoffe, ihr könnt mir helfen!

Vielen Dank.
Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Steffen

In dieser Zeile gibts du einen Hex Wert aus. Soll so bestimmt nicht 
sein. Tausche das x mal gegen ein b.

  ldi temp1, 0x11110111 ;
     out DDRC, temp1

Sonst kann ich im Simulator auf Anhieb keine Fehler finden.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Mensch, bin ich blöd ...
Jetzt funktionierts .... Hab gerade gemerkt, dass ich vergessen hab, 
AREF auf VCC zu legen. ;-)

Ich hab die beiden Bytes auf dem Dislay ausgeben lassen.

Komisch ist, dass bis die Spannung auf ca. 3,6 Volt angestiegen ist der 
zurückgegebene Wert Null ist. Und bei 4,6 V ist schon Schluss!

Außerdem kann das high byte nur 0, 1 und 3 als Werte asnnehmen.

Jemand ne Ahnung, woran das liegen könnte ??

von Steffen Burr (Gast)


Lesenswert?

Danke Dieter ...
hab ich noch gar nicht gemerkt - war aber wohl nicht schlimm.

Vielleicht hast du ne Ahnung, weswegen nur ein kleiner Bereich 
ausgewählt wurde ??

Thx

von Dieter Brüggemann (Gast)


Lesenswert?

Geb die AD Werte doch mal über den UART auf den PC aus. Vielleicht hast 
du noch einen Fehler in der Umrechnung. In dem Terminal Prg. kann man 
dann die Werte genau verfolgen und dann weiter eingrenzen.

AGND und AVCC sind aber beschaltet ?

MFG

Dieter

von Steffen Burr (Gast)


Lesenswert?

Die Umrechnung stimmt - funktioniert bestens. Nur dass eben von 0 - 3,3 
V der Wert 0 zurückgegeben wird.

AGND hab ich auf GND gelegt und AVCC auf VCC.

Wie kann das sein, das der Bereich eingegrenzt ist?

von Dieter Brüggemann (Gast)


Lesenswert?

Eingegrenzt ist er nicht.

Bei 0 Volt bekommst du eine 0 zurück und wenn der Wert am Pin
= AREF dann bekommst du halt 1023 zurück in 2 Bytes.

Wert = ADCL + ( ADCH *256) wenn ich mich richtig entsinne.

Nimm doch zur Kontrolle einen anderen PIN zu eingrenzen des Fehlers.

Habe das selbe Programm gerade in C geschrieben und habe keine Probleme

MFG

Dieter

von Steffen Burr (Gast)


Lesenswert?

Ich probiers mal kurz, poste dann gleich, obs geklappt hat ...

von Steffen Burr (Gast)


Lesenswert?

So, hab die AD Wandlungsspannung an PC4 angeschlossen - immer noch das 
selbe Problem.

Was könnte ich noch machen, um das Problem zu finden ??

von Dieter Brüggemann (Gast)


Lesenswert?

Ändere dein Porgramm doch erstmal auf Single Run Modus.

Vielleicht kommst du damit erstmal zu einem richtigen Ergebniss.

ADFR Löschen = Single Modus
ADSC zum starten der Wandlung setzen und dann abfragen bis gelöscht ist. 
Dann ist die Wandlung vollzogen.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Vielleicht bringt es was, wenn ich schildere, was genau zu sehen ist:

bei 3,3 V fängt er an zu zählen

bei 4,3 V hat er 255 erreicht, das high byte hat ist auf 0

bei 4,5 V zeigt er 255 an und das high byte liegt bei 1

bei 4,6 V ist das low byte bei 255 und das high 3

dann ist schluss ....

sieht irgendie exponetiell aus ...
Was ist da los

von Steffen Burr (Gast)


Lesenswert?

Auch in der Single Conversion Mode siehts genau so aus ...

von Dieter Brüggemann (Gast)


Lesenswert?

Mit welchem Takt arbeitest du den ??

Wie hoch ist die Spannung AREF = VCC = 5 Volt ??

Schick dein Porgramm doch mal mit.

MFG
Dieter

von Steffen Burr (Gast)


Angehängte Dateien:

Lesenswert?

AT90S4433 mit 4MHZ

Spannung beträgt AREF = AVCC = VCC = 5V

Programm ist im Anhang!

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Was mir im ersten Moment aufgefallen ist, ist die Abfrage od ADSC 
gelöscht ist.

Zeile 42
AD_busy:  sbic  ADCSR,ADSC  ;Flag da?, busy?
rjmp  AD_busy    ;springt raus, wenn fertig

Sollte so aus sehen, meine ich. Das ADSC setzt du ja zum starten der 
Wandlung. Die Hardware löscht ADSC wenn die Wandlung fertig ist.


MFG
Dieter

von Steffen Burr (Gast)


Angehängte Dateien:

Lesenswert?

Habs geändert, ist aber immernoch identisch wie vorher ...

Im Anhang ist ein Bild, in dem ich mal die zurückgelieferten Werte auf 
die anliegende Volt aufgetragen habe ...

Sieht do ziemlich logarithmisch aus, oder ??

von Dieter Brüggemann (Gast)


Lesenswert?

Teste das Programm gleich mal auf meinem Board.
Muß jetzt aber mal schnell weg.

Takte leider mit 8 MHz daher muß ich noch ein paar delays einbauen. 
Melde mich wieder, wie es bei mir aussieht.

Kenne solche Probleme auch. Ist blöd, wenn man so was nicht ans laufen 
bringt. Kriegen wir aber hin.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

DANKE !!!

von guenter Lintzmeyer (Gast)


Angehängte Dateien:

Lesenswert?

VCC ----|
        _10k
       | |
       | |<----- PC3
       |_|
        |
GND ----|

***************************************************

Hallo Steffen Burr

Zu Deinem eigentlichen Problem kann ich leider nichts beitragen, da ich 
erst am Anfang meiner Überlegungen stehe (und außerdem mein Programm in 
BASCOM erstellen werde) aber...

wie ist die, in Deinem ersten Posting enthaltene Schaltung zu verstehen 
?

Gehe ich richtig in der Annahme, daß als Widerstand ein Poti
mit 10 k verwendet wird ?

Als Anlage habe ich eine auf einer Lochraster-Platine aufzubauende 
Schaltung beigefügt.
Kannst Du mal prüfen, ob der Aufbau so o.k. ist ???

Vielen Dank im Voraus

Günter

von Steffen Burr (Gast)


Lesenswert?

Hallo Günter,

Ich habe einen Poit als Widerstand zwischen GND und VCC angeschlossen. 
Der Schleiferkontakt hab ich als Spannungsteier an den AD Wandler 
gehängt.
Genau so wie in deinem Attachment habe ich meine Schaltung auch 
aufgebaut (wenn auch nicht auf einem Lochraster, da ich mir ein 
Developerboard geätzt habe).

Nur leider siehst du, dass bei mir das so nicht so gut funktioniert. Am 
besten du verfolgst mal den Beitrag hier weiter ;-)

Vielleicht kannst du das mal so aufbauen und dann berichten, obs so 
funktioniert hat! Viel Erfolg!

Grüße Steffen

PS: Vielleicht gibts hier im Forum noch jemand, der mir bei meinem 
Problem weiterhelfen kann.

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Steffen

Dein Programm sieht soweit ganz gut aus. Habe es bei mir aufgespielt und 
den selben Fehler gehabt. Nach der Änderungen folgender Zeilen läuft es 
so, wie du dir das vorstellst. Bei mir zumindest. Frage mich im Moment 
nicht wieso. ist solange her mit ASM. Programmiere jetzt in C und mit 
Bascom.

Loop:
          sbi ADCSR, ADSC
AD_busy:  sbic  ADCSR,ADSC  ;Flag da?, busy?
    rjmp  AD_busy    ;springt raus, wenn fertig


    in data_l, ADCL  ; gemessenen Wert einlesen
    in data_h, ADCH

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Hallo Dieter,

ich hab das Programm gerade so abgeändert ... Nur getan hat sich nichts 
...

Kannst du mir den Quelltext von dir mal posten ?? Ich hab gestern abend 
nochmal rumgespielt und vielleicht irgend was anderes noch geändert ...

Viele Grüße
Steffen

von Dieter Brüggemann (Gast)


Angehängte Dateien:

Lesenswert?

Klar ist ja deins. Folgende Änderungen habe ich aber gemacht, da meiner 
mit 8 MHz taktet und die LCD auf PORT B liegt.

Also Enable Pin geändert, RS Pin geändert, alle Delayschleifen doppelt 
drin, PORT D auf Port B gelegt

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Habs kurz draufgespielt - aber ohne Erfolg. Der Ausgabewert stimmt immer 
noch nicht ...

hast du vielleicht ein C programm oder bascom programm, das ähnliches 
macht, das du mir als hex datei zuschicken könntest ...

oder ne andere Idee worans liegen könnte ??

Ist das OK, dass ich AVCC und AREF einfach mit VCC zusammengeschlossen 
hab ??

Grüße
Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Schau mal in das Datenblatt von Atmel( Seite 70) . Es sollte ein 
Kondensator und eine Spule an AVCC angeschlossen sein. Ich habe nur 
einen Kondensator 100 nF nach Masse daran liegen.

Der Wert steht stabil im Display und stimmt auch.

Data_l nimmt Werte von 0 - 255 an
Data_h Werte von 0 - 3

Ich hatte auch noch den Port zum messen gewechselt, hast du aber 
bestimmt gemerkt.

Mit dem C Prg. ist das schwer für mich zu testen, da ich andere Pins 
beschaltet habe. Wenn ich da einen Fehler einbaue, suchst du dir noch 
einen Wolf.

Lad dir doch mal die Demo von Bascom runter, dann bauen wir zusammen ein 
Prg. zum testen. Ist in Basic Minutensache.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

hm. Atmel hat im Datenblatt aber glaub auch erwähnt, dass en nicht nötig 
ist, wenn PORTC auch als Ausgang dienen soll.

Die Werte sind absolut stabil!

ok, ich habs gerade runtergeladen ...

von Dieter Brüggemann (Gast)


Lesenswert?

Hast du denn eine serielle Schnittstelle auf deinem Board eingebaut. 
Dann kann man die Werte erstmal auf ein Terminal ausgeben.

Ja die Werte stehen absolut stabil in der Anzeige.

Schrieb mir, was du haben möchest zum probieren.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

ich hab mir zwar alles zum anschließen an die Serielle Schnittstelle 
besorgt, aber noch nichts dazu aufgebautr oder versucht.

Am liebsten wärs mir, wenn man einfach den wert einleist und anschließen 
irgendwie auf dem LCD ausgibt. Das ist genau so angeschlossen, wie in 
diesem Tutorial beschrieben.

Also AD Input muss ich Pins größer gleich PD3 nehmen, da PD0-PD2 belegt 
sind.

Grüße Steffen

von Dieter Brüggemann (Gast)


Angehängte Dateien:

Lesenswert?

So ein erster Test zum testen der LCD in Bascom, ob ich die Ports alle 
getroffen habe.

Angenommen, daß du 2 * 20 zeichen hast

Der Rest kommt danach.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Ich hab 4 * 20 Zeichen, aber das macht glaub ich nicht viel, oder ??

Danke!

von Steffen Burr (Gast)


Lesenswert?

OK, das Display funktioniert einwandfrei!

Grüße Steffen

von Dieter Brüggemann (Gast)


Angehängte Dateien:

Lesenswert?

So, nun der nächste Test mit ADC auf PIN C 3.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Ich hab so das Gefühl, dass es funktioniert ...
Nur die Ausgabe stimmt nicht so ganz.

So siehts auf m Display aus:

 Hallo Steffen Zeil
000      ADC Wertenu
en hat man nie
g, oder ?

Stimmt, ich wollte ein Display, das ich nicht in einem halben Jahr 
wieder rauswerfen kann, weils nichts taugt ;-)

Grüße Steffen

von Steffen Burr (Gast)


Lesenswert?

Ach ja, der Wert 000 flimmert total, wenn ich am Poti rumdreh geht er 
auff 150 aber flimmert immer noch, wenn ich aufhör zu drehen zeigt er 
wieder 000 an.

Der Pin ist PC4, oder ??

Grüße Steffen

von Dieter Brüggemann (Gast)


Angehängte Dateien:

Lesenswert?

Nein, der Pin sollte PC 3 sein. Chip 4433

Hier nochmal das Porgramm für 4 * 20 Zeichen.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

ok, jetzt funkitonierts ganz gut, auch wenn manchmal n wert über 6000 
dransteht.

Allerdings ist das ganze Problem wie vorher immernoch da ...
Bei allen Eingangsspannungen unter 3,6 V ändert sich der Wert nicht mehr 
...

Also dürfte es wohl nicht an der Software liegen, oder ??

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Glaube ich auch nicht.

Schlaf nochmal darüber und schaue dein Hardware nochmal durch.

Lasse den Port C mal ganz in Ruhe, bis der AD Wert stimmt.

Sonst weiß ich auch nicht mehr weiter. Deine Spannung wird ja 
hoffentlich stabil und gesiebt sein ? Oder du hast einen Massefehler.

MFG
Dieter

von Steffen Burr (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang ist das Boardlayout. Vielleicht siehst du nen Fehler.

Die Schaltung hab ich von dieser Seite.
Mit dem Port C mach ich nichts im Moment (hab nur schon Anschlüsse 
hingelötet).

Die Spannung ist stabil (erzeugt wie auf dieser Siete beschrieben. Der 
Wert schwankt ja auch nicht ...

Massefehler?? Dazu bräuchte ich eine nähere Beschriebung ... ;-)

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Das Layout sieht gut aus, bist ja bestimmt nicht der erste, der das 
nachbaut. Löte mal alle Lötstellen nach. Hast du noch einen 2. Chip zum 
tauschen ?

Porbiere mal aus, ob alle Pins auf Port c  als Ausgang und als Eingang 
noch gehen.

Baue selber alles auf Streifenraster auf, habe keine Lust zum ätzen.
Schade das wir nicht weiter kommen.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Einen 2. Chip hab ich im Moment leider nicht. Nachlöten kann ich mal ...

Also ich beschäftige mich jetzt seit etwa 2 Monaten mit 
Mikrocontrollern. Hab mir eben seither angeeignet, wie das LCD, der 
Timer normale Ein- und Ausgabe und Schrittmotoransteuerung. Ich arbeite 
darauf hin einen einfachen Roboter mit Laserpositionsvermessung zu 
bauen.

Dazu wollte ich folgendes 'Projekt' machen, um mich mit den Dingen 
bekannt zu machen. Über einen Poti kann die Drehzahl des Schrittmotors 
bestimmt werden, sowie die Umdrehungszahl pro Minute soll auf dem LCD 
ausgegebene werden ...

Alles funktioniert, nur der AD Wandler geht wohl nicht.

Ich wollte selbst die Platinen lieber ätzen (war auch das erste Mal, 
dass ich sowas gemacht hab ... Bisher hats bestens funktioniert!

Den Port C werd ich jetzt mal checken ...

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Hört sich ja gut an, was du so vor hast.

Habe früher auch alles in ASM programmiert, habe jetzt aber den Schritt 
zu C gemacht. Wenn einmal der Knoten geplatzt ist, geht es meiner 
Meinung nach schneller und ist am Ende besser zu überschauen. Man kann 
ja auch ohne Probleme ASM einbinden, wenn es sein muß.
Man bekommt für fast alles schon Lösungen angeboten, aus denen man viel 
lernen kann.
Wie hast du das den mit dem Laser vor?

In diesem Sinne
Dieter

von Steffen Burr (Gast)


Lesenswert?

Also als Ausgang funktioniert der Port C wunderbar.
Und PC3 als Eingang ebenfalls!

Ich hab im Moment ASM bevorzugt, da es einfach speichersparender ist als 
jeder C oder Basic Programm.
Außerdem denke ich, dass es mir ganz gut tut, die Algorithmen zu 
entwerfen - trainiert die Logik ;-)

Der Laser wird über einen Drehspiegel im Raum 'rumgeworfen'. An allen 
vier Ecken sind Reflektoren  - der Laserstrahl wird wieder empfangen. 
Der Drehspiegel wird mittels Schrittmotor gedreht, damit können die 
Winkel zwischen den Reflektoren ausgerechnet werden, sowie die Position 
im Raum und die Richtung des Roboters.

Vielleicht fällt dir ja noch irgendwann mal was ein, was mein AD Wandler 
zum laufen bringen könnte ;-)

Grüße Steffen

von Dirk (Gast)


Lesenswert?

Hi,

also ich betreibe den 8535 alle 8 ADC Ports benutze ich ...

Bei dem IC sollte man es wie folgt machen: (ich denke mal so sollte es 
Hardwaremaessig auch bei Dir sein)

AVCC = VCC ueber ein tiefpassfilter von 100 µH und 100 nF
Es steht im Datenblatt das die AVCC nur +-0,3 Volt sein darf deshalb nen 
LC Tiefpass.

AREF= Aref sollte nicht hoeher als AVCC sein.
AREF sollte man ueber eine Referenzspannungs Z-Diode machen z.B. LM336 
fuer 2.5 oder 5 V

ADC0-ADC7 : Die ADC Ports koennen also maximal die Referenzspannung 
messen ... Also AREF = 2.5 V ... ADC0 8 V
Das geht nicht!!! Der µC kann schaden nehmen und kannst die Spannung 
nicht messen.... Bau ein Spannungsteiler davor.... so das du mit der 
maximal Spg an den ADCs unter der REF Spg liegst... Nimm am besten 0,1 % 
Toleranzwiderstaende... es geht aber auch mit herkoemmlichen....

So eine Sache noch Softwaremaessig:

Wenn du die Ports abfragst om die Variabe zukriegen setzt danach ein Bit 
.... Dieses Bit solltest du abfragen und dann erst die naechste Messung 
beginnen lassen... Sonst kann es sein das aus deinem ADC0 ---> ADC1 wird 
....

Das sind ein paar Tips.... Ich messe 8 Spg. 10 mV genau obwohl meine 
Refspannung ueber ein Spg mit Trimmer eingetsellt wird....

Aber lass es die gesagt sein und nimm lieber ne LM336 am besten noch mit 
2 x 1N4148 zur Temp. stabilisierung. Dein A/D Wandler ist nur so genau 
wie deine REF Spg konstant ist


Mfg

Dirk


PS: Hab ne Function fuer die ADC Abfrage fuer 8 A/D Ports 10 Bit ... 
only Bascom

von Steffen Burr (Gast)


Lesenswert?

Hallo Dirk,

danke für deine Antwort!

Hast du mein Problem gelesen, dass ich zwar Werte bekomme, die sogar 
sehr konstant sind, aber erst bei 3,6 V anfangen.

Ich habe AVCC direkt an VCC gehängt, AGND direkt an GND. AREF hab ich 
genauso an VCC gehängt. Wie genau der Wert ist ist mir im Moment relativ 
egal noch ... Ich würde nur gern das Ding zum Laufen kriegen. Da ich 
auch für die Eingangsspannung VCC (geteilt über Poti) verwende, kann der 
Wert AVCC niemals übersteigen. Wie kann es sein, dass sich erst ab 3,6 V 
etwas tut? Ich denke nicht, dass es am fehlenden Tiefpassfilter liegt.
Kannst du dir das irgendwie erklären oder denkst du, dass der uC einfach 
kaputt ist ??

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Dirk

Wie kommst du darauf, das Steffen 8 Volt messen will ? Oder war das nur 
ein Hinweis ??

Oder habe ich da etwas übersehen in den Beiträgen. Du hast natürlich 
Recht, das man nur zwischen 0 Volt und AREF messen kann.

Alles andere wird dem Chip bestimmt nicht gut bekommen

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Hat ich nie vor ... Wie gesagt, Eingansgspannung liegt zwischen GND unc 
VCC ...

Grüße Steffen

von Dirk (Gast)


Lesenswert?

hm

liess mal unter im pdf DATASHEET ZUM IC!

wenn du die Ports als ADC nutzen willst sollste AVCC uber ein 
tiefpassfilter aus L und c gegen VCC legen... Willste die Ports als 
normale I/O `s nutzen dann lege AVCC AUF VCC

AREF min 2 V DC und max AVCC also so ca 4.7 V ...

Mfg

Dirk

von Dirk (Gast)


Lesenswert?

Ich glaube damit ist dein Problem geloest frag aber bitte nicht 
wieso.... So steht es im Datasheet :)


Mfg Dirk

von Steffen Burr (Gast)


Lesenswert?

das datenblatt hab ich komplett durchgelesen (AD-Wandler).

Das mit dem Tiefpassfilter hab ich gelesen, allerdings steht da (auf 
seite 70): Note that since AVCC feeds the Port C output drivers, the RC 
network should not be employed if any Port C serve as outputs.

Ich wllte nur einen einzige Eingang als AD Wandler nehmen, also hab ich 
den Tiefpass weggelassen.

Meinst du, so ne schwachsinnige Anzeige könnte daran liegen ??

Grüße Steffen

von Dirk (Gast)


Lesenswert?

Achja habe ein DEv. Board fuer den 8535 ... Die REF spg wird aber noch 
aus einem SPgteiler gewonnen ... Wenn jemand die Eagle Filez braucht 
dann hier melden... Eine Function fuer BAscom fuer die ADC Abfrage als 
Fensterdiskriminator z.B. hab ich auch ...

von Steffen Burr (Gast)


Lesenswert?

Also die Eaglefiles könntest du mir gerne mal anhängen.

Problem ist, dass ich eine fertige Platine hab, auf der ich das nicht 
einfach ausprobieren kann ... Sonst müsste ich Leiterbahnen unterbrechen 
oder die Platine neu ätzen. Ich würd also schon gern wissen, ob der 
Fehler hier liegt.

Und wenn ich den Satz im Datenblatt richtig verstanden habe, ist es 
nicht unbedingt notwendig, sowie nur eine Rauschunterdrückung.

Grüße Steffen

von Dirk (Gast)


Lesenswert?

Ich vermute sehr stark ja ...  ICh kann Dir leider nicht sagen ob es 
moeglich ist ADC0 als Messeingang und dann ADC1 (z.B. PC1) als output 
zunutzen.... Oder ob es nur fuer den ganzen Port geht... Ich 
interpretiere den Satz so... Moechtest du den Port C als ADC nutzen lege 
ein tiefpassfilter... willste ihn als I/0 Port nutzen dann lege AVCC auf 
VCC da der Port seine Betriebsspg von den Pin AVCC kriegt... aber teste 
es doch einfach ... 100 µH Spulekostet 40 Cent... und 100 nF 
Kondensatoren hat man immer liegen wenn man mit µC`s arbeitet ... Ist 
immer noch besser ls zuverzweifeln... :)

Falls es nur mit TP geht ... dann kannste die anderen Port Pins nicht 
als I/0 nutzen ...

Mfg Dirk

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Mein Dev Board mit meinem Bruder entworfen... die Loetaugen sind nen 
bissel groesser da die Aetze in meiner Firma schlecht ist.

Schematic

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Dev Board fuer 8535

Das hat uns ca 2 Tage  Zeit gekostet ist per Hand geroutet

von Steffen Burr (Gast)


Lesenswert?

also um die 40 Cent gehts mir sicherlich nicht ;-)
Ist halt aufwändig, weil ich erstmal an so ne Induktivität hinkommen 
muss ... und die dann da reinkriegen, aber wenn du meinst dass es daran 
liegt, werd ich das machen ...

Weißt du vielleicht, was dieser Tiefpass macht ??

Grüße Steffen

von Steffen Burr (Gast)


Lesenswert?

Danke für die Boards!

von Dirk (Gast)


Lesenswert?

Ich kann es leider nur vermuten.... Da mein englisch eingerostet ist und 
ich nur Rdio und Fernsehtechniker bin.... Du hast schon Recht das er die 
VCC Filtern soll ... Ich vermute das er die Stoerimpulse die aus einem 
5V Netzteil kommt filtert ... SPg und Strom... damit du keine 
Nadelimpulse drauf hast... wenn ´du nen Osi da hast dann Mess mal deine 
VCC ob schau mal ob Stoerungen drauf sind... wenn du ein Steckernetzteil 
nimmst dann solltest du die Spannung erst ueber ein AN7805 und nen paar 
Siebkondensatoren aufbereiten... schau Dir mal meine Schematic an... Es 
war mein erstes Projekt der ADC mit dem 8535 ... das einzige Problem was 
ich hatte das ich versehentlich in Auto mod softwaremaessig gekommen 
bin... aber auch da konnte ich die Spannung 10 mV genau in Abhaengigkeit 
meines Flukes messen... bloss aus Channel 0 wurd aufeinmal 1 usw :)

von Steffen Burr (Gast)


Lesenswert?

Ein Oszi müsste ich in den nächsten Tagen bekommen ...

Meine Ansicht der Sache (gut, hab nicht viel Ahnung -> 13. Klasse Physik 
LK):
Das LC Netzwerk dient dazu, hohe Impulsschwankungen aus der 
versorgungsspannung zu filtern. Lässt man es weg, so kann es sein, dass 
der AD Wandler Wert schwankt oder nicht genau ist. Nur ist es so, dass 
sich erst mal ab 3,6 V überhaupt etwas tut. Und ich versteh hier den 
zusammenhang nicht.

Außerdem steigen die Werte logarithmisch an 
(http://www.mikrocontroller.net/attachment.php/22236/AD_VALUES.jpg) wie 
man hier sehen kann.

Wie gesagt, ich kann mirs absolut nicht erklären ...
Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo

Also ich habe das gerade getestet. Auf PC 3 lese ich einen AD Wert ein 
und nebenbei lasse ich eine LED auf Port PS 5 blinken. Ohne Porbleme.

Habe wie gesagt AREF = AVCC = 5 Volt. Zusätzlich halt den 100 nF 
Kondensator von AVCC nach Masse. Keine Spule, da ich keine habe.

Der AD Wert steht super stabil im LCD.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Also 100 nF kann ich auch mal dazu schalten, das dürfte kein Problem 
sein ...

Aber wie ich gerade geschrieben habe, ich kann mir nicht vorstellen, 
dass es daran liegt, aber ich werds auf jeden Fall probieren.

Grüße Steffen

von Dirk (Gast)


Lesenswert?

Sry, hab dann auch keine Idee mehr... Aber das log. Vehalten kann ich 
mir auch nicht erklaeren :(

von Dieter Brüggemann (Gast)


Lesenswert?

Den Fall hast du ja nicht, oder ???

Port C has an alternate function as analog inputs for the ADC. If some 
Port C pins are
configured as outputs, it is essential that these do not switch when a 
conversion is in
progress. This might corrupt the result of the conversion.

MFG

Dieter

von Steffen Burr (Gast)


Lesenswert?

Hab gerade versucht, AVCC zu GND über 1uF zu schalten (anderen 
Kondensator hatt ich grade nicht zu Hand). Geändert hat sich garnichts. 
nicht mal gezuckt ...

Mein Programm hast du ja gesehen. Da kann nichts passieren denk ich oder 
??  Der Text sagt ja aber auch aus, dass es möglich ist, einen Pin von 
Port C als AD Input zu verwenden und die anderen als normale O/I Pins, 
oder ??

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Da meine Programme bei mir laufen und bei Dir nicht, schätze ich Mal, 
daß der Chip einen weg hat. Ich habe für solche Fälle immer 2 bis 3 Chip 
zum tauschen da. Habe aber noch keinen Chip gehimmelt zum Glück.

Schau dir doch mal den MEGA 8 an, da der 4433 so oder so ausläuft, wenn 
ich das richtig mitbekommen habe.

MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Ich werd mir auf jeden Fall noch ein paar Chips besorgen.
Ist der MEGA 8 Kompatibel zum 4433, oder muss ich da mein Board umbauen 
??

Grüße Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Pin gleich ja.

Aber es gibt ein paar Sachen zu beachten.

http://www.atmel.com/dyn/products/app_notes.asp?family_id=607

AVR 081


MFG
Dieter

von Steffen Burr (Gast)


Lesenswert?

Schön, danke!
Ich werds mir mal durch n Kopf gehen lassen, ob ich dann auf den MEGA 8 
umsteig.

Sorry, aber ich muss jetzt Schuss machen (schreib morgen ne Klausur).

Falls ich mal wieder n Problem hab, würd ich mich gerne bei dir melden 
(per email vielleicht). Ist das ok ??

Und danke nochmal VIELMALS für die super ausführliche Hilfe bei meinem 
Problem!!

Schöne Grüße und gute Nacht!

Steffen

von Dieter Brüggemann (Gast)


Lesenswert?

Kein Problem

MFG

Dieter

von Steffen Burr (Gast)


Lesenswert?

@Dirk: Dank dir natürlich auch noch, Dirk!

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.