AVR µC funktionieren nicht - grundlegende Fehlersuche

Gast #2102828
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?

1
#include <avr/io.h>
2

3

4
int main (void) {
5

6

7
  DDRB = 0xff;                
8

9
  PORTB = 0xff;
10

11
  while(1) {
12

13
  }
14

15
  return 0;
16

17
}


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 :(
Gast #2102838
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.
#2102839
Lesenswert?

Hi!

Versuch es doch mal hiermit.
1
/*
2
 * main.c
3
 *
4
 *  Created on: 03.09.2009
5
 *      Author: The_ride
6
 */
7

8
#include <avr/io.h>
9
#include <stdint.h>
10
#include <util/delay.h>
11

12

13
int main(void)
14
{
15
  DDRB = 0xff;
16

17
    while(1)
18
  {
19

20
    {
21

22
      PORTB=0b000000001;
23

24

25
     {
26
          _delay_ms(100);
27
       }
28

29
      PORTB=0b000000000;
30

31

32
     {
33
          _delay_ms(100);
34
       }
35

36

37

38
  }
39

40
}
41
}

cya The_ride
Peter
Gast #2102885
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.htm?sp=article.sp.php&artID=100058

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.
Gast #2102891
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.
Gast #2102896
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.
Persönliche Seite #2102939
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
#2102952
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.
Angehängte Dateien:
Gast #2102953
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?
Gast #2102956
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).
Gast #2102960
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.
Gast #2102964
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?"
Gast #2103046
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.
Gast #2103122
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren