Forum: Compiler & IDEs SPI Sende-Funktion wird nicht beendet!


von puzi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ich habe ein Programm geschrieben um mit einem ATmega64L über SPI einen 
7-Segment treiber anzusteuern. Ich bennutze das AVR-Studio mit dem 
AVR-GCC Compiler.

Zum senden der daten erstellte ich eine Funktion.
Im AVR Simulator funktioniert die Funktion und das ganze programm 
einwandfrei.
Doch wenn ich es auf den uP lade, bleibt das Programm ind der ersten 
aufgerufenen Funktion stecken, d.h. sie wird nicht beendet und das 
Programm spring nicht zurück.

Ich habe keine ahnung warum es nicht funktioniert!

Vieleicht kann mir jo jeman helfen oder hatte schon das selbe problem!

Gruss puzi

von Dirk (Gast)


Lesenswert?

Hi,

wo schaltet du das globale I Flag ? (sei();) ???

Gruß,
Dirk

von puzi (Gast)


Lesenswert?

Ich benutze ja gar keine Interrupts!
oder muss ich das globale I Flag auch für Funktionen setzen?

gruss beat

von Rahul D. (rahul)


Lesenswert?

auch wenn es relativ unerheblich sein müsste:
Deine While-(Warte-)Schleifen sollten mit einem ; abgeschlossen werden.

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Das scheint mir wieder der allseitsbekannte "#SS"-Fehler zu sein:
Du musst den Pin, der im Datenblatt dafür vorgesehen ist, als Output 
konfigurieren, auch wenn Du den gar nicht benutzt.

von puzi (Gast)


Lesenswert?

ok, das werd ich gleich mal versuchen!

vielen dank für die informationen.

gruss puzi

von puzi (Gast)


Lesenswert?

also ich habe die spi pins mal als ausgänge definiert.
das hat aber nichts gebracht!
am ende der 1. funktion steht eine ausgabeanweisung für port c, diese 
führt er noch aus, die ausgabeanweisung direkt nach der funktion im 
hauptprogramm allerdings nicht mehr. darum denke ich hatte das mit der 
fehlenden bestimmung der datenrichtung vorher diesen fehler nicht 
herbeigerufen....

trotzdem dankeschön...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> die ausgabeanweisung direkt nach der funktion im
> hauptprogramm allerdings nicht mehr.

...

> mit einem ATmega64L

plong!

Deaktiviere die M103C-Fuse.

von puzi (Gast)


Lesenswert?

hallo,
erstmal sorry für die späte antwort.

ich habe die m103c-fuse mal deaktiviert!

dabai herausgekommen:

das programm springt immer noch nicht aus der funktion zurück.
dann habe ich sie wieder aktiviert und festgestellt, dass das programm 
jetzt gar nicht mehr in die funktion hineinspringt!

und ausserdem habe ich heraus gefunden, dass ich dieses problem mit den 
funktionen generell habe und nicht bei dieser!
das erklärt einige gescheiterte programmierversuche! :-(

gruss puzi

von Puzi (Gast)


Lesenswert?

Ich habe das ganze einfach mal auf einem anderen PC ausprobiert!
Und da funktioniert alles problemlos!

Daher denke ich war das ein Problem meines Computers!
Vieleicht lief der compiler nicht sauber oder es gad probleme beim 
linken, oder so etwas könnte ich mir am ehensten vorstellen!

danke trotzdehm für eure hilfeversuche

gruss puzi

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.