-         

Ergebnis 1 bis 6 von 6

Thema: 2x Atmel Mega32

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.01.2007
    Beiträge
    209

    2x Atmel Mega32

    Anzeige

    Hallo,
    ich habe zwei mega32 speziell verbunden, damit sie zahlen von 0-9 und zusätzlich + und - austauschen können. der eine prozessor ist eigendlich nur für die tastatur da (Chip1), der andere zum ausgeben der daten.
    dem Chip1 habe ich folgenden quellcode aufgespielt:
    Code:
    Statusout = 1
    Led = 0
    Call Tastenabfrage()
    
    
    
    
    
    Sub Tastenabfrage()
    Do
    Led = 0
    If Null = 0 Then
       Led = 1
       Wert = 0
       End If
    If Eins = 0 Then
       Wert = 1
       Led = 1
       End If
    If Zwei = 0 Then
       Wert = 2
       Led = 1
       End If
    If Drei = 0 Then
       Wert = 3
       Led = 1
       End If
    If Vier = 0 Then
       Wert = 4
       Led = 1
       End If
    If Fuenf = 0 Then
       Wert = 5
       Led = 1
       End If
    If Sechs = 0 Then
       Wert = 6
       Led = 1
       End If
    If Sieben = 0 Then
       Wert = 7
       Led = 1
       End If
    If Acht = 0 Then
       Wert = 8
       Led = 1
       End If
    If Neun = 0 Then
       Wert = 9
       Led = 1
       End If
    If Plus = 0 Then
       Wert = 10
       Led = 1
       End If
    If Minus = 0 Then
       Wert = 11
       Led = 1
       End If
    
    If Enter = 0 Then
       Call Eingabe()
    End If
    Loop
    End Sub                                                     'Tastenabfrage
    
    
    
    
    
    Sub Eingabe()
       Statusout = 0
       Led = 0
       Waitms 5
       If Statusin = 0 Then
          Statusout = 1
          If Wert = 0 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 0
             Dezi4 = 0
             Dezi5 = 1
             End If
          If Wert = 1 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 0
             Dezi4 = 1
             Dezi5 = 0
             End If
          If Wert = 2 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 0
             Dezi4 = 1
             Dezi5 = 1
             End If
          If Wert = 3 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 1
             Dezi4 = 0
             Dezi5 = 0
             End If
          If Wert = 4 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 1
             Dezi4 = 0
             Dezi5 = 1
             End If
          If Wert = 5 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 1
             Dezi4 = 1
             Dezi5 = 0
             End If
          If Wert = 6 Then
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 1
             Dezi4 = 1
             Dezi5 = 1
             End If
          If Wert = 7 Then
             Dezi1 = 0
             Dezi2 = 1
             Dezi3 = 0
             Dezi4 = 0
             Dezi5 = 0
             End If
          If Wert = 8 Then
             Dezi1 = 0
             Dezi2 = 1
             Dezi3 = 0
             Dezi4 = 0
             Dezi5 = 1
             End If
          If Wert = 9 Then
             Dezi1 = 0
             Dezi2 = 1
             Dezi3 = 0
             Dezi4 = 0
             Dezi5 = 1
             End If
          If Wert = 10 Then
             Dezi1 = 0
             Dezi2 = 1
             Dezi3 = 0
             Dezi4 = 1
             Dezi5 = 1
             End If
          If Wert = 11 Then
             Dezi1 = 0
             Dezi2 = 1
             Dezi3 = 1
             Dezi4 = 0
             Dezi5 = 0
             End If
          Waitms 5
             Dezi1 = 0
             Dezi2 = 0
             Dezi3 = 0
             Dezi4 = 0
             Dezi5 = 0
          Else
          Call Eingabe()
    
       End If
    Call Tastenabfrage()
    
    
    
    
    
    End Sub                                                     'Eingabe
    
    
    
    
    
    End
    also die daten am anfang des quellcodes habe ich mal weggelassen.
    der Chip2 hat dieses:
    Code:
    Statusout = 1
    Call Status()
    
    
    
    
    
    
    
    
    
    Sub Status()
    If Statusin = 0 Then
       Waitms 5
       Statusout = 0
       Call Ziffernabfrage()
    Else
    Call Status()
    End If
    End Sub
    
    
    
    
    
    Sub Ziffernabfrage()
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
       Wert = 0
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
       Wert = 1
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
       Wert = 2
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
       Wert = 3
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 0 Then
       Wert = 4
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 1 Then
       Wert = 5
       End If
    If Dezi1 = 1 And Dezi2 = 1 And Dezi3 = 0 And Dezi4 = 0 And Dezi5 = 0 Then
       Wert = 6
       End If
    If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 1 Then
       Wert = 7
       End If
    If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 1 And Dezi5 = 0 Then
       Wert = 8
       End If
    If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 1 Then
       Wert = 9
       End If
    If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 1 And Dezi4 = 0 And Dezi5 = 0 Then
       Wert = 10
       End If
    If Dezi1 = 1 And Dezi2 = 0 And Dezi3 = 0 And Dezi4 = 1 And Dezi5 = 1 Then
       Wert = 11
       End If
    Statusout = 1
    Waitms 5
    Call Ausgabe()
    End Sub
    
    
    
    Sub Ausgabe()
       If Wert = 0 Then
       Led = 0
       End If
    If Wert = 1 Then
       Led = 1
       Waitms 100
       Led = 0
       Waitms 100
       End If
    If Wert = 2 Then
       Led = 1
       Waitms 100
       Led = 0
       Waitms 100
       Led = 1
       Waitms 100
       Led = 0
       Waitms 100
       End If
    Call Status()
    End Sub
    also wenn ich jetzt [2] +[Enter] drücke müsste der Chip2 das empfangen und die LED müsste 2 mal leuchten (weiter hab ichs noch nicht geschrieben). das problem ist nur, es blinkt nicht!

    wer kann mir helfen und sagen wo ich den fehler habe?

    mfg Killer

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    also die AND - Verknüpfung bei der If then, wird in Bascom schonmal
    nicht gehen, das mag das nicht.
    Die Mainloopschleife vom Code1 in ne Sub verpacken
    und anspringen per call ist unnötig.
    hunderte If-Then kann man meist recht schön mit Switch lösen,
    macht Code übersichtlicher.
    Es scheint als ob Du binär parallel den Wert übergibst mit diversen
    platzhaltern.
    Die ganzen IF-Then vom Master kannste Dir durch Bitoperationen schenken. oder naja, fast schenken.

    also, nehmen wir an wert ist gesetzt

    dann kannst du schreiben
    dezi0=wert.0
    dezi1=wert.1
    dezi2=wert.2 etc. etc.
    ... dezi7=wert.7
    und schon haste die Bits gesetzt.
    Das musst Du dann auch nur einmal machen und nicht für jedes
    Bitmuster separat.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.01.2007
    Beiträge
    209
    achso,
    also sollte Dezi1=1 sein und ich schreibe:
    Dezi1=Wert.1 ist dann dir erste Stelle in der Variablen 1 usw. oder wie?
    Wenn ja, kann ich dann ja zum Schluss entweder mit If-Abfragen oder Switch-Abfragen fragen, welche Zahl es ist, richtig?

    MfG Killer

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    also die AND - Verknüpfung bei der If then, wird in Bascom schonmal
    nicht gehen, das mag das nicht.
    Doch...geht. man kann auch Or usw. verknüpfen. Kein Problem.

    Gruß
    Christopher

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Beim Bascom kenn ich OR und AND nur als Operationen
    also logische Verknüpfung von Und und Oder, aber wenns geht
    solls mir recht sein.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.01.2007
    Beiträge
    209
    Was hat das mit dem Wert.1, wert.2, wert.3 usw jetzt genau auf sich? was bedeutet das genau?

    MfG Killer

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •