Forum: Mikrocontroller und Digitale Elektronik Problem mit PC zu Microcontroller


von Lennard C. (lennard_c)


Angehängte Dateien:

Lesenswert?

Hallo Liebe Community,

ich arbeite gerade an einem Projekt für die Schule, mit dem Ziel ein 
Kettenfahrzeug, dessen Motoren über ein µC-Board gesteuert werden, mit 
einem USB-Joystick über den PC zu steuern.

Das ganze funktioniert auch soweit ganz gut.
Das Fahrzeug lässt sich per Kabel über die serielle Schnittstelle 
wunderbar steuern.

Nun möchte ich aber das Kettenfahzeug nicht dauerhaft am Kabel hängen 
haben.

Deshalb habe ich mir einen Funk-Sender und einen Empfänger von Aurel 
besorgt.

Ich habe zwei µC-Boards, die Exakt gleich aufgebaut sind (Der Schaltpan 
ist im Anhang.

Mein Plan ist, Das eine Board mit dem PC zu verbinden und von dort die 
Befehle per Funk weiter an das zweite Board(am Fahrzeug) zu Senden.

Um einen geeigneten Code zu finden, habe ich das ganze erstmal mit einer 
Kabelverbindung zwischen den Boards und einem simplen Programm, bei dem 
vom PC ein Byte mit einem Wert von 0-255 gesendet wird, das auf dem 
zweiten Board auf PORTB ausgegeben wird, ausprobiert.

Und da liegt mein Problem:

Im Augenblick versuche ich das Signal, welches vom Pegelwandler auf dem 
ersten Board ausgegeben wird, direkt an das zewite Board weiterzuleiten.

Hierfür habe ich PD0(RXD) vom ersten µC mit PD0(RXD) vom zweiten µC 
verbunden.
Dies funktioniert nicht.
Wenn ich allerdings zusätzlich noch PD1(TXD) von µC eins mit PD1(TXD) 
von µC zwei verbinde, funktioniert alles einwandfrei.

Ich frage mich, warum sowohl RXD als auch TXD verbunden sein müssen, 
obwohl  eigentlich nur in eine Richtung gesendet wird.

Ich hoffe, ich konnte mein Problem deutlich machen und bitte meine 
Ausdrucksweise zu entschuldigen.
Ich bin noch neu in der µC-Programmierung :-).

Hoffentlich könnt ihr mir helfen. Für konstruktive Kritik und Vorschläge 
für eine alternative Lösung bin ich immer dankbar.

Hier ist das Programm vom zweiten µC:
1
#define F_CPU 16000000UL
2
#define BAUD 1200UL
3
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   
4
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     
5
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) 
6
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
7
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch!
8
#endif
9
#include <avr/io.h>
10
#include <avr/interrupt.h>
11
12
ISR(USART_RXC_vect)
13
{
14
  cli();
15
  PORTB=UDR;
16
  sei();
17
}
18
void init(void)
19
{
20
  DDRB=255;
21
  UBRRH = UBRR_VAL >> 8;
22
  UBRRL = UBRR_VAL & 0xFF;                  
23
  UCSRB |=(1<<RXEN)|(1<<RXCIE);            
24
  UCSRC |= (1<<UCSZ1) | (1<<UCSZ0) | (1<<URSEL);
25
  sei();    
26
  
27
}
28
29
30
int main(void)
31
{
32
  init();
33
  while(1)
34
  {
35
    
36
  }
37
  return 0;
38
}

von jonas biensack (Gast)


Lesenswert?

>Ich frage mich, warum sowohl RXD als auch TXD verbunden sein müssen

Ist egal. Müsste in eine Richtung funktionieren, da ist irgendwo noch 
ein anderer Fehler...

Gruß Jonas Biensack

von Lennard C. (lennard_c)


Lesenswert?

Genau davon bin ich auch ausgegangen.
Könnte es vielleicht irgendwas mit der Schaltung des Boards zu tun 
haben?

Ich bin langsam echt verzweifelt.
Ich suche jetzt seit einer geschlagenen Woche nach einer Lösung :(

von jonas biensack (Gast)


Lesenswert?

GND verbunden ?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Lennard Coordes schrieb:
> Wenn ich allerdings zusätzlich noch PD1(TXD) von µC eins mit PD1(TXD)
> von µC zwei verbinde, funktioniert alles einwandfrei.

 Wie TxD <=> TxD ?
 Ausgang auf Ausgang ?
 Kann es sein, das der zweite uC da Masseverbindung herstellt ?

von Thomas Z. (tezet)


Lesenswert?

Lennard Coordes schrieb:
> Hierfür habe ich PD0(RXD) vom ersten µC mit PD0(RXD) vom zweiten µC
> verbunden.
müsste nicht TXD vom Sender mit dem RXD des Empfängers verbunden werden 
!?

von Lennard C. (lennard_c)


Lesenswert?

jonas biensack schrieb:
> GND verbunden ?

Ups....manchmal steht man auch echt auf dem Schlauch.
Nu gehts...ich werd nu mal die Sache mit dem Funk Probieren.

Danke!

von jonas biensack (Gast)


Lesenswert?

Macht ein kühles ;)

wilhelm-leuchnerstr. 12, 36179 Bebra

Gruß Jonas

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.