Forum: Mikrocontroller und Digitale Elektronik Atmega64A Funktionsproblem


von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich hoffe Ihr könnt mir hier helfen. Ich habe ein, meiner Meinung nach, 
kurioses Problem.

Ich möchte das der Atmega64A acht Schalter (PORTA) ausliest, nachdem der 
PD3 gelöst worden ist und dann auf den Ausgängen (PORTC) die Outputs 
nacheinander kurz einschaltet, welche im Eingang aktiviert sind.

Gar nicht so das Problem dachte ich. In der main Schleife funktioniert 
alles. Dann habe ich versucht den Code ein wenig aufzuräumen. Jetzt 
startet der ATmega immer neu sobald eine Funktion aufgerufen wird.

Beispiel:

In der Main while Schleife, habe ich eine for-schleife drin, die den 
Eingang ausliest und den Ausgang entsprechend aktiviert. Diese Schleife 
habe ich versucht in eine Funktion auszulagern (setCS). Ich habe einfach 
nur die for Schleife in eine Funktion kopiert. Sobald ich die For 
Schleife aus der while auskommentiere und dafür die Funktion reinsetze, 
startet der Atmega immer neu, sobald er die Funktion durchlaufen hat. 
Was sehr komisch ist, aktiviere ich die Funktion und lasse die For 
Schleife in der Hauptschleife drin, sehe ich das beide Schleifen 
ausgeführt werden, da er zweimal die Ausgänge schlatet...

Das gleiche passiert, wenn ich die ganzen Initialisierungen für die DDRs 
und Ports in eine Funktion packe (setupPCB) und diese dann aktiviere und 
im Code auskommentiere. Dann startet er neu, sobald die setupPCB 
Funktion durchgelaufen ist.

Ich bin wirklich überfragt. Ich kann natürlich auch alles in der 
Hauptschleife lassen, würde aber gerne später noch andere Funktionen 
hinzufügen.

Würde es gar nicht funktionieren, hätte ich gedacht es liegt evtl. an 
der Verdrahtung, aber das selbe Verhalten zeigen zwei gleiche 
Microcontroller und wie gesagt in der Hauptschleife funktioniert es 
einwandfrei.

Vielen Dank schon mal für ein paar Tips

Stefan

.

von Peter D. (peda)


Lesenswert?

Stefan schrieb:
> Jetzt
> startet der ATmega immer neu sobald eine Funktion aufgerufen wird.

M103 Fuse.

von Stefan (Gast)


Lesenswert?

Das war schnell und die richtige Antwort.

M103 deaktiviert und es funktioniert.

Vielen Dank

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.