Hallo zusammen,
habe da ein paar Fragen zum Thema Daten von Mikrocontroller über die
parallele Schnittstelle zum Pc sendet.
Zur Info:
Muss ein Byte so zerlegen, dass ich es nur über 4 Pins des ATmega16 zum
Pc senden kann. DAs Problem ist, dass wenn ich das Byte komplett Null
(00000000) setzte, dann kommt am PC nicht Null an, sondern -122.
Weiß echt nicht wieso!!!!
Hab den Mikrocontroller mit BASCOM und am PC mit C programmiert.
Hier einige Auszuge:
BASCOM:
$baud = 9600
$crystal = 8000000
$regfile "m16def.dat"
Ddrb = &B00000001 'definieren
der verwendeten Ports ( 1 = ausgang; 0= eingang) Port5
Ddrb = &B00001111
Portb = &B00000000
Config Portb = Output
Dim Bsend As Byte
Do
Bsend = &B00000000
' Shift Bsend , Right , 4
Portb = Bsend
' If Bsend < 128 Then
' Bsend = Bsend + 128
Loop
End
In C wieder einlesen:
void main()
{
//...
do
{
cout<<"\n"<<micro();
dum1=0;
dum2=0;
for(i=0;i<2;i++)
{
byte=micro();
cout<<"\n"<<" byte="<<byte;
if (byte<128)
{
dummy=byte;
dummy=dummy & 00001111;
dum1=dummy>>3;
cout<<"\n"<<" dummy="<<dummy;
}
if (byte>=128)
{
byte=byte & 00001111;
dum2=byte<<1;
cout<<"\n"<<"dum2="<<dum2;
}
dummy=dum1 + dum2;
//cout<<"\n"<<"dummy="<<dummy;
}
//...
}
Weiß echt nicht, warum der das nicht macht.Ist das allererste Mal, dass
ich nen Mikrocontroller programmiere!!!
Hoffe irgendjemand kann mir helfen.
Schon mal Danke
Gruß Fuzzy
Gast
#455148
Die Beschreibung macht deinem Namen alle Ehre ;-) Mir ist noch nicht klar: 1/ wie der µC feststellt, dass der PC die Daten übernommen hat bevor der µC die nächsten Daten losschickt. Ich hätte erwartet, dass mindestens noch eine Steuerleitung benutzt wird 2/ wie der PC die Daten von dem Parallelport abfragt. Dies scheint in der nicht angegebenen aber essentiellen Funktion micro() zu passieren. 3/ ist die Ausgabe -122 eigentlich die Ausgabe "byte=-122" oder "dummy=-122" plus "dummy=-122" oder "dum2=-122" plus "dummy=-122"