Forum: Mikrocontroller und Digitale Elektronik Einfachstes Startprogramm funktioniert nicht (ATmega168, C)


von Dominic N. (dominicn)


Lesenswert?

Hallo,

ich habe ein Anfängerproblem mit meinem ATmega168:

Ich habe an einen ATmega168-20PU einen ISP-Anschluss drangelötet und 
diesen mit dem ISP-Anschluss des ATMEL STK500 verbunden. Mit dem AVR 
Studio 5 kann ich nun die Device-ID auslesen und Programm in den Flash 
schreiben.

Dazu habe ich das einfache Programm aus dem AVR-GCC-Tutorial übernommen:
1
#include <avr/io.h>
2
int main(void) {
3
  DDRB = 0xFF;
4
  PORTB = 0x03;
5
  while(1) {
6
    // nichts machen
7
  }
8
  
9
  return 0;
10
}
Ich habe es kompiliert und in den Flash programmiert. Das geht auch 
alles gut laut AVR Studio:

Erasing device... OK
Programming Flash...OK
Verifying Flash...OK

Wenn ich allerdings die Spannung an den entsprechenden Pins (hier 14 und 
15) gegen GND messe erhalte ich immer 0V. Dabei bleibt der ISP 
angesteckt und das Board wird über das STK500 mit Spannung versorgt.

Habt ihr einen Tipp, wo ich meinen Fehler suchen muss?

Danke

von Alex S. (thor368)


Lesenswert?

Tach Dominic N.

- reset?
- fuses richtig gesetzt? clock?

Thor

von Dominic N. (dominicn)


Angehängte Dateien:

Lesenswert?

Was meinst du mit Reset genau? Die Stromzufuhr habe ich auch testweise 
schonmal unterbrochen, hat aber nichts geändert.

Laut AVR Studio sind die Fuses so gesetzt wie im angehängten Bild. Ich 
habe daran bisher nichts geändert.

von Klaus W. (mfgkw)


Lesenswert?

Ich würde darauf tippen, daß der Programmer vergisst, Reset wieder 
loszulassen. Das ist mir schon ein paar mal mit avrdude passiert.

Also entweder Reset messen, oder einfach den ISP-Programmer abziehen, 
aus- und einschalten und sehen, was passiert.

von Dominic N. (dominicn)


Lesenswert?

Es ist tatsächlich so, dass auf dem ISP-Anschluss auf allen vier Kanälen 
(MISO, SCK, MOSI, RESET) dauerhaft 5V anliegen. Ist das das Problem?

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Nein, dann sollte Dein µC eigentlich loslaufen. Es kann aber sein, dass 
Du aus Versehen deinen µC (zumindest PORTB) gekillt hast, wenn du keine 
Schutzwiderstände bei MOSI, MISO und SCK hingemacht hast. Das STK500 ist 
wohl recht niederohmig bei MOSI, MISO und SCK - und da diese vom STK500 
auf high gezogen werden und dein AVR versucht, diese auf low zu ziehen, 
wird wohl der Schwächere nachgeben - in diesem Falle dein AVR. Also: 
Neuen AVR besorgen und Schutzwiderstände einbauen.


Gruß
Jonathan

von Klaus W. (mfgkw)


Lesenswert?

RESET=5V ist auf jeden Fall ok.
Sicher, daß du das obige Programm wirklich zuende kompiliert hast und 
übertragen?

von Dominic N. (dominicn)


Lesenswert?

Aaaah, das wars. Vielen Dank erstmal für eure tollen und schnellen 
Tipps. Ich habe die falsche Datei einprogrammiert. Die heißt zwar 
genauso wie das .c-Programm aber ist nicht die aktuelle. Habe gerade mal 
das Dateidatum angeschaut und bin erschrocken.

Jetzt habe ich die richtige Datei gefunden und einprogrammiert. Vielen 
Dank! Ihr seid toll!

von Klaus W. (mfgkw)


Lesenswert?


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.