Serielle Schnittstelle zwischen zwei uC durch optische Kommunikation ersetzen

OP #2127165
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 :)
Angehängte Dateien:
OP #2127362
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
#2127376
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
#2127422
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
Gast #2127427
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.
OP #2127441
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!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren