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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.