Forum: Mikrocontroller und Digitale Elektronik Probleme mit ATMEGA32


von Julius B. (julidavi)


Lesenswert?

Ich hab mit zum Einstieg in die µC-Elektronik einen ATMEGA32 besorgt und 
ein Experimentierboard aufgebaut.
ungefähr so, nur mit 8 LEDs und 8 Tastern:
http://www.rn-wissen.de/index.php/Bild:Avrtutorial_grundschaltung_ 
spannung.gif

Als Programmer nutze ich so einen: 
http://www.avr-programmer.com/usb-isp/
Software ist Bascom. Ich hab also versucht, folgendes Programm in den 
Controller zu laden:
1
$regfile = "m32def.dat"
2
$framesize = 32
3
$swstack = 32
4
$hwstack = 32
5
6
Config Porta.1 = Output                                    
7
Config Porta.2 = Output
8
9
Do
10
  Porta.1 = 1                                               
11
  Waitms 100
12
  Porta.1 = 0                                               
13
  Waitms 100
14
  Porta.2 = 1                                               
15
  Waitms 100
16
  Porta.2 = 0                                               
17
  Waitms 100
18
Loop
19
20
End

Mein Problem ist folgendes: Nachdem ich mindestens 10 mal auf "programm 
chip" gedrückt habe, leuchtet mal eine, mal die andere, oder auch beide 
LEDs. Aber blinken tun sie nicht. hat irgendjemand eine Idee, was ich 
falsch mache?

Gruß, Julius

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Lesenswert?

Bin mir nicht ganz sicher, aber sollte man nicht z.B.

> $Crystal  =  1000000

bei Bascom mit angeben??? Versuch es einfach mal zu ergänzen.

von spess53 (Gast)


Lesenswert?

Hi

>Config Porta.1 = Output

Sollte es nicht

Config PINA.1 = Output

heißen?

MfG Spess

von Sudo (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Config Porta.1 = Output
>
> Sollte es nicht
>
> Config PINA.1 = Output
>
> heißen?
>
> MfG Spess

Da ist BASCOM schmerzlos. Es kann bei diesem Kommando Porta oder Pina in 
Groß- oder Kleinschreibung stehen. Es stellt PA1 auf Ausgang.

Das $crystal im Programmcode sollte man hinschreiben, sonst greift der 
in der IDE eingestellte Wert und den kennen wir nicht (nur der Julius).

@Julius B.: Zum Flashen mußt du auf Program Chip drücken, drauf achten 
das die Lasche Flash Rom aktiv ist, danach nochmal auf Auto program chip 
klicken. Wenn keine Fehlermeldungen auftauchen reicht das Ganze 1 Mal.

Nach jeder Programmänderung nicht vergessen neu zu kompilieren

von Julius B. (julidavi)



Lesenswert?

Ich hab ja in der Schaltung einen Quarz. muss ich da erst ein fusebit 
ändern oder reicht es, wenn ich $crystal = 5000000 hinschreibe(mein 
Quarz hat 5MHz)
Hier sind Schaltplan und Platinenlayout:

von Rainer U. (r-u)


Lesenswert?

Du musst die Fusebits anpassen (siehe Datenblatt), crystal=.. reicht 
nicht.

von Julius B. (julidavi)


Lesenswert?

Das Auto flash hatte ich schon vorher aktiviert, aber es funktioniert 
immer noch nicht. Wie gesagt, manchmal nach dem übertragen leuchtet die 
LED, manchmal nicht.

von Sudo (Gast)


Lesenswert?

Julius B. schrieb:
> Das Auto flash hatte ich schon vorher aktiviert, aber es funktioniert
> immer noch nicht. Wie gesagt, manchmal nach dem übertragen leuchtet die
> LED, manchmal nicht.

Welche LED leuchtet manchmal und manchmal nicht.
Ich glaube, es gibt das Problem, das dein Programmer keine gute 
Verbindung zum ATMega32 bekommt?

Fürs erste brauchst du den externen Quarz nicht.

Wenn der Mega32 neu ist läuft der mit 1MHz. Schreib also in dein obiges 
Programm $crystal = 1000000 oben mit rein, kompiliere es, drücke 
"Programm chip". Mach danach weiter und beschreibe genau was du machst 
und welche Ausgaben dir BASCOM macht. "Funktioniert nicht" hilft uns 
nicht weiter.

von Julius B. (julidavi)


Lesenswert?

Naja, von den 2 LEDs, die abwechselnd blinken sollen, leuchtet manchmal 
eine oder die andere, oder beide. Jeweils nach dem übertragen. Wenn ich 
dann erneut übertrage, leuchet die andere oder beide oder keine oder die 
eine leuchtet weiter. Das ganze sieht eher nach Zufall auf. Was meinst 
du mit "welche Ausgaben dir BASCOM macht"?

Gruß, Julius

von Spess53 (Gast)


Lesenswert?

Hi

Ohne Änderung der Fuse-Bits wird die Schaltung nicht richtig 
funktionieren. Die werksseitig gesetzte JTAG-Fuse verhindert den Zugriff 
auf S3...6.

MfG Spess

von Julius B. (julidavi)


Lesenswert?

Beeinflusst das auch die LEDs?

Gruß, Julius

von Sudo (Gast)


Lesenswert?

Julius B. schrieb:
> Was meinst
> du mit "welche Ausgaben dir BASCOM macht"?

zB wird nach "Auto program chip" geflasht und danach kommt so etwas wie 
"verify memory" - hab grad kein laufendes System

Hast du $crystal schon eingetragen? Ist wichtig für die wait 
Anweisungen.

Spess53 hat mit dem Jtag Fuse recht. Kann man aber auch später machen. 
Dein oben gepostetes Testprogramm benutzt die Schalter ja noch nicht.

von Hubert G. (hubertg)


Lesenswert?

Nein, nur die Taster.

von Julius B. (julidavi)


Lesenswert?

Die Funktion "Auto programm chip" finde ich nicht. Kann mir mal jemand 
sagen, wo ich das finde.
Das "Crystal = 1000000" habe ich schon eingetragen. Funktioniert 
trotzdem nich viel besser.

Gruß, Julius

von Sudo (Gast)


Lesenswert?

Hab hier nochwas für dich gefunden. Da steht es etwas weiter unten. Und 
auch wie Jatg disabled wird.
http://www.rn-wissen.de/index.php/Bascom_-_Erstes_Programm_in_den_AVR_Controller_%C3%BCbertragen

von Julius B. (julidavi)


Lesenswert?

Danke, aber das habe ich schon gelesen. Ich habe eine andere 
Version(2.0.7.5), als in dem Tutorial.Ich finde die 
Fusebit-Einstellungen nicht.

Gruß, Julius

von Sudo (Gast)


Lesenswert?

Das ist in 2.0.7.5 auch nicht groß anders. Der Ablauf und Icons sind 
gleich.

Nochmal, Beschreib GENAU was du tust, und was genau dann nicht geht. Ich 
weis sonst auch nicht weiter.

von Julius B. (julidavi)


Lesenswert?

Also, Ich habe mir das Experimentierboard aufgebaut(siehe Bilder), den 
Programmer gekauft, und Bascom installiert. Ich hab bei den 
Programmer-Einstellungen STK500 angegeben und dazu den pfad zur 
stk500.exe. Ich habe "Autoflash" und "Auto verify" aktiviert und den 
COM-Port angegeben. Danach habe ich mein Programm eingetippt und auf 
"compile" gedrückt. Ich habe die Spannungsversorgung meiner Schaltung 
eingeschaltet und den Programmer mit dem ATMEGA und der PC (Windows xp 
professional)verbunden. Danach habe ich "F4" (Programm chip) gedrückt, 
aber es ist nichts passiert. Nach mehrmaligem Drücken, leuchtete mal 
eine LED. Dann mal die andere, oder beide, oder gar keine. Mein Problem 
ist, dass das ganze nicht funktioniert.

Gruß, Julius

von Sudo (Gast)


Lesenswert?

Julius B. schrieb:
> Danach habe ich "F4" (Programm chip) gedrückt,
> aber es ist nichts passiert

DAS ist das Problem. Es müßte ein weiteres Fenster aufgehen, auf dem du 
dann auch "Auto program chip" findest.

Warum das Fenster nicht aufgeht, bin ich überfragt. Leider kenne ich den 
Programmer auch nicht. Sorry. Vielleicht weis jemand anderes Rat.

von Hubert G. (hubertg)


Lesenswert?

Mach mal bei den Programmereinstellungen den Haken bei Auto Flash weg.
Dann siehst du ob der Programmer überhaupt richtig erkannt wurde.

von Julius B. (julidavi)


Lesenswert?

Das Hab ich auch schon probiert., aber es ändert sich nichts.
Achso, wenn ich "Programm chip" drücke, öffnet sich kurz ein 
Konsolenfenster, in dem 6 Zeilen stehen. Das geht aber nach ca. 200 ms 
wieder zu.
In der Letzten Zeile steht: "FLASH verification failed"

Gruß, Julius

von Julius B. (julidavi)


Lesenswert?

Ich weiß nicht, ob das stimmt, aber ich könnte mir ja vorstellen, das 
der interne Taktgenerator nicht funktioniert, weil ich einen quarz 
eingebaut, das Fusebit aber nicht umgestellt habe. darum kann es sein, 
das der Controller die "waitms" Funktion nicht ausführen kann. Könnte 
das die Ursache sein?

Gruß, Julius

von ... (Gast)


Lesenswert?

Wenn "FLASH verification failed" angezeigt wird, bekommst du dein 
Programm nicht sauber bzw. gar nicht auf den Controller.
Teste mal ein anderes Brennprogramm, z. B. adrdude, bzw mit grafischer 
Oberfläche Burn-O-Mat. Versuche damit erst mal die Signatur zu lesen.

von Spess53 (Gast)


Lesenswert?

Hi

>Könnte das die Ursache sein?

Nein. Der angeschlossene Quarz stört nicht.

MfG Spess

von Hubert G. (hubertg)


Lesenswert?

Nein, kann es nicht.
Das Problem liegt beim STK500. Probier mal den nativ-Treiber.

von Julius B. (julidavi)


Lesenswert?

Wie ist das mit dem "native driver"? Was ist der Unterschied?

Gruß, Julius

von Julius B. (julidavi)


Lesenswert?

Mit dem native driver öffnet sich zumindest das extra Fenster, aber Wenn 
ich ein Fusebit ändere, und das Programm neu starte, die Lock- und 
Fusebits wieder auslese ist alles wie vorher. außerdem steht unten 
immer:

Chip differs a bytes address : 00000

und

: stk500_2_ReciveMessage(): timeout: -1

was bedeutet das?

Gruß, Julius

von Julius B. (julidavi)


Lesenswert?

Und manchmal kommt noch eine errorbox mit der Meldung:

"error programming fuses:
fuse high error"

von Hubert G. (hubertg)


Lesenswert?

Was hast du für ein PC-Betriebssystem.
Ich habe Win7 32bit ein STK500 über einen USB/RS232 Wandler und einen 
USBASP Programmer.
Beim STK500 nativ musst du auch noch den COM-Port angeben.
Im Programmierfenster steht links oben Chip, da kannst du den µC 
identifizieren.
Was steht dann im Fenster, mach mal einen Screenshot.

von Julius B. (julidavi)


Lesenswert?

Windows XP professional, das hatte ich schon gesagt.

Ja, da steht "Chip", aber was soll ich da machen? draufklicken? Da 
passiert aber nichts.

Gruß, Julius

von Hubert G. (hubertg)


Lesenswert?

Da sollte dann ein Fenster aufgehen.
Ich kann dir da leider auch nicht weiterhelfen. Wenn sich hier nichts 
tut, dann probier mal http://www.roboternetz.de  da gibt es eine große 
BASCOM-Community. Ein besserer Betreff wäre aber gut. Programmer Install 
Problem oder so ähnlich.

von Julius B. (julidavi)


Lesenswert?

Ich wusste ja anfangs nicht, ob die Schaltung, oder der Controller, oder 
der Programmer nicht richtig funktioniert. Woher sollte ich das wissen?

Gruß, Julius

von Hubert G. (hubertg)


Lesenswert?

Das Programm funktioniert, wenn das $Crystal=5000 drinnen steht.
Ob deine Hardware funktioniert kann ich nicht sagen, tippe aber eher 
darauf das das ein Install-Problem ist.
Aber wie schon gesagt, in einem BASCOM-Forum kann dir eher geholfen 
werden. Diese Diamex-Programmer sind ja nicht so selten.

Ich verwende BASCOM nur wenn ich ein Programm bekomme in dem 
Kleinigkeiten zu ändern sind. An sonst programmiere ich in C mit dem 
AVR-Studio.

von Julius B. (julidavi)


Lesenswert?

Wieso $Crystal=500? Erstens hat mein Quarz 5 MHz, und zweitens muss ich 
doch erst das Fusebit ändern.

Gruß, Julius

von Hubert G. (hubertg)


Lesenswert?

Da sind bei mir einige Nullen verloren gegangen. Wenn die Fuses noch 
nicht geändert sind dann natürlich §Crystal=1000000;

Edit: und natürlich $Crystal

von Julius B. (julidavi)


Lesenswert?

Die Fusebits kann ich ja nicht ändern, wiel das mit der 
Controller-Verbindung nicht klappt.

Gruß, Julius

von Gerhard K. (mikros)


Lesenswert?

Du mußt das AVR Studio installieren. Lies mal die Beschreibung zu Deinem
Programmer durch.

von Julius B. (julidavi)


Lesenswert?

Das habe ich schon. Außerdem muss man das nur wegen der stk500.exe.

Gruß, julius

von Paul Baumann (Gast)


Lesenswert?

Du kannst aber mal mit dem AVR-Studio probieren, ob das Programmier-
gerät vernünftig erkannt wird.

Tools->Programm AVR->Connect

Dann den Programmer auswählen. Es gibt dann eine Meldung, ob das Ding
gefunden wurde. Falls ja, mußt Du erst mal den Kontrollertyp einstellen
und dann die Signatur des Kontrollers auslesen.

Die muß stimmen, sonst hat es keinen Sinn, weiter machen zu wollen.

MfG Paul

von Meik K. (mandragora_m)


Lesenswert?

habe ähnliche Probleme, gleicher Programmer und Steckboard.
Bascom habe ich mit den Einstellungen stk500 nativ treiber betrieben.
gleiches Betriebssystem. Bei mir öffnet sich ein Fenster wenn ich auto 
programm chip klicke (F4) ein Fenster mit Namen "ATMEL STK500 protocol 
compiler Programmer" in diesem Fenster ist oben rechts ein Chip Fenster 
wo dein Chip Typ drin stehen sollte wenn nicht unter Reiter Chip mal auf 
identfy klicken wenn das alles super ist und kein fehler wie chip past 
nicht etc, dann schon mal i.O. (bei mir waren es solche Fehler). 
Externen Quarz braucht man für den anfang nicht ich arbeitete am anfang 
nur mit 2 led und sogar die Target Spannung vom Programmer selber 
funktioniert.
Bei mir ist das Problem nur beim testen mit LCD aufgetreten. Ich habe 
dann beim Übertragen die Fehlermeldung das alles supi ist bis auf die 
Meldung "Chip differes at Bytes Address : 00087" oder andere Endnummern.
Zudem wird der Text garnicht oder nur Teile oder nur schwarze Kästchen 
etc angezeigt. Denke bei Julius B ist das dann ähnlich.
Were nett wenn uns einer Hilft

von Weingut P. (weinbauer)


Lesenswert?

ja, in der Reicheltbeschreibung steht:

- sehr schnelle Datenübertragung erfolgt mit 12 Megabit -
- Datenübertragung per Software einstellbar, langsamere
Übertragungsraten wählbar

12MBit sind 1,5MHz ISP-Takt, viel zu hoch.

-> 250kHz bei neuem AVR

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.