Forum: Mikrocontroller und Digitale Elektronik Einsteiger braucht hilfe ATmega8


von Jens H. (deltaspace)


Lesenswert?

Hallo Leute,

bin gerade erst beim einstieg in die AVR Welt und stehe gleich vor einem 
riesigen Problem.
Ich habe das AVR Mikrocontroller Lehrbuch von Roland Walter, eine 
entsprechende Experimentierplatine und einen USBasp brenner.

Ich habe wie im Buch beschrieben die FUSE für den ext. Crystal 
eingestellt.

Jetzt habe ich das Listing aus Kap. 2 abgetippt (BASCOM) und in den AVR 
gebrannt.  Danach soll die rote LED angehen, aber da tut sich nichts. Es 
kommt von Bascom beim brennen die Meldung:

F:\AVR Projekte\0201.EEP not found
128 bytes written to Flash

Wenn ich dann aber einen Vergleich mache, kommt die Meldung:
Chip differs at byte address : 00000

Was kann das Problem sein, warum sich dieser AVR nicht Programmieren 
lässt? Wie gesagt, es ist der erste Versuch. Kann es sein, das der Chip 
defekt ist?

MfG

Jens

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Jens H. schrieb:
> Hallo Leute,
>
> bin gerade erst beim einstieg in die AVR Welt und stehe gleich vor einem
> riesigen Problem.
> Ich habe das AVR Mikrocontroller Lehrbuch von Roland Walter, eine
> entsprechende Experimentierplatine und einen USBasp brenner.

Wenn Du Dir jetzt noch das Datenblatt des Mega8 besorgst, dann bist Du 
für den selbstständigen Einstieg gut vorbereitet.

>
> Ich habe wie im Buch beschrieben die FUSE für den ext. Crystal
> eingestellt.

Warum? Der Mega8 läuft ab Werk mit internem Takt von 1MHz. Damit sollten 
alle Einsteiger-Experimente möglich sein. Erst bei zeitkritischen Dingen 
wie UART oder genauer Uhr ist ein externer Quarz nötig. An die Fuses 
sollte man sich erst heranwagen, wenn man versteht, was man tut. Der 
Anfänger versteht das normalerweise noch nicht.

>
> Jetzt habe ich das Listing aus Kap. 2 abgetippt

Abtippen alleine reicht nicht, Du must versuchen, es zu verstehen. 
Ansonsten ist es schade um die Zeit.

> (BASCOM) und in den AVR
> gebrannt.  Danach soll die rote LED angehen, aber da tut sich nichts. Es
> kommt von Bascom beim brennen die Meldung:
>
> F:\AVR Projekte\0201.EEP not found
> 128 bytes written to Flash

Na vielleicht braucht das Programm ja keine EEP-Datei? Schau mal ins 
Datenblatt und ergründe die Unterschiede zwischen Flash, EEPROM, RAM, 
Registern und I/O.

>
> Wenn ich dann aber einen Vergleich mache, kommt die Meldung:
> Chip differs at byte address : 00000

Was hast Du verglichen, Flash oder EEPROM? Das sind ja zweierlei Dinge.

>
> Was kann das Problem sein, warum sich dieser AVR nicht Programmieren
> lässt?

Ich kenne und benutze den USBASP nicht. Schau doch mal in der Doku des 
Herstellers nach, wie er benutzt wird und welche Software er braucht. 
Ich brenne mit STK500 oder Dragon und nutze das AVR-Studio 4 auf dem PC 
zum Brennen, auch dann, wenn ich mal was in Bascom programmiere (sehr 
selten).

> Wie gesagt, es ist der erste Versuch. Kann es sein, das der Chip
> defekt ist?

Das ist sehr unwahrscheinlich. Ich tippe auf vermorkelte Fuses oder 
Inkompatiblität zu Bascom.

Tip: Vor jedem Programmierzugriff die Signature auslesen und auf 
Korrektheit prüfen. Nur so ist sichergestellt, dass der AVR ansprechbar 
ist und der richtige Typ eingestellt ist.

>
> MfG
>
> Jens

von Jens H. (deltaspace)


Lesenswert?

Hallo Kluchscheißender Kluchscheißer,

Das Datenblatt des Mega8 habe ich auch auf dem Rechner, und hab darin 
auch schon einiges gelesen.

Die Fuses habe ich eingestellt, weil dies im Buch so vorgegeben war. Der 
AVR ist ja auch noch ansprechbar. Ich kann zumindest noch den Typ usw. 
auslesen.

Verstanden habe ich das Listing schon. Das reines abtippen nicht 
ausreichend ist, ist schon klar. Man sollte die Funktion der Befehle 
kennen, bevor man sie einsetzt.

Ob das Programm eine EEP DAtei braucht, weiß ich nicht. im Datenblatt 
habe ich nichts dazu gefunden.
Aber wenn ich das richtig verstehe, dann ist die EEP Datei für die 
Daten, die in EEPROM kommen, oder nicht?

Was genau verglichen wurde, kann ich dir nicht sagen. Im Brennprogramm 
von BASCOM gibt es einen Vergleich Button, und da hab ich dann 
draufgedrückt, weil ich ja die Meldung bekommen habe, das die Bytes in 
den Flash geschrieben wurden.

Ich werd mir wohl auch noch ein STK500 zulegen, schon alleine deswegen, 
weil man damit auch falsch Programmierte Fuses wieder zurücksetzen kann.

Was bitte meinst du mit Inkompatiblität zu Bascom? Gibt es Chips von AVR 
die sich mit Bascom nicht brennen lassen?

Das mit dem Auslesen der Signatur habe ich gemacht. Dabei kam dann auch 
die Meldung Chip OK

von Joe (Gast)


Lesenswert?

Stell dein BASCOM-Programm hier rein.

von Joe (Gast)


Lesenswert?

Hab was für Anfänger gefunden:

http://home.arcor.de/wosm/AtmegaProjekt/index.htm

von Jens H. (deltaspace)


Lesenswert?

Hier mein Bascom Programm:
1
'0201.BAS: LED an Pin PD7 leuchten lassen
2
'Hardware: Rote LED an Pin PD7, gelbe an PD6, grüne an PD5
3
'--------------------------------------------------------------
4
5
$regfile = "m8def.dat"                                      'ATmega8-Deklarationen
6
$crystal = 3686400                                          'Taktfrequenz: 3,6864 MHz
7
8
Ddrd = &B10000000                                           'Pin PD7 als Ausgang konfigurieren
9
Portd = &B11111111                                          'Alle PortD-Pins auf High setzen
10
11
Do
12
Loop
13
End

Hab gerade nochmal bei dem Vergleicher geschaut, es ist der Flash, der 
verglichen wird.
Wenn ich den Chip lösche, und dann Teste ob der Chip gelöscht ist 
bekomme ich die Meldung: Chip erased
Nachdem ich dann das Programm auf den Chip geladen habe und einen Power 
Off/On Reset gemacht habe, findet er beim vergleich aber immer noch 
differenzen an Adresse 00000.

Deine Seite für Einsteiger sehe ich mir gleich an.

von The_Ride (Gast)


Lesenswert?

Hi!

Da kann nichts leuchten


Tipp mal das ein

$regfile "m8def.dat"
$crystal = 1000000

Config Portd = Output

Do
  Portd.0 = 1
  Waitms 500
  Portd.0 = 0
  Waitms 500
Loop

das stammt von der Seite
http://www.dieelektronikerseite.de/
er erklärt alles was man zum Anfang braucht habe auch damit angefangen 
:)

cya The_Ride

von oldmax (Gast)


Lesenswert?

Hi
Ein Tipp von mir: schau hier mal in die Tutorials. Zum Rest: Ein 
Controller arbeitet mit Hardware eng zusammen. Da ist es wichtig, auch 
diese zu kennen, um zu beurteilen, ob eine LED leuchtet oder nicht. 
LED's funktionierten nun mal nur in eine Richtung, deshalb ja auch der 
Begriff "Diode". Des weiteren: ist diese LED an VCC oder GND geschaltet 
? Nur mal so bemerkt: ein Datenblatt ist ja schon ganz gut, aber 
verstehst du auch, was da drin steht ? Ok, das mag bis hierher nicht 
sehr hilfreich gewesen sein, daher versuch ich's jetzt mal etwas anders:
Die Tutorials in Assembler, die hier stehen sind besser geeignet, wie 
ein Bascom-Programm. Warum ? Ganz einfach, du lernst zu begreifen, wie 
tief unten dein Controller mit der Hardware verbunden ist. Assembler 
macht dir mit jedem Befehl klar, du arbeitest mit Speicherzellen und 
Bits. Und so schwer ist das auch nicht. Wenn du's erst mal begriffen 
hast, wirst du Bascon nur noch für mathematische Aufgaben einsetzen. 
Eine Hilfe dazu: versuche die Kürzel (Mnmonik) immer zu lesen: Ld =Load, 
st= store, jmp= Jump etc. Auch wenn Assembler von Controller zu 
Controller unterschiedlich ist, es gibt auch viele Gemeinsamkeiten.
Gruß oldmax

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.