Forum: Mikrocontroller und Digitale Elektronik ADC-Killer-Programm


von Chris N (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

ich versuch gerade ein kleines Mikrocontroller-Projekt umzusetzen. 
Hierbei möchte ich eine Spannung zwischen 0 und 5 Volt permanent am 
Eingang PA0(ADC0) eines Atmega16 einlesen und am Port C binär wieder 
ausgeben.
Sobald ich aber das Programm über ein STK500 auf einen Atmega16 
aufspiele, ist der Controller hinüber und ich kann nicht mehr darauf 
zugreifen. Hab so heute schon 2 Controller verheizt.
Kann mir jemand sagen wo der Fehler liegt?
Beste Grüße und danke.

von jibi (Gast)


Lesenswert?

>(void) ADCW;

Was macht das ?

von Klaus Kaiser (Gast)


Lesenswert?

Setzt Du eventuell irgendwelche Fuses so, dass externe Taktquellen 
konfiguriert werden, die in der Praxis nicht vorhanden sind?

http://www.heise.de/ct/hotline/Fuse-Bits-falsch-gesetzt-321580.html

von Mr. Tom (Gast)


Lesenswert?

Chris N schrieb:
> Sobald ich aber das Programm über ein STK500 auf einen Atmega16
> aufspiele, ist der Controller hinüber und ich kann nicht mehr darauf
> zugreifen.

Mit anderen Programmen funktioniert das Aufspielen?

von Chris N (Gast)


Lesenswert?

Ich hab gelesen, dass man nach der Initialisierung 1x einen 
Einlesedurchgang starten soll. Diesen ersten Wert will ich mit dem
(void) ADCW;
auslesen und ins Nirwana befördern.

von Chris N (Gast)


Lesenswert?

Bezüglich der Fuses:
Ich hab alles original gelassen. Ich hab eben gerade auch noch ein paar 
alte Programme getestet und diese laufen ohne Probleme und kann auch 
nach dem Test wieder darauf zugreifen und diese überspielen.

von da1l6 (Gast)


Lesenswert?

Hallo
1
ADMUX = (1<<REFS0);

Was liegt am AREF pin an? Der darf nicht angeschlossen oder nur ein 
Kondensator dran sein.

da1l6

von Chris N. (locke86)


Lesenswert?

Ich hab gerade am AREF Pin des Atmega16 gemessen und hab dort 6,25 Volt 
gemessen. Diese bekommt er über das STK500

von jibi (Gast)


Lesenswert?

>Ich hab gelesen, dass man nach der Initialisierung 1x einen
>Einlesedurchgang starten soll. Diesen ersten Wert will ich mit dem
>(void) ADCW;
>auslesen und ins Nirwana befördern.

1. Setzen.

von jibi (Gast)


Lesenswert?

> 6,25 Volt

Hm das verträgt der ADC wohl nicht...

von Chris N. (locke86)


Lesenswert?

jibi schrieb:
>> 6,25 Volt
>
> Hm das verträgt der ADC wohl nicht...

Wenn ich den AREF Juper auf dem STK raus nehm hab ich nur noch 5.02 
Volt. Keine Ahnung ob das mit der Spannung funktioniert. Hab jetzt 
leider nur noch einen Mikrocontroller zur Verfügung.

von Karl H. (kbuchegg)


Lesenswert?

Das wird es wohl.

Mit einem Progrmm kannst du einen Mega 16 nicht soweit lahm legen, dass 
du per ISP nicht mehr drann kommst.

Trotzdem sollte man dem nachegehen, wo die 6.25V herkommen. Denn die 
sind so nicht in Ordnung.

von Chris N. (locke86)


Lesenswert?

Ok. Ich versuch es jetzt einfach mal ohne den Jumper.
no risk no fun  =)

von jibi (Gast)


Lesenswert?

Wieviel käfer mussten sterben?

von Karl H. (kbuchegg)


Lesenswert?

Chris Neusi schrieb:
> Ok. Ich versuch es jetzt einfach mal ohne den Jumper.
> no risk no fun  =)


Letzten Endes bleibt dir eh nichts anderes übrig.

Probier dann nochmal, ob die 'toten' Megas ohne die 6.25V an ARef 
vielleicht noch laufen. Mit ein bischen Glück hat es nur die interne 
Beschaltung des ARef Pins erwischt. Die Dinger sind ja eigentlich recht 
robust.

von spess53 (Gast)


Lesenswert?

Hi

>Hab jetzt leider nur noch einen Mikrocontroller zur Verfügung.

Dann versuch mal über HV-Programmierung die anderen wieder zu 
aktivieren.

MfG Spess

von Chris N. (locke86)


Lesenswert?

Wow. Es lat tatsächlich an dem AREF Jumper.  =)

Aber dafür musste ich leider feststellen dass mein Programm nicht so 
funktioniert wie ich es gerne hätte.

Wollte gerade 5Volt über ein Poti auf den ADC0 geben in der Hoffnung 
dass bei 5 Volt alle 8 Ausgänge am PortC 1 haben sind und bei 0Volt alle 
auf 0 stehen aber leider flackern alle nur wie wild.

von Karl H. (kbuchegg)


Lesenswert?

Chris Neusi schrieb:
> Wow. Es lat tatsächlich an dem AREF Jumper.  =)
>
> Aber dafür musste ich leider feststellen dass mein Programm nicht so
> funktioniert wie ich es gerne hätte.

Tja. Das soll vorkommen :-)
Willkommen in der WElt der Programmierung, die uns Menschen immer wieder 
und eindringlich aufzeigt, wie wenig wir doch vom logisch folgerichtigen 
Denken verstehen und wie schlampig wir im täglichen Leben damit umgehen.

von Hubert G. (hubertg)


Lesenswert?

Am Programm liegt dein Problem sicher nicht, auch wenn es nicht das tun 
wird was du möchtest.
Du solltest die Anleitung für das STK lesen. Dort steht das bei 
gesetztem AREF-Jumper AREF über das Programmiermenü HW-Settings 
einstellen. Dann darf allerdings REFS0 nicht gesetzt sein.
Ob deswegen der Kontroller stirbt ist fraglich.

von Hubert G. (hubertg)


Lesenswert?

War ich etwas zu langsam.
Im ADMUX das ADLAR setzten und nur ADCH abfragen.

von Karl H. (kbuchegg)


Lesenswert?

Aber ich denke, in dem Fall bist du unschuldig

Mega16 und PORTC:
Du musst das JTAG abschalten

Entweder du gehst auf einen anderen Port oder du musst an die Fuses 
rann.

Fuses einlesen
JTAGEN umschalten (nämlich auf 'aus')
Fuses schreiben

: Bearbeitet durch User
von Chris N. (locke86)


Lesenswert?

Ok, danke für die ganzen Antworten und die Hilfe.
Ich werd mich da morgen ein bisschen weiter dran spielen.
Ach übrigens:
Ohne den Jumper funktionieren auch die anderen Käfer wieder

von Peter D. (peda)


Lesenswert?

Chris Neusi schrieb:
> Ohne den Jumper funktionieren auch die anderen Käfer wieder

Ja, das STK erkennt den Überstrom und schaltet ab, die Betriebs-LED 
erlischt.

Der Jumper ist noch ein Relikt aus den frühen AT90Sxxxx Zeiten.
Zieh in ab und schmeiß ihn ganz weit weg.

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.