Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle zwischen zwei uC durch optische Kommunikation ersetzen


von Be C. (hmb)


Angehängte Dateien:

Lesenswert?

Hallo liebe Leute,
ich hoffe ihr könnt mir helfen.
Also ich habe Optische Sender/Empfänger Einheiten gebaut und die 
funktionieren einwandfrei.
Nun sollen diese Einheiten die serielle Kommunikation via RS232 zwischen 
zwei Mikrocontroller (ATmega8515) ersetzen.
Die S/E-Einheiten habe ich wie im Anhang geschaltet d.h. an ADC. Und wie 
folgt im C programmiert (Keine besondere Aufgabe, dient nur zum Testen):
//--------------------------------------------------------------
#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
#include <stdint.h>
//--------------------------------------------------------------
int i;
int main()
{
DDRD=0xFF; //Port D output
DDRC=0xFF; //Port C output
DDRB=0; //Port B input for ADC
sei(); //enable interrupts
ADCSRB=0x8F; //enable and interrupt select ck/128

while(1)
{
for (i=0;i<200;i++)
{PORTD=i;
ADCSRB|=(1<<ADSC); //Start conversion
while((ADCSRB&(1<<ADIF))==0);//Wait for conversion to finish
PORTC=ADC;
_delay_ms(100);

}
}
return 0;
}
//------------------------------------------------------------
Ich habe insgesamt 3 Fragen:
Ist es so richtig geschaltet?
Wie kann ich ein Gesamtes Byte senden und empfangen wie bei dem 232 
seriellen Protokoll?
Warum erkennt mein AVR-Studio-Compiler die Befehle: ADCSRB und ADIF 
nicht??

Vielen vielen Dank für eure Hilfe :)

von holger (Gast)


Lesenswert?

>Warum erkennt mein AVR-Studio-Compiler die Befehle: ADCSRB und ADIF
>nicht??

>ATmega8515

Der hat keinen AD Wandler.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Erkläre doch bitte mal, was für eine Art von Kommunikation Du Dir da 
vorstellst, und warum der Sender ausgerechnet am ADC angeschlossen 
werden soll.

von Be C. (hmb)


Lesenswert?

@Rofus
Ja hast du recht, der Sender muss nicht unbedingt ans ADC kann auch an 
einem beliebigen I/O-Pin angeschlossen werden.
Ich möchte genau die serielle Kommunikation ersetzen von RS232:
-mit einer Übertragungsrate von 115200 Bit/s (S/E_Einheiten wurde mit 
frequenzgenerator getestet und schafft bis zu 500000 Bit/s einen 
sauberen Rechtecksignal zu liefern zwischen 0 und +3V)
-Mit einem gleichen Datenformat wie RS232 d.h Startbit,7Bits-Nachricht, 
Paritätsbit und Stoppbit

von holger (Gast)


Lesenswert?

>Ja hast du recht, der Sender muss nicht unbedingt ans ADC kann auch an
>einem beliebigen I/O-Pin angeschlossen werden.

Und warum nimmst du dann nicht den USART?

von Falk B. (falk)


Lesenswert?

@  Be Chir (hmb)

>      Graphic1.png
>      1 MB, 47 Downloads

AUA! Lies mal was über Bildformate!

>Also ich habe Optische Sender/Empfänger Einheiten gebaut und die
>funktionieren einwandfrei.

Wo ist dann das Problem?

>Nun sollen diese Einheiten die serielle Kommunikation via RS232 zwischen
>zwei Mikrocontroller (ATmega8515) ersetzen.

Nimm zwei Optokoppler und fertig.

>Ist es so richtig geschaltet?

Ist ja nur ein Blockschaltbild, da kann men wenig falsch machen.

>Wie kann ich ein Gesamtes Byte senden und empfangen wie bei dem 232
>seriellen Protokoll?

Indem man einfach die RS232 Ausgänge per Optokoppler verbindet und 
nicht den ADC?

MFG
Falk

von Be C. (hmb)


Lesenswert?

holger schrieb:

> Und warum nimmst du dann nicht den USART?
meinst du ich soll mein Empfangsignal direkt am RxD-Pin anschließen??
Mein Empfangsignal ist zuerst Analog und pendelt zwischen 0 und +3V mit 
Rauschen etc. soll es nicht erstmal mittels ADC digitalisiert werden??

von Falk B. (falk)


Lesenswert?

@  Be Chir (hmb)

>meinst du ich soll mein Empfangsignal direkt am RxD-Pin anschließen??

Wäre sinnvoll.

>Mein Empfangsignal ist zuerst Analog und pendelt zwischen 0 und +3V mit
>Rauschen etc.

Dann muss dein optischer Empfänger verbessert werden.

> soll es nicht erstmal mittels ADC digitalisiert werden??

Nö.

MFG
Falk

von Datenformatierer (Gast)


Lesenswert?

Falk Brunner schrieb:
>>      Graphic1.png
>>      1 MB, 47 Downloads
>
> AUA! Lies mal was über Bildformate!

ACK - denn sie wußten nicht, was sie tun  ;-)

von holger (Gast)


Lesenswert?

>Mein Empfangsignal ist zuerst Analog und pendelt zwischen 0 und +3V mit
>Rauschen etc. soll es nicht erstmal mittels ADC digitalisiert werden??

Du weisst doch überhaupt nicht was du tust. Das Rauschen verschwindet
beim ADC nicht einfach mal so. 115200 Bit/s mit dem ADC sampeln und
dann R232 draus machen? Vergiss es!

Abgesehen davon: Dein ATMega hat keinen ADC.

von Be C. (hmb)


Lesenswert?

holger schrieb:

> Du weisst doch überhaupt nicht was du tust.
Na ja, ich würde nicht lügen und das Gegenteil behaupten, aber versuche 
mich als Anfänger so gut wie möglich mithilfe Crash-Literatur 
durchzukämpfen ;)

>Das Rauschen verschwindet beim ADC nicht einfach mal so
emm..ich dachte alles was unter 0.6V nimt er als Null und was über als 
1.

> Abgesehen davon: Dein ATMega hat keinen ADC.
Ja...Mein ATmega8515 ist nur vom STK500, ich wollte damit nur testen...
Eigentlich kommt dann ATmega2560 zum Einsatz!!

von holger (Gast)


Lesenswert?

>>Das Rauschen verschwindet beim ADC nicht einfach mal so
>emm..ich dachte alles was unter 0.6V nimt er als Null und was über als
>1.

ADC not gleich Komparator;)

von Lösung (Gast)


Lesenswert?

Be Chir schrieb:
>>Das Rauschen verschwindet beim ADC nicht einfach mal so
>
> emm..ich dachte alles was unter 0.6V nimt er als Null und was über als
> 1.
Meinst du Transistor?

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.