Forum: Mikrocontroller und Digitale Elektronik ATmega8a defekt?


von Johannes A. (ensheimer)


Lesenswert?

Hallo,

ich habe mir zum Einsteigen das AVR Starterkit gewählt und programmiere 
mit Bascom. Im Starterkit war ein ATmega8a-PU und ein AVR ISP MK II 
enthalten.

Zum Testen habe ich jetzt 2 sehr simple Programme geschrieben um die auf 
dem Board enthaltene LED leuchten bzw blinken zu lassen.

Hier mal ein Quellcode:

'Blinken
$regfile = "m8adef.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100

Config Portc.5 = Output

 Do

   Portc.5 = 1

   Wait1

   Portc.5 = 0

   Wait 1

 Loop

End

Übertragen habe ich die .hex Datein mit Hilfe des AVR Studios 6.
Tools -> Device Programming -> ATmega8a -> hex. Datei wählen -> Program

Es erscheint keine Fehlermeldung und der Vorgang scheint abgeschlossen.

Allerdings passiert nichts. Die LED leuchtet weder, noch blinkt sie.
Wo liegt mein Fehler? Ich habe als regfile m8def.dat versucht, 
funktioniert auch nicht.
Die Led sollte sich an Pin 28 -> PortC.5 befinden. Habe es aber auch 
schon an anderen Ports mit Steckbrett und eigenen LED'S versucht.

Kann ich den Controller irgendwie reseten oder ist das Teil defekt?

LG Johannes

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du hast AVcc und AGND aber schon an Versorgungsspannung resp. Masse 
angeschlossen, oder?

Johannes A. schrieb:
> Do
>
>    Portc.5 = 1
>
>    Wait1
>
>    Portc.5 = 0
>
>    Wait 1
>
>  Loop

Bin kein Bascom Spezi, aber entweder 'Wait1' oder 'Wait 1' ist falsch.

von erik (Gast)


Lesenswert?

Johannes A. schrieb:
> Übertragen habe ich die .hex Datein mit Hilfe des AVR Studios 6.
> Tools -> Device Programming -> ATmega8a -> hex. Datei wählen -> Program

Hast du anschließend mal auf Verify geklickt, um zu überprüfen, ob das 
Programm richtig im Controller angekommen ist?


Nehme an, die Fuses sind alle richtig gesetzt...




Matthias Sch. schrieb:
> Johannes A. schrieb:
>> Do
>>
>>    Portc.5 = 1
>>
>>    Wait1
>>
>>    Portc.5 = 0
>>
>>    Wait 1
>>
>>  Loop
>
> Bin kein Bascom Spezi, aber entweder 'Wait1' oder 'Wait 1' ist falsch.

Wahrscheinlich wird "Wait1" nicht als Befehl erkannt, deshalb ist der 
entprechende Pin nur für eine extrem kurze Zeitspanne aktiv (einen 
Takt).

von Johannes A. (ensheimer)


Angehängte Dateien:

Lesenswert?

Das Wait1 war nurn Tippfehler, hab das im richtigen Programm korrekt, 
sorry.
Also daran kann es nicht liegen.

'Leuchten
$regfile = "m8adef.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100

Config Portc.5 = Output

Portc.5 = 1

End

Das Funktioniert wie gesagt auch nicht. Noch einfacher kann ichs nicht 
machen^^

An den Fuses hab ich nichts geändert.
Hab mal einen Screenshot angehängt.

Wenn ich verify drücke kommt: Verifying Flash...OK
Das sollte also soweit auch passen.

von erik (Gast)


Lesenswert?

Versuch erst mal, den ganzen Port C auf Output zu konfigurieren.
Meine, mich erinnern zu können, dass Bascom bei einzelnen 
Pin-Konfigurationen manchmal Probleme macht.

Dann wie gehabt den einzelnen Pin ansteuern.


Was mißt du an den Pins 7, 8, 20 und 22 gegen GND?

von Joe (Gast)


Lesenswert?

Man kann auch aus BASCOM heraus direkt Programmieren.

Bei den Optionen den Programmer wählen und dann F4 drücken.

von Johannes A. (ensheimer)


Lesenswert?

erik schrieb:

> Was mißt du an den Pins 7, 8, 20 und 22 gegen GND?

Wenn ich die Pins gegen GND vom Netzteil messe komme ich auf:

5,3V bei Pin 7 und 20
0,7V bei Pin 8 und 22

Wenn ich die auf Pin 8 messe, der sollte ja GND sein,  komme ich auf:

4,6 V bei Pin 7 und 20 und 0V bei den anderen 2.

von erik (Gast)


Lesenswert?

Johannes A. schrieb:
> erik schrieb:
>
>> Was mißt du an den Pins 7, 8, 20 und 22 gegen GND?
>
> Wenn ich die Pins gegen GND vom Netzteil messe komme ich auf:
>
> 5,3V bei Pin 7 und 20
> 0,7V bei Pin 8 und 22
>
> Wenn ich die auf Pin 8 messe, der sollte ja GND sein,  komme ich auf:
>
> 4,6 V bei Pin 7 und 20 und 0V bei den anderen 2.

Klingt ja so weit ganz gut!

guck mal hier:
http://www.avr-praxis.de/forum/showthread.php?372-Bascom-Alias-Input-Output



Hier gibt es ein Bascom-Forum (sehr empfehlenswert!):

http://bascom-forum.de/forum.php?s=17be86f98a038b06fe6fc18189085d57

Da sieht der Moderator meist direkt, wo der Hase im Pfeffer liegt und 
gibt Hilfe.




erik schrieb:
> Versuch erst mal, den ganzen Port C auf Output zu konfigurieren.
> Meine, mich erinnern zu können, dass Bascom bei einzelnen
> Pin-Konfigurationen manchmal Probleme macht.

Ansonsten das mal testen!

von Thomas D. (thomasderbastler)


Lesenswert?

Also wenn Du die Fuses so einstellst :
LOW 0xE1
High 0xD9

dann wäre es der Auslieferungszustand also interner Oszillator mit 1 MHz
 Dein Programm

$regfile = "m8adef.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100

Config Portc.5 = Output

Portc.5 = 1

End

ist auch OK.

LED richtig herum ? Die ist auch OK ?

Reseteingang über 10K an +5V ?
Warum hast an Pin8 und 22 0.7V ? muss auf GND liegen..

von Johannes A. (ensheimer)


Lesenswert?

Thomas der Bastler schrieb:
> Also wenn Du die Fuses so einstellst :
> LOW 0xE1
> High 0xD9
>
> dann wäre es der Auslieferungszustand also interner Oszillator mit 1 MHz
>  Dein Programm

Die Fuses sind so eingestellt, siehe Screenshot.


> LED richtig herum ? Die ist auch OK ?

LED habe ich getestet, die Funktioniert.

> Reseteingang über 10K an +5V ?
> Warum hast an Pin8 und 22 0.7V ? muss auf GND liegen..

Sonst benutze ich wie gesagt ein Olimex-Board. Ich geh jetzt einfach mal 
von aus dass die Spannungsversorgung und Restwiderstände soweit passen.
Am Rest-Pin ist auch noch ein Taster angebracht, was passiert denn wenn 
ich den Drücke? Hilft das was?



erik schrieb:
> Versuch erst mal, den ganzen Port C auf Output zu konfigurieren.
> Meine, mich erinnern zu können, dass Bascom bei einzelnen
> Pin-Konfigurationen manchmal Probleme macht.

Habe ich auch probiert, funktioniert ebenfalls nicht.

von Thomas D. (thomasderbastler)


Lesenswert?

Johannes A. schrieb:
> Meine, mich erinnern zu können, dass Bascom bei einzelnen
>> Pin-Konfigurationen manchmal Probleme macht.

Hatte noch nie Probleme gehabt, nicht bei ATMEGA8. ATMEGA16 ist was 
anders...

Hat schon mal das Teil gefunzt ?

Kannst mal ein Bild machen ?

von Johannes A. (ensheimer)


Lesenswert?

Thomas der Bastler schrieb:

> Hat schon mal das Teil gefunzt ?
>
> Kannst mal ein Bild machen ?

So, ich habe jetzt den Controller mal auf ein Steckbrett gesteckt, die 
Stromversorgung vom Entwicklungsboard übernommen und dort getestet - und 
es funktioniert!
Nur wenn er auf dem Entwicklungsboard sitzt, will er nicht. Aber er 
lässt sich dort programmieren.
Habe jetzt auch noch ein 2. kleines Programm geschrieben mit 2 LED's die 
abwechselnd blinken, den Controller auf dem Entwicklungsboard 
programmiert, ihn aufs Steckbrett gesteckt und dort funktioniert alles 
wunderbar.

Ehrlich gesagt versteh ich das ganze überhaupt nicht.
Muss ich auf dem Entwicklungsboard noch irendwelche Jumper umstecken, 
oder ist das Ding defekt?
Benutze folgendes:
http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=74

von Dietrich L. (dietrichl)


Lesenswert?

Johannes A. schrieb:
> Sonst benutze ich wie gesagt ein Olimex-Board. Ich geh jetzt einfach mal
> von aus dass die Spannungsversorgung und Restwiderstände soweit passen.

Wenn Du ein Fehler suchst, ist "Ich geh jetzt einfach mal von aus" gar 
nicht gut. Da muss man Punkt für Punkt nachprüfen, ob das auch so ist.

Also mess mal die Versorgunsspannung an Pin 7 und 20 (ich sehe gerade, 
das hast Du ja schon) und am Reset-Pin 1: dort sollte auch ca. 5V sein.

Was mir dazu im Schaltplan auffällt: da ist auf dem Olimex-Board noch 
ein  ZM33064 (Spannungs-Monitor), der an den Reset geht. Seine 
Schaltschwelle ist zwischen 4,5 und 4,7V. Und Du hast bei Vcc einen Wert 
von 4,6V gemessen. Dann kann der ZM33064 also einen Reset auslösen.
Wenn das so ist:
- entweder ist deine Eingangsspannung am "Power Jack" zu klein, die Last 
zu groß oder der Spannungsregler LM317 falsch eingestellt (mit R3 oder 
R4): korrigieren
- oder Du entfernst R7, dann ist der ZM33064 außer Betrieb.

Johannes A. schrieb:
> Muss ich auf dem Entwicklungsboard noch irendwelche Jumper umstecken,

Ist der LED_J-Jumper gesteckt?

Gruß Dietrich

von Johannes A. (ensheimer)


Lesenswert?

Dietrich L. schrieb:
> Was mir dazu im Schaltplan auffällt: da ist auf dem Olimex-Board noch
> ein  ZM33064 (Spannungs-Monitor), der an den Reset geht. Seine
> Schaltschwelle ist zwischen 4,5 und 4,7V. Und Du hast bei Vcc einen Wert
> von 4,6V gemessen. Dann kann der ZM33064 also einen Reset auslösen.
> Wenn das so ist:
> - entweder ist deine Eingangsspannung am "Power Jack" zu klein, die Last
> zu groß oder der Spannungsregler LM317 falsch eingestellt (mit R3 oder
> R4): korrigieren
> - oder Du entfernst R7, dann ist der ZM33064 außer Betrieb.

Vielen dank, da liegt der Fehler wohl begraben. Sobald ich den Reset-Pin 
des Controllers mit dem des Boards verbinde habe ich die Probleme. Auf 
einem Steckbrett mit 10k an Masse funktioniert dagegen alles problemlos.

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.