-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Prüfungstress, Usart geht nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2009
    Beiträge
    11

    Prüfungstress, Usart geht nicht

    Anzeige

    Hallo ich brauche unbedingt Hilfe von euch.
    Kurze Erklärung:
    ich habe in 1 Woche Abschlussprüfung und ich bekomme den usart nicht hin.

    Hardware:
    STK200 board mit einem Atmega32 ext. 16MHz
    RS232 mit Max232
    SPI Schnittstelle zum proggen
    Standart LCD an PORTB
    Null ModemKabel (seldstgebaut, man weiß ja nie)

    Software:
    myAVR Workpad Plus demo mit WinAVR
    integriertes Terminal & Win Hyperterminal

    Literatur:
    AVR Risc (Franzis PC & Elektronik)



    Einstellungen:
    anynchron, 8N1, senden & empfangen, kein Handshake


    Erfolgreich getestet habe ich die direkte Verbindung zwischen 2 PCs,
    sowie die Verbindung bis zum Sockel des Atmegas. (RX & TX auf Sockel gebrückt)

    Nutze zum testen folgendes Programm


    // INCLUDE
    #include "inc/avr/io.h"
    #include "inc/avr/rs232.h"

    int main(void)
    {

    /* RS232 einschalten ... */
    setup_uart();

    /* Willkommensnachricht senden ... */
    uart_putchar('a');

    while (1)
    {
    }

    return 0;
    }

    }


    Mein Oszilloscope, direkt am µC, zeigt mir konstant -10V an sobald die main startet.

    Bitte könnt ihr mir Helfen es geht echt um meinen Arsch und ich weiß einfach nicht mehr weiter.

    Habe vor ca 6 Wochen das erste mal kontakt mit Atmegas aufgenommen.
    Da mein Ausbilder keinen Plan davon hat bin ich ziemlich gekniffen.
    Euerem und dem mikrocontroller.net Forum ist es zu verdanken das ich inzwischen weiß womit ich es zu
    tun habe.
    Aber das hier übersteigt inzwischen einfach meine Nerven.

    Ich hoffe ihr könnt mit meinem Angaben was anfangen, ansonsten stelle ich auch die header datei noch zur
    Verfügung stehlen, wegen der Funktionen.

    THX schon mal im voraus.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Nach ein paar kleinen Anpassungen bekomm ich ein wunderschönes 'a'. Allerdings gibt es noch ne warning:
    uart.c: In function 'uart_getline':
    uart.c:47: warning: comparison is always true due to limited range of data type
    Dürfte an der -1 liegen. Das äußert sich dann darin, dass bei verwendung von uart_getline() das Programm abstürzt und neu startet. So geht es besser:
    Code:
    void uart_getline(char *buffer)
    {
    	int c=0;
    	while ((char)c != 0x0D)
    	{
    		c = uart_getchar();
    		if ( (c != -1) && (c != 0x0D) && (c != 0x0A))
    		{
    			*buffer = (char)c;
    			buffer++;
    			// Achtung: Der Buffer muss groß genug
    			// sein, sonst kann es hier zu einem
    			// Überlauf kommen!!
    		}
    	}
    	// Wichtig: String abschließen!
    	*buffer = 0;
    }
    Dann noch ne Kleinigkeit:
    In file included from test.c:5:
    rs232.c:103: warning: function declaration isn't a prototype
    Das ist void setup_uart(). In C muss (anders als in C++) im Kopf der Funktion in den Klammern ein void stehen, wenn keine Parameter übergeben werden.

    Und noch was: deine rs232.h müsste eigentlich rs232.c heißen, weil dort die Funktionen komplett deklariert sind. Sie sollte außerdem nicht direkt inkludiert werden, sondern nur eine Headerdatei (die dann wirklich rs232.h heißen würde). Die rs232.c wird dann nur im makefile eingebunden. Das ist bei kleineren Programmen meist egal, aber wenn die c-Datei an mehreren Stellen inkludiert wird, gibt es Probleme.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2009
    Beiträge
    11
    Guten Morgen

    THX @ uwegw
    Habe das void eingefügt und auch die Funktion uart_getline entsprechend
    geändert.

    Leider kein "a"

    Was mir nicht so ganz in den Kopf geht ist die Sache mit der HeaderDatei.

    Also ich soll aus meiner jetztigen .h eine .c machen, soweit ist noch K.
    Dann soll ich einer eigene .h Datei machen womit ich die .c dann include, ist eigentlich auch noch klar.

    Aber was muss in dieser neuen .h Datei den drin stehn?????????

    SRY leider gibt mein Geist langsam den Geist auf, versuche schon seit 2 Wochen diesen Bus zum Laufen zu bewegen.

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    IN der rs232.h werden die Funktionen der rs232.c deklariert.
    Wo hast du die Prozessorfrequenz definiert?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2009
    Beiträge
    11
    Die F-CPU und co stehen in der rs232.h oben.

    #define PROZESSORTAKT 16000000
    #define UART_BAUDRATE 4800
    #define UART_SETTING ((PROZESSORTAKT/(UART_BAUDRATE*16L)) - 1)


    Das versteh ich gerade nicht so richtig die Funktionen sind doch schon deklariet in der jetztigen rs232.c Datei.

    Ist vielleicht etwas viel verlangt aber könnte mir einer von euch diese header datei anfertigen, dann weiß ich wennigstens das die Fehlerfrei ist?????????

    BITTE "lieb guck"

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Allein schon diese Zeile:
    Mein Oszilloscope, direkt am µC, zeigt mir konstant -10V an sobald die main startet.
    sagt mir das du keine Ahnung hast von dem was du tust.
    Das ganze hast du irgendwo abgeschrieben oder kopiert ohne zu begreifen was sich da abspielt. Von C hast du auch keine Ahnung.
    Das #include musst du eventuell noch ändern, ich arbeite mit dem AVR-Studio.
    Wenn mit dem Anhang nichts kommt dann hast du noch einen Hardwarefehler.
    Angehängte Dateien Angehängte Dateien
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der Prozessortakt sollten im Hauptprogramm definiert werden. So steht es auch im file rs232.???. Die Baudrate gehört eigentlich auch dahin.

    Die Aufteilung in die .h und .c Files sollte man sich mal bei andernen programmen abschauen.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2009
    Beiträge
    11
    @ Hubert G.
    1. Vielen Herzlichen Dank für die Dateien.
    2. Danke für die Motivation, du hast das erfasst was ich euch im ersten Beitrag klar machen wollte.

    Ich versuche das ja alles zu verstehen, es ist aber einfach zu viel in zu kurzer Zeit, für mich.

    Habe aber keine Wahl, auch wenn ich eigentlich lieber vor Verzweifelung aufgeben würde.

    Wenn jemand mag, würde ich das mit den Spannungwerten gerne Verstehen.
    Ich gehe von folgendem aus.
    Mein Startbit ist low, die Datenbits sowie das Stopbit sind high.
    Low ist in diesem fall -10V und high +10V, richtig??????

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Du bist an der RS232-Schnittstelle und nicht am µC, der wäre bei diesen Werten schon lange tot.
    Sollte das ganze immer noch nicht funktionieren, dann solltest du mal die Hardware überprüfen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2009
    Beiträge
    11
    Habe bei dein Datein noch ein Prob:

    main.o: In function `main':

    main.c
    (.text+0x: Linkerfehler: undefinierte Sprungadresse: `setup_uart'
    (.text+0xe): Linkerfehler: undefinierte Sprungadresse: `uart_putchar'

    Hab mir aber schon alle Dateien angeguckt ist alles richtig geschrieben und finden tut er die dateien ja.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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