mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm geht nicht, so wie ich das will. Könnte da mal jmd drübersehen?


Autor: Markus V. (darkangel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Kann das so stimmen? Ich will ein Taktsignal über UART(TxD) senden und 
eine LED mit den 0,5kHz Takt ansteuern. Aber es funktioniert nicht?
Das soll ein reines Testprogramm für die UART Schnittstelle sein.

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

#define FOSC 7372800UL
#define BAUD 19200
#define MYUBRR (FOSC/16/BAUD-1)



void init_timer1 (void)
{
  TCCR1B = (3<<WGM12)|(2<<CS10);
  ICR1  = 1000;
  TIMSK |= (1<<TICIE1);
}
 


ISR (Timer1_Capt_vect)
{
  PORTC ^= (1<<PC5);
  UDR = 0x22;
}


void init_uart ( void )
{
  UCSRB |= (1<<TXEN);
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);

  UBRRH  = ( MYUBRR >> 8 );
  UBRRL  = ( MYUBRR & 0x00FF );
}




void main (void)
{
  DDRC |= (1<<DDC5);
  PORTC |= (1<<PC5);
  init_uart(); 
  init_timer1 ();
  sei();
  while(1);
  {
  while(!(UCSRA & (1<<UDRE)))

    UDR = 0x23;
  }
  return (0);
}

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Gott - du solltest den Strichpunkt hinterm ersten while() entfernen 
und hinter das zweite while() setzen!

Gruß,
Wolfgang

Autor: Markus V. (darkangel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, aber es funzt immer noch nicht

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dir die Programme schon vorkaue, dann kopiere es wenigstens 
richtig!

"meine" main routine sah so aus:
void main (void)
{
  DDRC |= (1<<DDC5);
  PORTC |= (1<<PC5);
  init_uart(); 
  init_timer1 ();
  sei();
  while(1);
}

Und wie gesagt, wenn du an PC5 nicht mindestens halbe Betriebsspannung 
misst, stimmt was mit dem Vorgang des Programmierens nicht!


Was ich grad sehe:

An Pin20 MUSS ZWINGEND 3,3V und ein 100n C angeschlossen werden.
An Pin21 jedoch NICHT! Dort gehört NUR ein 100nF Kond. nach Masse hin!

Autor: Markus V. (darkangel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohh danke, ja ich hab dein Programm ein wenig geändert weil ja nichts 
funktioniert hat. aber ich glaub jetzt auch dass es an der schaltung 
liegt.

DANKE

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie waere es mit nem Schaltplan und eine Beschreibung, was das Programm 
ueberhaupt tun soll?

Autor: Markus V. (darkangel)
Datum:
Angehängte Dateien:
  • preview image for 12.jpg
    12.jpg
    27,2 KB, 1159 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Also 22 --> Masse
21 --> AREF ?? eigentlich nichts oder?
20 -->3V3 und Kondensator 100n an Masse

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also 22 --> Masse
JA.

>21 --> AREF ?? eigentlich nichts oder?
über einen 100nF Kond. an Masse

>20 -->3V3 und Kondensator 100n an Masse
An 3,3V und ein 100nF C dazu, wie bei Pin7/8

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.