mikrocontroller.net

Forum: Compiler & IDEs Serielle Schnittstelle gibt nichts aus


Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich programmiere einen AT mega 644. Ich will Spannung digital wandeln 
und dann seriell über RS 232 versenden. Mein Progamm ist im Anhang. Das 
Problem ist dass er nichts sendet. Kann mir jemand weiterhelfen?
Grüßle Matze

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falsch:
int uart_putc(unsigned char c)
{
  //PORTB &= ~(1<<PB3);
    while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */
    UDR0 = c;                      /* sende Zeichen */
    return 0;
}

Richtig:
int uart_putc(unsigned char c)
{
  //PORTB &= ~(1<<PB3);
    while (!(UCSR0A & (1<<UDRE0))); /* warten bis Senden moeglich */
    UDR0 = c;                      /* sende Zeichen */
    return 0;
}

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int main(void)
{
    //...
    void Senden(char *s);
    uint16_t Wandlung (uint8_t mux);
    int uart_putc(unsigned char c);
}
Was ist das denn? Funktions- und Prototypendeklarationen haben innerhalb 
von Funktionen nichts verloren. Die gehören wenn überhaupt, dann vor die 
main.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, das mit den Prototypen ist zwar an sich nur ein Schönheitsfehler, 
aber kompiliert der Compiler das Programm ohne Fehlermeldungen? Die 
Funktion "Wandlung" wird z.B. gar nicht in der main.c definiert, sondern 
in der adc.c und muss demzufolge als "extern" deklariert werden. Das 
müsste so eigentlich sogar zu einer Fehlermeldung führen.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das
> müsste so eigentlich sogar zu einer Fehlermeldung führen.

Nein, C kennt nur globale Funktionen, keine lokalen.  Damit ist eine
Deklaration immer implizit "extern" (falls sie nicht zuvor bereits
als "static" gesehen worden ist).

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke. Wieder was gelernt;-)

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke. Werde dass nachher gleich mal ausprobieren. Was so ein 
Strichpunkt doch alles bewirken kann :-)
Danke Matze

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.