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


von Markus V. (darkangel)


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.

1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <avr/interrupt.h>
4
5
#define FOSC 7372800UL
6
#define BAUD 19200
7
#define MYUBRR (FOSC/16/BAUD-1)
8
9
10
11
void init_timer1 (void)
12
{
13
  TCCR1B = (3<<WGM12)|(2<<CS10);
14
  ICR1  = 1000;
15
  TIMSK |= (1<<TICIE1);
16
}
17
 
18
19
20
ISR (Timer1_Capt_vect)
21
{
22
  PORTC ^= (1<<PC5);
23
  UDR = 0x22;
24
}
25
26
27
void init_uart ( void )
28
{
29
  UCSRB |= (1<<TXEN);
30
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);
31
32
  UBRRH  = ( MYUBRR >> 8 );
33
  UBRRL  = ( MYUBRR & 0x00FF );
34
}
35
36
37
38
39
void main (void)
40
{
41
  DDRC |= (1<<DDC5);
42
  PORTC |= (1<<PC5);
43
  init_uart(); 
44
  init_timer1 ();
45
  sei();
46
  while(1);
47
  {
48
  while(!(UCSRA & (1<<UDRE)))
49
50
    UDR = 0x23;
51
  }
52
  return (0);
53
}

von Wolfgang (Gast)


Lesenswert?

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

Gruß,
Wolfgang

von Markus V. (darkangel)


Lesenswert?

Danke, aber es funzt immer noch nicht

von Matthias L. (Gast)


Lesenswert?

Wenn ich dir die Programme schon vorkaue, dann kopiere es wenigstens 
richtig!

"meine" main routine sah so aus:
1
void main (void)
2
{
3
  DDRC |= (1<<DDC5);
4
  PORTC |= (1<<PC5);
5
  init_uart(); 
6
  init_timer1 ();
7
  sei();
8
  while(1);
9
}

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!

von Markus V. (darkangel)


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

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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

von Markus V. (darkangel)


Angehängte Dateien:

Lesenswert?

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

von Matthias L. (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.