mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR steigt immer aus


Autor: Ra Sp (mcfloppy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, brauche ja nicht viel zu schreiben, hier die Ausgabe des
Terminalprogrammes:

2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
2.�1. LED an
usw. usf.

und hier der Code:

/****************************************************************

Projekt: USART auf dem Testboard von www.Pollin.de


Aufgabe:


Changelog:

12 Mai 2006 Projektstart


****************************************************************/



#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>


// USART

//#ifndef F_CPU
#define F_CPU 7372800UL
//#endif
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1L)
#define UART_BAUD_RATE 9600UL

volatile char x='t';

int uart_putc(unsigned char c)
{
    while (!(UCSRA & (1<<UDRE))); /* warten bis Senden moeglich */
    UDR = c;                      /* sende Zeichen */
    return 0;
}

void uart_puts (char *s)
{
    while (*s)
    {   /* so lange *s != '\0' also ungleich dem
"String-Endezeichen" */
        uart_putc(*s);
        s++;
    }
}

/*
//SIGNAL(SIG_UART_RECV)
ISR(USART_RXC_vect)
{
    PORTD &= ~(1<<PD5);
    x = UDR;
    if(x=='1')
       PORTD |= (1<<PD6);
    if(x=='2')
       PORTD &=~(1<<PD6);
}
*/

int main( void  ) {
//Initialisierung


WDTCR &= ~(1<<WDTOE);
WDTCR |= (1<<WDE);
  UBRRH = (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE,F_CPU)>>8);
  UBRRL = (uint8_t)UART_UBRR_CALC(UART_BAUD_RATE,F_CPU);
  UCSRB |= (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);         // UART RX & TX
einschalten
//  UCSRB |= (1<<TXEN)|(1<<RXEN);         // UART RX & TX einschalten
  UCSRC |= (1<<URSEL)|(3<<UCSZ0);       // Asynchron 8N1
  DDRD |= (1<<PD5)|(1<<PD6);
  PORTD |= (1<<PD5);
  uart_puts("1. LED an\n2. LED aus\n");
  sei();

while(1) {
asm volatile ("nop");
}
  uart_puts("restart");

return 0;
  /* NEVEREACHED */
}

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlt der Löschbefehl für die Festplatte. Dann sollte es gehen.

Autor: Quix01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> uart_puts("1. LED an\n2. LED aus\n");

ist m.E. kein Null-terminierter String, sofern der Compiler da nicht
irgend etwas hinten dran hängt. Somit liest uart_putc() fleißig im
Speicher weiter, bis es knallt...


Ciao Thomas.

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ist m.E. kein Null-terminierter String
Doch das sollte Null-Terminiert sein.

Aber wenn ich daß richtig sehe wird der Watchdog aktiviert und dann
nicht getriggert => Reset

Autor: Ra Sp (mcfloppy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke schonmal... werd ich nachher alles probieren. :) Hoffe es geht
dann

Autor: Ra Sp (mcfloppy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so...
habe nun ein \0 eingefügt und den watchdog rausgeschmissen. aber nun
passiert sowas:

1. LED an
2. LED au.&#65533;L    &#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L
&#65533;&#65533;,KH&#65533;
&#65533;&#65533;&#65533;&#65533;.&#65533;L      &#65533;

auch noch bissel komisch, oder?

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.