Forum: Mikrocontroller und Digitale Elektronik Probleme bei Programmieren von ATMega32


von Mugen (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Ich habe vor kurzen eine Grundschaltung für ATMega32 auf einer Platine 
aufgebaut. Soweit ok. Der Schaltplan könntet ihr oben anschauen. Heute 
habe ich den ersten Versuch gestartet, eine Led blinken zu lassen und 
dann bei Block C fängt der Ärger an. (Blocks A, B und D gehen 
problemlos)

PC7(TOSC2) geht
PC6(TOSC1) geht
PC5 (TDI) lässt sich nicht programmieren. (Ich konnte noch schwaches 
Leuchten von Led feststellen, obwohl der Pin gar nicht definiert wurde 
bzw. gar nicht vorher geflasht wurde).
PC4 (TDO) lässt sich nicht programmieren. (In Vergleich zum Oben 
leuchtet der Led nicht)
PC3 (TMS ) lässt sich nicht programmieren. (Ich konnte noch schwaches 
Leuchten von Led feststellen, obwohl der Pin gar nicht definiert wurde 
bzw. gar nicht vorher geflasht wurde).
PC2 (TCK)  lässt sich nicht programmieren. (Ich konnte noch schwaches 
Leuchten von Led feststellen, obwohl der Pin gar nicht definiert wurde 
bzw. gar nicht vorher geflasht wurde).
PC1 (SDA) geht
PC0 (SCL)  lässt sich nicht programmieren. (In Vergleich zum Oben 
leuchtet der Led nicht)

Beispiel Codes, die ich benutzt habe:

http://timogruss.de/2012/12/greetboard-atmega32-blinkende-led/

http://evolutec.publicmsg.de/index.php?menu=software&content=blink_by_sleep

Den Quarz habe ich auch vorher eingestellt (#define F_CPU 16000000UL)

PS: Könnt ihr mir sagen, wo ich den Fehler eventuell gemacht habe? Oder 
haben diese Pins irgendwelche besondere Eigenschaften?

Danke

von Patrick (Gast)


Lesenswert?

Wie hast Du die Fuses gesetzt? -> Klingt, als ob die JTAGEN (noch) 
aktiviert wäre.

von Jan (Gast)


Lesenswert?

JTAG Interface ist noch enabled! (TDI, ...)
Fuse JTAGEN.

Jan

von Mugen (Gast)


Lesenswert?

Ich habe da eigentlich nichts gemacht. Geflasht wird mit AVRISP mk2 
(original) unter Atmel Studio 6.

PS: Ich wusste nicht, dass man da explizit etwas ausschalten sollte. Wie 
genau muss ich da vorgehen?

von isnah (Gast)


Lesenswert?

Das Bit 6 (JTAGEN) IM "Fuse-High-Byte" muss auf logisch "1" gesetzt 
werden, um die normale Portfunktion zu erlangen.

von holger (Gast)


Lesenswert?

>Das Bit 6 (JTAGEN) IM "Fuse-High-Byte" muss auf logisch "1" gesetzt
>werden, um die normale Portfunktion zu erlangen.

Das kann man viel einfacher sagen: Haken weg bei JTAGEN.

von Jan (Gast)


Lesenswert?

Mugen schrieb:
> Den Quarz habe ich auch vorher eingestellt (#define F_CPU 16000000UL)

NEIN. Damit stellst Du nicht den Quarz ein, sondern teilst dem
Compiler mit, wie die Fuses (CKSELx) gesetzt werden.
Momentan duaern deine Delays 16 mal länger als gewünscht, da der
Mega32 noch mit 1 MHz läuft, der Compiler aber von 16 MHz ausgeht.

Jan

von Jan (Gast)


Lesenswert?

Klarstelleung:
wie du panst, die Fuses einzsutellen

von isnah (Gast)


Lesenswert?

@Jan bei Ponyprog hast du mit deiner "Häkchenmethode" am "Latrinengriff" 
gezogen und unter avrdude gibt es weit und breit keine Haken zum 
wegmachen.

von isnah (Gast)


Lesenswert?

Sorry Jan, es ist natürlich Holger angegangen.

von holger (Gast)


Lesenswert?

>Ich habe da eigentlich nichts gemacht. Geflasht wird mit AVRISP mk2
>(original) unter Atmel Studio 6.

>bei Ponyprog hast du mit deiner "Häkchenmethode" am "Latrinengriff"
>gezogen und unter avrdude gibt es weit und breit keine Haken zum
>wegmachen.

Siehe oben.

>@Jan

Mein Name ist holger, mir musst du ans Bein pinkeln;)

von Jan (Gast)


Lesenswert?

das war Holger ;-)
Genau wegen diesen Zweideutigkeiten lasse ich mich nicht
zu mir unbekannte Programmiersoftware aus

von Mugen (Gast)


Lesenswert?

Perfekt. Jetzt geht es. Ich musste tatsächlich nur ein Häkchen bei 
JTAGEN weg nehmen.

Danke für eure Hilfe ^_^

von Mugen (Gast)


Lesenswert?

@Jan

Sollte man den Quarz auch irgendwo einschalten? Oder geht es über 
irgendwelche Funktionen?

von Jan (Gast)


Lesenswert?

da der Quarz schon da ist, wäre es natürlich wünschenswert.
Ich rate dir, lieber #define F_CPU 1000000UL zu schreiben.
Um den Quarz zu aktivieren musst du die Fuses CKSEL0, -1, -2, -3
RICHTIG (!!!!!!!) setzen.
Wenn du dabei einen Fehler machst, ist der Mega32 verloren
("zerfust"). Mach das erst, wenn du das Daetenblatt gelesen und
VERSTANDEN hast. Ansonstenen lass dir von jemand helfen, der das
Atmelstudio benutzt.

Jan

von Mugen (Gast)


Lesenswert?

Ich habe gerade bei CKOPT High auf 0xC9 und Low auf 0xFF gesetzt. Ist es 
richtig so? Läuft ATMega32 jetzt mit vollen 16Mhz?

PS: Led blinkt auf jeden Fall schneller als vorher bei gleichen 
Einstellungen.

Quelle: 
http://projekte.myavr.de/index.php?sp=pages/kleiner_bascom_avr_kurs_fusebits_standard

von isnah (Gast)


Lesenswert?

Ja mit dem Low Fuse Wert 0xFF hast du deinen 16MHz Qzarz aktiviert. Wenn 
du jetzt mit der Define-zeile "#define F_CPU 16000000UL" und der 
main-zeile "delay_ms(1000)" dein Programm ausführst, dann sollte die Led 
im Sekundentakt blinken.

von Mugen (Gast)


Lesenswert?

@ isnah

Ja Stimmt. Es blinkt jetzt tatsächlich mit der Verzögerung von einer 
Sekunde.

PS: Am Anfang hatte ich mich gewundert, warum das Teil so lange 
gebraucht, obwohl in den Kommentaren vom Code-Beispiel von einer Sekunde 
die Rede war.

von Route_66 (Gast)


Lesenswert?

Hallo!
Damit Dein Mikrocontroller auch noch bei abgezogenem Programmer 
funktioniert, solltest Du den R1 nach Vcc und nicht nach GND legen.

von Route_66 (Gast)


Lesenswert?

...sorry falsch geguckt in dem Chaosschaltplan.

von Mugen (Gast)


Lesenswert?

@ Route_66
Was hättest du erwartet? Es ist mein erster Schaltplan, den ich mit 
Eagle erstellt habe. (Als Basis hatte ich einen von RS-Wissen Seite 
genommen)

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.