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 :)
>Warum erkennt mein AVR-Studio-Compiler die Befehle: ADCSRB und ADIF >nicht?? >ATmega8515 Der hat keinen AD Wandler.
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.
@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
>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?
@ 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
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??
@ 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
Falk Brunner schrieb: >> Graphic1.png >> 1 MB, 47 Downloads > > AUA! Lies mal was über Bildformate! ACK - denn sie wußten nicht, was sie tun ;-)
>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.
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!!
>>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;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
