• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Logik - Problem mit Atmega8

Hucky3000

Geocacher
Tach !

Ich bin so langsam am verzweifeln - blicke es nicht.
Hier einmal eine kurze Übersicht der Funktion (siehe Bild):

Die linke und die rechte Seite habe ich vorab getrennt und so verdrahtet wie ich es brauche.
Die beiden Strippen liegen auf Masse.
Wenn keine, oder auch nur eine der beiden Leitungen in der Luft hängt passiert nichts.

Die linken Kontakte sind bis auf die 8 Früchte/Gemüse alle parallel geschaltet (PC.0), dementsprechend die rechten bis auf die zugehörigen englischen Bezeichnungen auf PC.1.
Die einzelnen Früchte/Gemüse liegen verteilt auf den PORTB (PB.0 - PB.7), die entsprechenden dazugehörigen Texte auf dem PORTD.

Wenn ich nun z.B. die Kirsche zusammen mit "cherry" wähle soll die LED 2x blinken.
Für die Karotte brauche ich die Zahl "0", also soll die LED aus bleiben.
Bei der Kartoffel in Kombination mit Potatoes soll die LED 7 x blinken usw.
Bei ALLEN anderen Kombinationen soll die LED "falsch" blinken sobald eine Strippe auf einem linken, UND die andere Strippe auf einem rechten Kontakt ist.

Jetzt habe ich folgendes Problem:

Bei PB0+PD0 soll die LED 2x blinken, tut sie aber auch bei:
PB0 + PC1
PB0 + PD5
PB0 + PD6

Bei PB2+PD2 soll die LED 8x blinken, tut sie aber auch bei:
PB2+PD4

Bei PB5 + PD5 soll die LED auch 8x blinken, tut sie aber auch bei:
PB5+PC1
PB5+PD0
PB5+PD6

Bei PB6 + PD6 soll die LED 1x blinken, tut sie aber auch bei
PB6+PC1
PB6+PD0
PB6+PD5

Bei PB7+PD7 soll die LED 7x blinken, tut sie aber auch bei
PC0+PD7

Das MUSS doch so laufen. Alle anderen Kombinationen funktionieren wie sie sollen ! Das mus irgendetwas mit den Mehrfachfunktionen diverser Eingänge zu tu haben - denke ich.

Her der Code:

Code:
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 8
$framesize = 24



Config Portb = &B00000000                                   'PortB = linke Seite
Config Portd = &B00000000                                   'PortD = rechte Seite
Config Portc = &B00000100                                   'PortE = Kontakte (2x) und LED (Bit 0-2)

Portb = &B11111111                                          'Pull Up für 8 Bit aktivieren - PortB
Portd = &B11111111                                          'Pull Up für 8 Bit aktivieren - PortD
Portc = &B00000011                                          'Pull Up für Bit 0+1 aktivieren - PortC

Dim Z As Byte
Dim I As Byte
Dim A As Byte
Dim B As Byte


Z = 0
Portc.2 = 0


Do
Gosub Abfrage
Gosub Anzeige
Loop

End


Abfrage:

Z = 0



If Pinc.0 = 0 And Pinc.1 = 0 Then Z = 255                   '17+18



If Pinc.0 = 0 And Pind.0 = 0 Then Z = 255                   '17+9
If Pinc.0 = 0 And Pind.1 = 0 Then Z = 255                   '17+10
If Pinc.0 = 0 And Pind.2 = 0 Then Z = 255                   '17+11
If Pinc.0 = 0 And Pind.3 = 0 Then Z = 255                   '17+12
If Pinc.0 = 0 And Pind.4 = 0 Then Z = 255                   '17+13
If Pinc.0 = 0 And Pind.5 = 0 Then Z = 255                   '17+14
If Pinc.0 = 0 And Pind.6 = 0 Then Z = 255                   '17+15
If Pinc.0 = 0 And Pind.7 = 0 Then Z = 255                   '17+16


If Pinc.1 = 0 And Pinb.0 = 0 Then Z = 255                   '18+1
If Pinc.1 = 0 And Pinb.1 = 0 Then Z = 255                   '18+2
If Pinc.1 = 0 And Pinb.2 = 0 Then Z = 255                   '18+3
If Pinc.1 = 0 And Pinb.3 = 0 Then Z = 255                   '18+4
If Pinc.1 = 0 And Pinb.4 = 0 Then Z = 255                   '18+5
If Pinc.1 = 0 And Pinb.5 = 0 Then Z = 255                   '18+6
If Pinc.1 = 0 And Pinb.6 = 0 Then Z = 255                   '18+7
If Pinc.1 = 0 And Pinb.7 = 0 Then Z = 255                   '18+8



If Pinb.0 = 0 And Pind.1 = 0 Then Z = 255                   '1+10
If Pinb.0 = 0 And Pind.2 = 0 Then Z = 255                   '1+11
If Pinb.0 = 0 And Pind.3 = 0 Then Z = 255                   '1+12
If Pinb.0 = 0 And Pind.4 = 0 Then Z = 255                   '1+13
If Pinb.0 = 0 And Pind.5 = 0 Then Z = 255                   '1+14
If Pinb.0 = 0 And Pind.6 = 0 Then Z = 255                   '1+15
If Pinb.0 = 0 And Pind.7 = 0 Then Z = 255                   '1+16

If Pinb.1 = 0 And Pind.0 = 0 Then Z = 255                   '2+9
If Pinb.1 = 0 And Pind.2 = 0 Then Z = 255                   '2+11
If Pinb.1 = 0 And Pind.3 = 0 Then Z = 255                   '2+12
If Pinb.1 = 0 And Pind.4 = 0 Then Z = 255                   '2+13
If Pinb.1 = 0 And Pind.5 = 0 Then Z = 255                   '2+14
If Pinb.1 = 0 And Pind.6 = 0 Then Z = 255                   '2+15
If Pinb.1 = 0 And Pind.7 = 0 Then Z = 255                   '2+16

If Pinb.2 = 0 And Pind.0 = 0 Then Z = 255                   '3+9
If Pinb.2 = 0 And Pind.1 = 0 Then Z = 255                   '3+10
If Pinb.2 = 0 And Pind.3 = 0 Then Z = 255                   '3+12
If Pinb.2 = 0 And Pind.4 = 0 Then Z = 255                   '3+13
If Pinb.2 = 0 And Pind.5 = 0 Then Z = 255                   '3+14
If Pinb.2 = 0 And Pind.6 = 0 Then Z = 255                   '3+15
If Pinb.2 = 0 And Pind.7 = 0 Then Z = 255                   '3+16

If Pinb.3 = 0 And Pind.0 = 0 Then Z = 255                   '4+9
If Pinb.3 = 0 And Pind.1 = 0 Then Z = 255                   '4+10
If Pinb.3 = 0 And Pind.2 = 0 Then Z = 255                   '4+11
If Pinb.3 = 0 And Pind.4 = 0 Then Z = 255                   '4+13
If Pinb.3 = 0 And Pind.5 = 0 Then Z = 255                   '4+14
If Pinb.3 = 0 And Pind.6 = 0 Then Z = 255                   '4+15
If Pinb.3 = 0 And Pind.7 = 0 Then Z = 255                   '4+16



If Pinb.4 = 0 And Pind.0 = 0 Then Z = 255                   '5+9
If Pinb.4 = 0 And Pind.1 = 0 Then Z = 255                   '5+10
If Pinb.4 = 0 And Pind.2 = 0 Then Z = 255                   '5+11
If Pinb.4 = 0 And Pind.3 = 0 Then Z = 255                   '5+12
If Pinb.4 = 0 And Pind.5 = 0 Then Z = 255                   '5+14
If Pinb.4 = 0 And Pind.6 = 0 Then Z = 255                   '5+15
If Pinb.4 = 0 And Pind.7 = 0 Then Z = 255                   '5+16

If Pinb.5 = 0 And Pind.0 = 0 Then Z = 255                   '6+9
If Pinb.5 = 0 And Pind.1 = 0 Then Z = 255                   '6+10
If Pinb.5 = 0 And Pind.2 = 0 Then Z = 255                   '6+11
If Pinb.5 = 0 And Pind.3 = 0 Then Z = 255                   '6+12
If Pinb.5 = 0 And Pind.4 = 0 Then Z = 255                   '6+13
If Pinb.5 = 0 And Pind.6 = 0 Then Z = 255                   '6+15
If Pinb.5 = 0 And Pind.7 = 0 Then Z = 255                   '6+16

If Pinb.6 = 0 And Pind.0 = 0 Then Z = 255                   '7+9
If Pinb.6 = 0 And Pind.1 = 0 Then Z = 255                   '7+10
If Pinb.6 = 0 And Pind.2 = 0 Then Z = 255                   '7+11
If Pinb.6 = 0 And Pind.3 = 0 Then Z = 255                   '7+12
If Pinb.6 = 0 And Pind.4 = 0 Then Z = 255                   '7+13
If Pinb.6 = 0 And Pind.5 = 0 Then Z = 255                   '7+14
If Pinb.6 = 0 And Pind.7 = 0 Then Z = 255                   '7+16

If Pinb.7 = 0 And Pind.0 = 0 Then Z = 255                   '8+9
If Pinb.7 = 0 And Pind.1 = 0 Then Z = 255                   '8+10
If Pinb.7 = 0 And Pind.2 = 0 Then Z = 255                   '8+11
If Pinb.7 = 0 And Pind.3 = 0 Then Z = 255                   '8+12
If Pinb.7 = 0 And Pind.4 = 0 Then Z = 255                   '8+13
If Pinb.7 = 0 And Pind.5 = 0 Then Z = 255                   '8+14
If Pinb.7 = 0 And Pind.6 = 0 Then Z = 255                   '8+15




If Pinb.0 = 0 And Pind.0 = 0 Then Z = 2                     'Kirschen    1+9
If Pinb.1 = 0 And Pind.1 = 0 Then Z = 3                     'Melone      2+10
If Pinb.2 = 0 And Pind.2 = 0 Then Z = 8                     'Erdbeere    3+11
If Pinb.3 = 0 And Pind.3 = 0 Then Z = 5                     'Radieschen  4+12
If Pinb.4 = 0 And Pind.4 = 0 Then Z = 0                     'Karotte     5+13
If Pinb.5 = 0 And Pind.5 = 0 Then Z = 8                     'Pilz        6+14
If Pinb.6 = 0 And Pind.6 = 0 Then Z = 1                     'Birne       7+15
If Pinb.7 = 0 And Pind.7 = 0 Then Z = 7                     'Kartoffeln  8+16



Return





Anzeige:

If Z = 255 Then
 Gosub Falsch
Elseif Z = 0 Then
 Return
Else
 Gosub Blinki
End If

Return


Blinki:

For I = 1 To Z

  Portc.2 = 1
  Waitms 300
  Portc.2 = 0
  Waitms 400

Next I

Wait 1

Return


Falsch:

For I = 1 To 3
  Portc.2 = 1
  Waitms 200
  Portc.2 = 0
  Waitms 200
Next I


Wait 1

Return
 

Anhänge

  • P1080902_klein.jpg
    P1080902_klein.jpg
    381,2 KB · Aufrufe: 436
OP
Hucky3000

Hucky3000

Geocacher
So.
Wenn alles nicht hilft einfach mal abwraten bis man ne vernünftige Idee und Zeit hat.
Es sieht so aus, als wenn einzelne Krallen der Nieten teilwise in die alten "Leiterbahnen" reinraken.
Toll. Zumindest habe ich diverse Verbindungen, die nicht da sein sollten. Glaube nicht, dass ich über den Chip niederohmige Verbindungen zu den einzelnen Eingängen habe. Keine Lust den raus zu nehmen - bin froh, dass der in der gedrehten Fassung mit 28 Beinchen sitzt. Da komme ich so gut dran :???:

Ich dachte schon ich wäre zu doof zum programmieren für so eine einfache Logikschaltung :shocked:

Hucky
 
Oben