-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Rücksprung Probleme

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2007
    Ort
    Ingolstadt
    Beiträge
    112

    Rücksprung Probleme

    Anzeige

    Hallo zusammen,

    ich hab bei meinem Projekt ein Problem beim zurückspringen aus eigenen Funktionen.
    Ich denke mal es ist nur ein trivialer Fehler - nur leider sehe ich ihn nicht,Ggoogle hat mich auch net weiter gebracht...

    Ein kleines Testprogramm soll die LED im 1 Hz Takt blinken lassen.

    Code:
    #define F_CPU 8000000UL
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    void LED_ON();    //Prototyp
    void LED_OFF();    //Prototyp
    
    int main(void)
    {
        DDRC = 0x1C;    //Richtung festlegen
        
        while(1)
        {
            LED_ON();
            
            _delay_ms(500);
            
            LED_OFF();
            
            _delay_ms(500);
    
        }
    }
    
    //LEDs einschalten
    void LED_ON()
    {
        PORTC = 0x1C;
    }
    
    //LEDs ausschalten
    void LED_OFF()
    {
        PORTC = 0x00;
    }
    Controller: ATMEGA128L
    Programmer: AVR Dragon
    Prog.Oberfläche: AVR Studio 6

    Leider gehen die LEDs nur an und das wars.
    Beim Debuggen sehe ich das er beim zurückspringen nicht in die Main, sonderen irgendwo in den leeren Speicherbereich springt und ab da weiter läuft bis er wieder am Anfang ist.

    Grüße

    Furay
    Sehe das leben nicht so ernst - du kommst sowieso nicht lebend davon.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    ... Beim Debuggen ... zurückspringen nicht in die Main, sonderen irgendwo ...
    Ich bin ja nicht sicher, dass es ein Parameterproblem ist - Du deklarierst nämlich Deine Prototypfunktionen ohne Parameterdefinition.
    Code:
    ...
    void LED_ON();    //Prototyp
    ...
    Auch die Funktion selbst ist ohne Parameterdefiniton . . . bei mir sieht ein Funktionsprototyp etwa so aus:
    Code:
    ...
      void itxt_rn (void);          // "\r\n"
    ...
    sprich: es ist eindeutig definiert, dass die Funktion ohne Parameter aufgerufen wird und auch keine/n zurückgibt. Lediglich der Funktionsaufruf geht (meines Wissens) mit der einfachen, leere Klammer für die Parameterübergabe. Meckert der Compiler das nicht an???
    Geändert von oberallgeier (19.06.2013 um 10:38 Uhr)
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2007
    Ort
    Ingolstadt
    Beiträge
    112
    Hallo oberallgeier,

    der Compiler hat dies nicht angemosert, nicht mal eine Warnung ist da.
    Ich hab nun beim Prototyp und bei der Funktion nun das void reingeschrieben, leider auch dies ohne Erfolg.

    Grüße und Danke

    Furay
    Sehe das leben nicht so ernst - du kommst sowieso nicht lebend davon.

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Doofe Frage: Wo hängt denn die LED? Du schaltest ja (je nachdem ob die LEDs gegen GND oder VCC liegen) die Ports PC2, PC3 und PC4 ein, die anderen aus (oder eben nur die aus und die andern - dauernd - ein).
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2007
    Ort
    Ingolstadt
    Beiträge
    112
    Es Hängen nur 3 LEDs an PC2,3 und 4. diese werden über eine Transistorstufe geschalten.

    Wenn ich den Port direkt in der Schleife (so wie in den Funktionen) beschreibe, funktioniert das blinken auch problemlos.
    Der Funktionsaufruf macht nur Probleme...
    Sehe das leben nicht so ernst - du kommst sowieso nicht lebend davon.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Die leere Klammer ist schon ok, obwohl man dort ein void einsetzen sollte. Der ganze Code sieht gut aus.

    Ich könnte mir vorstellen, daß der Stack nicht in Ordnung ist. Da das aber der Start-Up Code automatisch erledigt, könnte das nur passieren, wenn der Compiler für die falsche CPU übersetzt. Der Stackpointer könnte dann auf eine Adresse zeigen, an der kein RAM existiert. Ist aber nur eine dürre Vermutung

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2007
    Ort
    Ingolstadt
    Beiträge
    112
    Ich hab nochmal mit "Device Programming" mal den Flash gelöscht und neu beschreiben. Ebenso geprüft was für ein Chip erkannt wird.

    Der ausgewählte Chip passt und nach dem löschen und beschreiben hab ich das Problem nach wie vor.
    Sehe das leben nicht so ernst - du kommst sowieso nicht lebend davon.

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Ich bin ja nicht sicher ... Du deklarierst ... Prototypfunktionen ohne Parameterdefinition ...
    Wieder etwas gelernt - Dein eingangs zitierter Code wird auch bei mir (AVRSTudio 4.18 Build 700, WinAVR-20100110) problemlos compiliert.

    Und er läuft problemlos - einfach aus Deinem Posting rauskopiert, compiliert und geflasht, mit Deinen Funktionen/Funktionsaufrufen! Target mega1284P, 20 MHz, eigene (Servo-)Platine, die Ports PC2, ~3 und ~4 werden laut Oskar einwandfrei geschaltet - etwa im Sekundentakt.

    Zitat Zitat von Furay Beitrag anzeigen
    ... Der Funktionsaufruf macht nur Probleme ...
    Und deshalb bin ich vollends hilflosverwirrterstauntbeleidigtkommentarlos.
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2007
    Ort
    Ingolstadt
    Beiträge
    112
    An irgendwelchen Einstellungen an den FUSES könnte das nicht liegen oder einstellenung bzw. RAM?
    Sehe das leben nicht so ernst - du kommst sowieso nicht lebend davon.

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Sorry, musste mir erst das Datenblatt laden. Das neueste Datenblatt /Rev. 8151H–AVR–02/11/ schreibt:

    "... The Atmel®AVR® ATmega128A is by default shipped in ATmega103 compatibility mode ..." und
    "...Port C also serves the functions of special features of the ATmega128A as listed ..." und
    "... PORTC will be output during first power up, and until the ATmega103 compatibility mode ..."

    Vielleicht mal den ATmega103 compatibility mode abschalten (ich will einfach nicht für Dich das ganze DAtenblatt durchackern).
    Ciao sagt der JoeamBerg

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Feher beim Rücksprung aus einer Sub
    Von andreasrohe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 28.11.2009, 15:36
  2. Falscher Rücksprung aus ISR
    Von Furtion im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 10.01.2009, 19:00
  3. Kein Rücksprung aus Unterprogammen zurücl in die Main
    Von Oppi im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 04.01.2009, 01:11
  4. I²C Probleme
    Von JWehmeier im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 18.06.2008, 23:24
  5. rücksprung nach einem call-aufruf
    Von roboterheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 02.01.2008, 10:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •