Forum: Mikrocontroller und Digitale Elektronik über parallele Schnittstellen von uC an PC


von Fuzzy F. (fuzzy)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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"

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.