Forum: Mikrocontroller und Digitale Elektronik Controller reagiert nicht!


von Julian R. (tuefftler)


Lesenswert?

Hallo,
ich beschäftige mich erst seit kurzem mit microcontrollern der Atmel AVR 
RISC Famielie und bei mir ist das folgende Problem aufgetreten:
Ich schliese meinen ATmega16 an meinen USB-ISP Programmer an und 
programmiere ihn. Das System(AVR Studio 4) zeigt mir an Assembly 
complete, Program Flash: OK.
Wenn ich den controller an 5V anschliesse lässt sich kein 
Spannungsunterschied feststellen(zwische zwei andersgesetzten Bits an 
Port A).
Ich hab das Programm schon öfters geschrieben und nie hat sich was 
geändert.

Kann mir da vielleicht jemand Tipps geben wo ein Fehler aufgetreten sein 
könnte.(Ein auf anderen ATmega16 funktionierendes Programm wäre Spitze!)

Danke julian

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hast Du die richtige *.hex geflasht? Welchen Programmer benutzt Du? Wie 
sieht Dein Programmcode aus, welche Programmiersprache?

von MeinerEiner (Gast)


Lesenswert?

Nach dem Programm wollt ich auch grad fragen, denn das:

> Wenn ich den controller an 5V anschliesse lässt sich kein
> Spannungsunterschied feststellen(zwische zwei andersgesetzten Bits an
> Port A).

stinkt schwer nach falsch oder garnicht gesetztem DDRA.

von Julian R. (tuefftler)


Lesenswert?

Mein Code sieht folgendermasen aus:
1
    .include "m16def.inc"
2
    .def  akku = r16
3
    .equ  takt = 8000000
4
    .cseg
5
    rjmp  start
6
    .org  $2A
7
start:  ldi    akku, low(ramend)
8
    out    spl,akku
9
    ldi    akku, high(ramend)
10
    out    sph, akku
11
    ldi    akku, $ff
12
    out    DDRA, akku
13
loop:  sbi    porta, 0
14
    sbi    porta, 1
15
    cbi    porta, 2
16
    rjmp  loop
17
.exit
Frage könnte ich mit falschen lockbits meinen controller stören???

julian

von Karl H. (kbuchegg)


Lesenswert?

Welches Board hast du?
Nachdem du offenbar Probleme mit Port A hast und dort die ADC Wandler 
liegen: AVcc ist korrekt angeschlossen?

von Julian R. (tuefftler)


Lesenswert?

Ich hab AVcc gar nicht angeschlossen weil ich dachte das macht keinen 
unterschied wenn ich den AD-Wandler nicht brauche. hab das obige 
Programm aber schon auf den ATtiny12 ungeschrieben und das gleiche 
problem war da

julian

von Julian R. (tuefftler)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Julian R. schrieb:
> Ich hab AVcc gar nicht angeschlossen weil ich dachte das macht keinen
> unterschied wenn ich den AD-Wandler nicht brauche.

Es geht nicht im eigentlichen Sinne um den A/D Wandler.
AVcc versorgt den Port A.
Bei einem Chip müssen immer alle Versorgungsspannungs und 
Masseanschlüsse belegt werden. Punkt.

> hab das obige
> Programm aber schon auf den ATtiny12 ungeschrieben und das gleiche
> problem war da

Eins nach dem anderen, ok?
Jetzt debuggen wir erst mal deine Mega16 Schaltung.

Also schliess AVcc, AGnd an, leg noch einen 100n Kondensator dazwischen 
(so wie bei Vcc und GND) und dann solltest du am Mega schon deine 
Portpins vernünftig ausmessen können.

von Julian R. (tuefftler)


Lesenswert?

Passt mein Programm soweit, dass ich was messen kann?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Julian R. schrieb:

> Passt mein Programm soweit, dass ich was messen kann?

Definiere "Messen".

Du betreibst alle Pins an PORTA als Ausgang. Vom Atmega16 aus was messen 
im Sinn von Abfragen eines Eingangs kannst du damit nix.

Mit einem Multimeter kannst du - bei funktionierendem Hardwareaufbau - 
allerdings von außen messen, welche Spannungen der Atmega16 an den Pins 
PA0, PA1 und PA2 aus gibt. Da sollten  PA0 und PA1 was anderes zeigen 
als PA2.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen

von Julian R. (tuefftler)


Lesenswert?

genau das wolt ich wissen ob mein Multimeter verschiedene Spannungen 
aneigt.

Danke

von Marcus K. (marcusk)


Lesenswert?

auch Reset sollte man nicht vergessen

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

Ist das dann die richtige beschaltung wenn man PortA0 über einen 
Widerstand an die Basis setzt und über einen zweiten auf GND???

von spess53 (Gast)


Lesenswert?

Hi

>Ist das dann die richtige beschaltung wenn man PortA0 über einen
>Widerstand an die Basis setzt und über einen zweiten auf GND???

Und wo ist der Widerstand ?

MfG Spess

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

So besser?

julian

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1k an RESET kann zu wenig sein und Programmierprobleme machen. Atmel 
sagt nicht kleiner 4K6. 10K ist üblich.

100 Ohm als Vorwiderstand bei 5V und üblicher LED ist auch zu wenig bei 
low-current-LEED ist es sogar tödlich zu wenig. Siehe Artikel LED.

Kein Basiswiderstand zwischen PA0 und Basis des Transistors kann den PA0 
überlasten. Siehe Artikel Transistor und dort *Transistor als 
Schalter*

Welchen Transistor hast du denn verbaut?

von Julian R. (tuefftler)


Lesenswert?

Es ist zum verrückt werden, ich schaff es nicht, dass mein Messgerät 
High anzeigt wenn ich das programm wie oben auf meinen ATMEGA16 
programmier.

Was hab ich falsch gemacht wenn ich Vcc,GND, und nochmals GND, 
AVcc,Reset über 10k an Vcc, PA0 und PA1 jeweils mit zwei 
Transistorstufen wie unten angeschlossen habe???
                               +5V
PA0---R1---B-BC108c-E-----GND   |
    |          |                |
   R3          |----|<|----R2---|
    |               LED
   GND

R1 = 1k
R2 = 1k
R3 = 10k

Was hab ich denn noch falsch gemacht, kann etwas mit den einstellungen 
beim AVR Studio 4 falsch sein.
Was zerstört den Controller, worauf muss ich anfänger achten.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Lass das ganze LED-, Widerstand-, Transistor-Gebastel mal weg!
Solange du es nicht schaffst, dass du an einem Pin HIGH oder LOW 
ausgeben oder messen kannst, hat eine Zusatzschaltung keinen Sinn.

Bau lieber noch 2 100nF Kondensatoren (Keramik, Kerko) ein. Und zwar wie 
im AVR-Tutorial (und im Datenblatt) zwischen Vcc (Pin 10) und GND (Pin 
11) sowie zwischen AVcc (Pin 30) und GND (Pin 31). Möglichst nahe an den 
Pins!

An Fuses auch vorerst nichts verändern! Die brauchst du nicht, die 
Werkseinstellung ist jetzt noch OK!

Mit WAS misst du? Multimeter zeigen eine Spannung an. Logiktester 
einen Logikpegel (HIGH, LOW). Was für ein Gerät hast du?

WIE misst du? Wo geht die rote Strippe vom Messgerät hin und wo die 
schwarze?

Mein Vorschlag:
Programm aus Beitrag "Re: Controller reagiert nicht!" 
flashen.
Multimeter in DC Messbereich, Autorange oder Bereich >5V. Schwarze 
Strippe an Pin 11 GND dann messen:

1. Rote Strippe an Pin 10 Vcc  : Spannung =
Wenn das Multimeter keine ca. 5V anzeigt ist was 
oberoberoberoberoberoberfaul.

2. Rote Strippe an Pin 9 RESET : Spannung =
Wenn das Multimeter keine ca. 5V anzeigt ist was 
oberoberoberoberoberfaul.
ISP Adapter abziehen. Nochmal messen.

3. Rote Strippe an Pin 31 GND : Spannung =
Wenn das Multimeter keine ca. 0V anzeigt ist was oberoberoberoberfaul.

4. Rote Strippe an Pin 30 AVcc  : Spannung =
Wenn das Multimeter keine ca. 5V anzeigt ist was oberoberoberfaul.

5. Rote Strippe an Pin 40 PA0 : Spannung =
Wenn das Mutimeter keine ca. 3-5V anzeigt ist was oberoberfaul.

6. Rote Strippe an Pin 39 PA1 : Spannung =
Wenn das Multimeter keine ca. 3-5V anzeigt ist was oberfaul.

7. Rote Strippe an Pin 38 PA2 : Spannung =
Wenn das Multimeter keine ca. 0-1V anzeigt ist was faul.

Ergebnisse mitteilen.

von Julian R. (tuefftler)


Lesenswert?

Hallo,
ich hab mit dem pollin board mal meinen ic und den Programmer 
angeschlossen,
und hab verdacht auf den Programmer.
Kann es sein, dass der Programmer durch einen Fehlanschluss geschädigt 
wurde?
Ich hab nämlich mich beim bauen verzählt, jetzt aber wieder korrigiert.
Dabei war Spannung auf dem ding.

julian

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1. Alles ist möglich. Hat es geraucht?
Beitrag "Re: Pollin LCD falsche beleuchtung"

2. Die Messungen oben kannst du ohne angeschlossenen USB-ISP-Programmer 
machen. Man bekommt dann auch einen Eindruck, ob der AVR richtig 
versorgt wird.

3. Du schreibst jetzt zum 1. Mal was vom Pollin-Board. Ist das jetzt 
eine andere Hardwaresituation als oben im Anfangsposting, wo du selbst 
mit rumbeaut hast? Ich finde es abtörnend, wenn der Fragesteller so 
wichtige Informationen nur stückweise rausrückt (und nicht mal versucht 
Rückfragen zu beantworten).

von Julian R. (tuefftler)


Lesenswert?

Also, ich fang nochmal vom vornean mit erklären.
Ich hab eine Programmer-Platine die den µc programmiert.(eigenbau)
Wenn der µc programmiert ist, steck ich ihn auf meine
"Testplatine" (eigenbau) oder auf mein Steckbrett (Pollin) mit 
entsprechender schaltung und teste den µc.

vor kurzem war ich mit meinem Freund im JUZ, der hat ein Pollin-Board,
er hat es geschafft den mikrocontroller daheim über seriellen anschluss 
zu programmieren, mir im JUZ vorzuführen und ich im JUZ eben mit dem 
Programmer von mir nicht.

Ich kann aber den µc noch auslesen die freqenz draufschreiben ...

Daraus entstehen nur zwei Möglichkeiten,
1. Programmfehler. Glaub ich aber nicht, da ich das obrige Programm 
verwendete.
2. Der programmer tut seine Arbeit nach einem fehlanschluss von mir 
nicht mehr. hab dabei ein paar pins vertauscht, getestet und korrigiert.



Fals Jemand eine Idee hat wie ich ihn testen könnte mir unbedingt 
schicken

Kann mann es vom einen computer auf den µc flashen,
und von einem zweiten wieder auslesen???

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Julian R. schrieb:

> Also, ich fang nochmal vom vornean mit erklären.
> Ich hab eine Programmer-Platine die den µc programmiert.(eigenbau)
> Wenn der µc programmiert ist, steck ich ihn auf meine
> "Testplatine" (eigenbau) oder auf mein Steckbrett (Pollin) mit
> entsprechender schaltung und teste den µc.

Alle deine drei Schaltungen und konkreten Aufbauten sind hier komplett 
unbekannt. Es ist unmöglich, gute Tipps zu geben, was daran falsch oder 
richtig ist. Lass dir was einfallen - Knips die Schaltung, leg sie auf 
den Scanner oder male sie ab, aber rück' mehr Infos raus...

> vor kurzem war ich mit meinem Freund im JUZ, der hat ein Pollin-Board,
> er hat es geschafft den mikrocontroller daheim über seriellen anschluss
> zu programmieren, mir im JUZ vorzuführen und ich im JUZ eben mit dem
> Programmer von mir nicht.

Woran machst du den Misserfolg fest? War es der gleiche 
Mikrocontroller? Hat dein Kumpel Fuses programmiert?

> Ich kann aber den µc noch auslesen die freqenz draufschreiben ...

Und - was kommt raus? Wie stehen die Fuses? Ist das ausgelesene Programm 
das gleiche wie das Einprogrammierte? Wenn es HEX-Daten sind, vor dem 
Vergleich an die Umwandlung in BIN-Daten denken (objcopy, s. 
Wiki/Artikelsammlung)

> Daraus entstehen nur zwei Möglichkeiten,
> 1. Programmfehler. Glaub ich aber nicht, da ich das obrige Programm
> verwendete.

Das "Programm" ist bisher nur ein Quellcode. Bei der Kompilierung zur 
tatsächlich übertragenen Hex-Datei kann auch noch etwas schiefgehen z.B. 
falscher µC-Typ eingestellt.

> 2. Der programmer tut seine Arbeit nach einem fehlanschluss von mir
> nicht mehr.

Erkennen tust du das wie?

> hab dabei ein paar pins vertauscht, getestet und korrigiert.

Hört sich wie ein Rezept für ein Disaster an. Die verwendete 
PC-Schnittstelle (welche?) lebt noch?

> Falls Jemand eine Idee hat wie ich ihn testen könnte mir unbedingt
> schicken

1. Schaltpläne zeigen und auf Kommentare warten. Besser noch: zusätzlich 
Aufbauten zeigen.

2. Aufbauten mit kommentierten Schaltplänen vergleichen.

3. Tipp zu Messungen annehmen. Messen. Berichten.

Hast du noch genug Bauteile für diesen geheimnisvollen Programmer, den 
du uns nicht zeigen willst? Wenn ja, bau den neu auf, Dann ist diese 
nagende Ungewissheit weg.

Ich würde mit dem Neuaufbau mindestens warten bis 1. und 2. erledigt 
sind. Eher noch bis 3. erledigt ist. Vielleicht ist der Programmer 
garnicht Schrott.

> Kann mann es vom einen computer auf den µc flashen,
> und von einem zweiten wieder auslesen???

Ja, meistens, ausser die Lockbits (Datenblatt...) als Ausleseschutz vor 
Programmklau sind gesetzt.

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

Hier sind einmal die Bilder.
Der Rest kommt gleich.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Spannungsversorgung Bild0504.jpg sieht gut aus. Brauchen wir im 
Moment nicht. Der USB-ISP-Programmer kann den Atmega16 beim 
Programmieren auf dem Programmierboard versorgen.

Auf der Testplatine Bild0506.jpg kann ich nix genaues erkennen. Ist 
aber nicht schlimm, denn die Testplatine brauchen wir im Moment nicht.

Auf dem Steckbrett Bild0508.jpg kann ich nix genaues erkennen. Ist 
aber nicht schlimm, denn das Steckbrett brauchen wir im Moment auch 
nicht.

Als erstes geht es nur um das Programmierboard Bild0505.jpg.

Du sagst, dass du den Atmega16 auslesen aber nicht beschreiben kannst.

Was kommt beim Auslesen raus - zeige einen Screenshot der 
Fuseseinstellung wie auf den Seiten unter AVR Fuses.

Lies das Programm aus dem Atmega16 aus und hänge es an deine nächste 
Antwort. Durch Disassemblieren oder Vergleich mit einem hier 
übersetzten Quellcode können wir nachsehen, ob es das "richtige" 
Programm für den "richtigen" AVR ist.

Nur zur Sicherheit: Auf welchem Board hat dein Kumpel programmiert - 
seinem Steckbrett (das er bei Pollin gekauft hat) oder einem der Boards 
Pollin Funk-AVR-Evaluationsboard oder [[Pollin ATMEL 
Evaluations-Board]]. Die versteht man nämlich üblicherweise unter 
"Pollin-Board".

Für Steckbrettaufbauten gibt es prima Zeichenprogramme:
http://www.mikrocontroller.net/articles/Breadboard#Weblinks

Ich finde das Online DES-Steckboard am besten. So wie im Anhang könnte 
die nächste Schaltung auf dem Steckbrett aussehen, die nach dem 
Programmiertest durchzumessen ist.

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

Danke für den Tipp mit dem virtuellem Board.

>Du sagst, dass du den Atmega16 auslesen aber nicht beschreiben kannst.

Falsch, ich kann ihn auch beschreiben.

>Nur zur Sicherheit: Auf welchem Board hat dein Kumpel programmiert -
>seinem Steckbrett (das er bei Pollin gekauft hat) oder einem der Boards
>Pollin Funk-AVR-Evaluationsboard oder Pollin ATMEL
>Evaluations-Board. Die versteht man nämlich üblicherweise unter
>"Pollin-Board".

Ja er hat auf dem Pollin ATMEL Evaluations-Board programmiert.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Das test.hex ist dieses kurze Programm (in den Debugger des AVR Studio 
geladen und angezeigt):
1
+00000000:   EF0F        SER     R16              Set Register
2
+00000001:   BB0A        OUT     0x1A,R16         Out to I/O location
3
+00000002:   9AD8        SBI     0x1B,0           Set bit in I/O register
4
+00000003:   9AD9        SBI     0x1B,1           Set bit in I/O register
5
+00000004:   CFFD        RJMP    PC-0x0002        Relative jump

Das entspricht dem sichtbaren Quelltext in Unbenannt1.jpg. Wenn du das 
test.hex so in den Atmega16 reingeschrieben hast und dann wieder 
ausgelesen hast, dann funktioniert dein USB ISP Programmer und dein 
Programmierboard.

Die Fuses in Unbenannt1.jpg habe ich mit dem Engbedded Atmel AVR® Fuse 
Calculator (http://www.engbedded.com/fusecalc/) kontrolliert.

Dein Kumpel hat eventuell die JTAG-Schnittstelle abgeschaltet und das 
ist hier unwesentlich. Wesentlich ist, dass er die Taktquelle auf dem 
internen RC-Oszillator gelassen hat und nicht auf den Quarz auf seinem 
Pollin-Board umgestelt hat. Hätte er das gemacht, würden dein 
Programmierboard und deine Testschaltungen mangels Quarz nicht 
funktionieren.

Als nächstes baue den programmierten Atmega16 auf das Steckbrett und 
verwende die Schaltung aus dem 
Beitrag "Re: Controller reagiert nicht!"

Mach dann die Messungen aus dem 
Beitrag "Re: Controller reagiert nicht!"

Es kann sein, dass bei grob falscher Bedrahtung die Pins PA0 und PA1 
Schaden genommen haben. Das kann man mit den Messungen herausbekommen.

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

Der Programmer dürfte dann noch funktionieren, oder.
Ich hab es auf den µc geladen, strom weg(USB raus und danach wieder 
rein),
ausgelesen und verglichen.

julian

von Julian R. (tuefftler)


Angehängte Dateien:

Lesenswert?

Danke, Danke, Danke,
Vielen Dank Stefan B. es funktioniert endlich.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Glückwunsch für deinen ersten erledigten Bug! Weiterhin viel Spaß!
http://thenextweb.com/2008/11/20/the-worlds-first-computer-bug/

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.