mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR µC funktionieren nicht - grundlegende Fehlersuche


Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, nochmal mit besserem Threadtitel.

Das simpelste Programm das ich schreiben konnte (LED leuchten lassen)
läuft nicht. Programm mit AVRStudio in µC laden geht fehlerfrei (mit 
ATmega328p und ATtiny13a probiert, jeweils auch mit einem unbenutzten).
Aber die Pins sind einfach stumm (hochohmig). Wenn ich die LED an einen
der Programmierpins stecke flackert sie beim programmieren, aber danach
leuchtet sie nicht, obwohl alle Programmierpins auch Teil von PORTB
sind.

Ich hab nichts an den Fuses rumgepfuscht. Die brandneuen µC die ich 
probiert habe, haben sogar noch CKDIV8 gesetzt weil sie nie benutzt 
wurden. Alle laufen und liefen immer mit internem Takt von 8 bzw 9.6 
MHz.

Kann mir bitte jemand sagen, dass das Programm ok ist?
Wo weitersuchen? Ist mein Steckbrett vielleicht kaputt? Virus im µC?

#include <avr/io.h>


int main (void) {


  DDRB = 0xff;                

  PORTB = 0xff;

  while(1) {

  }

  return 0;

}


Und als Ergänzung: Um zu überprüfen ob der µC überhaupt selbständig 
läuft nach der Programmierung, habe ich jetzt mal beim ATmega328p die 
Fuse CKOUT gesetzt damit der Prozessortakt am Pin 14 (PB0) ausgegeben 
wird. Multimeter zeigt knapp 8 MHz dort an. Die LED leuchtet wenn ich 
sie dort einstecke. Grundsätzlich ist der Port also funktionsfähig, 
liefert genug Strom und die CPU läuft. Also wieso kann ich 
Softwaremässig keinen Port einschalten?

Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das 
Programm nicht automatisch gestartet wird? Irgendwelche Bootloader 
Optionen die Probleme machen wenn man keinen Bootloader hat?

Sonst schmeiss ich den ganzen Kram in die Tonne :(

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/RESET auf High?
Externen Takt eingeschaltet?
Spannung?

Mit freundlichen Grüßen,
Valentin Buck

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lass die LEDs doch mit ner _delay_ms()-Schleife blinken, das ist dann 
zuverlässiger von einem nicht laufenden µC zu unterscheiden.

Ansonsten würde ich mal den Pegel am Reset-Pin messen, und ggf. einen 
Pullup einbauen.

PS: welches Programmiergerät?

Autor: philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das programm richtig auf den  kontrollör programmiert? wie ist die 
led angeschlossen? was sagt dein multimeter

Autor: Serieller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei dem gezeigten Programm sollte an den I/O-tauglichen Pins von Port B 
jeweils ein dauerhafter HIGH Spannungspegel zu messen sein.

Mit einer Widerstandsmessung
> Aber die Pins sind einfach stumm (hochohmig).
bist du mit den falschen Waffen unterwegs.

Auch ein dynamisches Flackern solltest du nicht erwarten bzw. wäre das 
ein Zeichen für eine Fehlfunktion.

Autor: Peter Hartmann (the_ride)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Versuch es doch mal hiermit.
/*
 * main.c
 *
 *  Created on: 03.09.2009
 *      Author: The_ride
 */

#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>


int main(void)
{
  DDRB = 0xff;

    while(1)
  {

    {

      PORTB=0b000000001;


     {
          _delay_ms(100);
       }

      PORTB=0b000000000;


     {
          _delay_ms(100);
       }



  }

}
}

cya The_ride
Peter

Autor: C-Freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder etwas lesbarer, und auch mit einfachem Spannungsmesser noch zu 
"sehen":
while(1)  {
   PINB = 0x01;    // toggle pin
   _delay_ms(1000); // sleep a while
}

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Vorschläge. Aber lest bitte meinen ersten Beitrag 
komplett durch. Die grundlegenden Sachen habe ich ja schon probiert.


Programmer hab ich diesen hier:
http://shop.myavr.ch/Programmer/mySmartUSB%20MK3.h...

Reset hab ich schon mit und ohne Pull-up probiert.
Spannungsversorgung ist ok. Ich hab diverse Quellen genommen (vom 
Programmer mit 3.3V und 5V, Knopfzelle mit 3V).



Bitte gebt mir keinen neuen C-Code der komplexer ist als meiner. In 
meinem Programm ist kein Fehler, oder? (ich weiss es eigentlich aber 
weils nicht funktioniert... vielleicht bin ich einfach blind).
Es muss ja nichts blinken. Ich hab keine hohen Ansprüche. Es soll nur 
"etwas" an einem Pin feststellbar sein. Ich hab auch schon den Port low 
geschaltet und die LED von VCC an Pin angeschlossen. Und ich hab immer 
auch die LED umgedreht (nur um sicher zu sein) und auch an diversen Pins 
probiert.

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C-Freak schrieb:
> while(1)  {
>    PINB = 0x01;    // toggle pin
>    _delay_ms(1000); // sleep a while
> }

Nö, eher so:
while(1){
    PORTB ^= 0xFF;
    _delay_ms(1000);
    }

Das geht auch noch mit älteren µCs.

Mit freundlichen Grüßen,
Valentin Buck

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sekunde mal:
VORWIEDERSTAND?
Siehe LED...

Mit freundlichen Grüßen,
Valentin Buck

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Serieller schrieb:
> Bei dem gezeigten Programm sollte an den I/O-tauglichen Pins von Port B
> jeweils ein dauerhafter HIGH Spannungspegel zu messen sein.

Genau.

>
> Mit einer Widerstandsmessung
>> Aber die Pins sind einfach stumm (hochohmig).
> bist du mit den falschen Waffen unterwegs.

Naja, sagt doch schon was aus. Nachdem ich keine Spannung gemessen habe, 
hab ich versucht die Pins auf low zu schalten und LED an VCC - aber sie 
"schlucken" auch keinen Strom. Sind also hochohmig wie in 
"uninitialisiertem" Zustand.

>
> Auch ein dynamisches Flackern solltest du nicht erwarten bzw. wäre das
> ein Zeichen für eine Fehlfunktion.

Logisch flackert die Leitung beim Programmieren.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Valentin Buck schrieb:
> Sekunde mal:
> VORWIEDERSTAND?
> Siehe LED...
>
> Mit freundlichen Grüßen,
> Valentin Buck

Ach komm. Wie hilft mir der Hinweis jetzt? Ich wär schon glücklich wenn 
ich eine LED durchbrennen könnte.
Aber zu deiner Beruhigung, ich habe ne blaue LED die 3.6V will and der 
3.3V Spannung betrieben ohne Vorwiderstand. Zwischendurch auch mal eine 
rote LED MIT Vorwiderstand.

Autor: M. H. (elektroniktueftler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan posten, dann kann man mehr sagen

Autor: Peter Hartmann (the_ride)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Wie wäre es denn wenn du mal ein Foto von deinem Aufbau zeigst, evtl. 
ist ja was falsch angeschlossen ?!

cya The_ride
Peter

Autor: Tüll (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Voila

Oben links ist eine rote LED die einfach Betriebsspannung anzeigt.

An den Stecker kommt mein Programmer über ein 6-poliges ISP Kabel. Die 
blaue LED ist jetzt nicht drauf, hab sie and diversen Pins probiert und 
wie gesagt in allen Varianten.

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tüll schrieb:
> Ach komm. Wie hilft mir der Hinweis jetzt? Ich wär schon glücklich wenn
> ich eine LED durchbrennen könnte.

Ohne Vorwiederstand sinkt die Spannung am µC drastisch.
Wenn er dadruch nicht kaputt geht, geht er aus.
Hast du den Programmierer im Betrieb da immer dran, und zieht der Reset 
auch auf HIGH?
Versuchs mal mit einem 1-10k Wiederstand nach + vom Pin aus.

Außerdem fehlen Abblockkondensatoren...

Hast du wirklich den internen Takt gesetzt?

Mit freundlichen Grüßen,
Valentin Buck

Autor: Peter Hartmann (the_ride)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Der Reset Widerstand fehlt 10k zu Plus PortC6 (Pin1)

Hier steht wie er angeschlossen werden muß
http://www.dieelektronikerseite.de/uC%20Ecke/Lecti...

cya The_ride

Autor: Thomas O. (kosmos)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal das Diagramm an, schätze mal ungefähr ab wieviel Strom die 
LED bei 5V schluckt und schau nochmal wieviel mA du einem Pin 
abverlangen darfst. Stellst sich dann nur noch die Frage wer überlebt es 
länger der Pin oder die LED, wenn du verdammt viel Glück hast (oder 
extra vorgesorgt hast) bricht aber auch nur deine Versorgungsspannung 
zusammen und alles bleibt heil.

Das Programm selber kann man doch im AVR-Studio durchsimulieren bzw. die 
Fehlermeldungen auswerten falls es garnicht zum simulieren kommt.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Valentin dass du mir helfen willst, aber du stellst Fragen die ich 
schon beantwortet habe.

In der Variante wie abgebildet lass ich den Programmer dran für die 
Stromversorgung von 3.3V (hab auch schon alle schwarzen Kabel abgezogen 
zum testen). Hab auch schon ohne Programmer nur mit einer 3V Batterie 
getestet.

Der Programmer zieht Reset nach LOW beim programmieren. Sonst macht der 
da meines Wissens nichts. Spannung am Resetpin ist um die 5V (auch bei 
3.3V VCC was mich erstaunt hat). Als ich zusätzlich noch einen Pullup 
angeschlossen habe kam sie etwas runter auf einen Wert zwischen 3.3V und 
5V.

Ja Takt ist wirklich intern. Lies mal meinen ersten Beitrag.

Abblockkondensatoren, sind die echt essenziell? (kann ja sein, ich bin 
Neuling) Dachte um bloss eine LED leuchten zu lassen geht das auch so 
(die LED zieht 12mA übrigens bei 3.3V).

Du meinst ich hab jetzt alle meine µC kaputt gemacht wegen fehlendem 
Vorwiderstand? Würde mich sehr erstaunen wenn doch nur 12mA fliessen bei 
3.3V. Ich meine bei 5V und korrekt dimensioniertem Vorwiderstand würden 
20mA fliessen, das wäre ja eine höhere Belastung. Liege ich falsch?

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Hartmann schrieb:
> Hi!
>
> Der Reset Widerstand fehlt 10k zu Plus PortC6 (Pin1)
>
> Hier steht wie er angeschlossen werden muß
> http://www.dieelektronikerseite.de/uC%20Ecke/Lecti...
>
> cya The_ride

Wie geschrieben, den hatte ich auch schon dran, hat nichts geändert. 
Aber ich hab früher immer ohne den Pullup gearbeitet. Ist auch nicht 
verboten laut ATMEL, es wird nur störungsanfälliger (es ist ein interner 
Pullup vorhanden).

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas O. schrieb:
> Schau dir mal das Diagramm an, schätze mal ungefähr ab wieviel Strom die
> LED bei 5V schluckt und schau nochmal wieviel mA du einem Pin
> abverlangen darfst. Stellst sich dann nur noch die Frage wer überlebt es
> länger der Pin oder die LED, wenn du verdammt viel Glück hast (oder
> extra vorgesorgt hast) bricht aber auch nur deine Versorgungsspannung
> zusammen und alles bleibt heil.

Hab ich nie gemacht (5V an LED).

>
> Das Programm selber kann man doch im AVR-Studio durchsimulieren bzw. die
> Fehlermeldungen auswerten falls es garnicht zum simulieren kommt.

Es gibt keine Fehlermeldungen. Die Simulation läuft wie gewünscht.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um mal etwas zu steuern. Das scheint mir doch der springende Punkt:


aus dem ersten Beitrag:

"Und als Ergänzung: Um zu überprüfen ob der µC überhaupt selbständig
läuft nach der Programmierung, habe ich jetzt mal beim ATmega328p die
Fuse CKOUT gesetzt damit der Prozessortakt am Pin 14 (PB0) ausgegeben
wird. Multimeter zeigt knapp 8 MHz dort an. Die LED leuchtet wenn ich
sie dort einstecke. Grundsätzlich ist der Port also funktionsfähig,
liefert genug Strom und die CPU läuft. Also wieso kann ich
Softwaremässig keinen Port einschalten?

Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das
Programm nicht automatisch gestartet wird? Irgendwelche Bootloader
Optionen die Probleme machen wenn man keinen Bootloader hat?"

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte mal die lss-Datei posten.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Abblockkondensatoren, sind die echt essenziell?

Ja.

>Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das
>Programm nicht automatisch gestartet wird?

Ja, man kompiliert das Programm für den falschen Prozessor und/oder
wählt die falsche HEX Datei aus.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, Kondensatoren. Einen möglichst grossen Elko? Oder verschiedene?

lss Datei?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tüll schrieb:
> lss Datei?

Im Projekt-Ordner der Unterordner "default".
Daraus die Datei "NameDeinesProjektes.lss".

Autor: MarioT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tüll schrieb:
> OK, Kondensatoren. Einen möglichst grossen Elko? Oder verschiedene?

100nF
Elkos sind zu langsam.
Ohne Abblockkondensatoren kann das ganze so in Schwingung kommen das 
alles mögliche passieren kann, aber ganz selten das was soll.

Autor: Neuling 10001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es daran liegen, das am Ende vom Quelltext keine neue Zeile 
eingefügt wurde ?

Autor: Tüll (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
lss Datei angehängt.

Ich hab jetzt wieder meinen alten 7805 Regler aufgebaut samt zugehörigen 
Kondensatoren (100nF), die so früher immer funktioniert haben.
Keine Änderung.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OMG

Problem gelöst. Infos kommen gleich.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
> Ja, man kompiliert das Programm für den falschen Prozessor und/oder
> wählt die falsche HEX Datei aus.

Hätte ich nicht für möglich gehalten weil ja die HEX Datei immer gewählt 
wird wenn man ein neues Projekt öffnet (so dachte ich). Aber irgendwie 
hab ich oder AVR Studio was verbockt und da stand die falsche HEX Datei 
aus einem anderen Projekt drin. Die hab ich immmer und immer wieder in 
den µC geschrieben - hat dann natürlich wenig Sinn wenn ich den 
Quellcode von meinem neuen Programm ändere...

Danke an alle!

Ich bin in den letzten 24 Stunden 1 Jahr gealtert aber es hat sich doch 
gelohnt hier zu fragen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.