- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Hirnblockade beim Kodierschalter auslesen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.06.2011
    Ort
    Ruhrgebiet
    Alter
    35
    Beiträge
    42

    Hirnblockade beim Kodierschalter auslesen

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen!

    Ich habe ein kleines Projekt gebaut wo ich drei LED Module über Konstantstromtreiber ansteuere. Jedes Modul kann über einen externen digitalen Eingang angesteuert werden. Zusätzlich kann über Kodierschalter ausgewählt werden, ob nun jedes Modul einzeln ansteuerbar ist, oder ob man z.Bsp. über einen Eingang mehrere Module gleichzeitig einschalten kann.

    Nun hatte ich den Code angefangen und wollte zuerstmal das Einlesen der Kodierschalter testen, anstatt alles auf einmal zu schreiben. Ich wollte mit den Schaltern erstmal nur die Helligkeit der LED Module ändern. Nun verzweifele ich aber schon mehrere Tage daran, dass nur der Kodierschalter für Eingang 2 richtig funktioniert. Die Kodierschalter für Eingang 1 und 3 werden irgendwie vollkommen falsch ausgewertet, obwohl die Codeblöcke praktisch die selben sind. Wenn ich am zweiten Kodierschalter drehe, wird auch das zweite Module mit jeder Stellung heller. Bei Kodierschalter 3 passiert garnichts und bei Nr. 2 spring die Helligkeit beliebig. Und so langsam bin ich etwas ratlos weil ich alles x-mal überprüft habe (Layout, Schaltplan, Code, Platine Anschluss der Kodierschalter). Nun bräuchte ich mal ein zweites paar Augen (oder ruhig auch mehr).

    Hier zuerst einmal der Schaltplan:
    http://fs1.directupload.net/images/150622/8j989etz.png
    http://fs1.directupload.net/images/150622/uzj7rl3x.png


    Hier ist der Code:

    Code:
    $regfile = "m16def.dat"
    $crystal = 1000000
    $hwstack = 10
    $swstack = 10
    $framesize = 10
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    '#### EINGÄNGE DEFINIEREN FÜR KODIERSCHALTER I/O-FUNKTIONEN / PULLUPS AKTIVIEREN / ALIAS VERGEBEN  ####'
    '#############################################################################'
    
    
    '### KODIERSCHALTER INPUT 1 / MODUL 1 ###'
    
    Config Pinc.0 = Input                                       'BCD1
    Config Pinc.2 = Input                                       'BCD2
    Config Pinc.3 = Input                                       'BCD4
    Config Pinc.1 = Input                                       'BCD8
    
    Portc.0 = 1                                                 'Pullup aktivieren
    Portc.2 = 1                                                 'Pullup aktivieren
    Portc.3 = 1                                                 'Pullup aktivieren
    Portc.1 = 1                                                 'Pullup aktivieren
    
    In1bcd1 Alias Pinc.2                                        'Alias vergeben
    In1bcd2 Alias Pinc.0                                        'Alias vergeben
    In1bcd4 Alias Pinc.3                                        'Alias vergeben
    In1bcd8 Alias Pinc.1                                        'Alias Vergeben
    
    Dim Funktin1 As Byte                                        'Bytevariable, Eingelesen wird der Zustand des Kodierschalters für Input 1
    
    
    
    
    '### KODIERSCHALTER INPUT 2 / MODUL 2 ###'
    
    Config Pina.4 = Input                                       'BCD1
    Config Pina.6 = Input                                       'BCD2
    Config Pina.5 = Input                                       'BCD4
    Config Pina.7 = Input                                       'BCD8
    
    Porta.4 = 1                                                 'Pullup aktivieren
    Porta.6 = 1                                                 'Pullup aktivieren
    Porta.5 = 1                                                 'Pullup aktivieren
    Porta.7 = 1                                                 'Pullup aktivieren
    
    In2bcd1 Alias Pina.4                                        'Alias vergeben
    In2bcd2 Alias Pina.6                                        'Alias vergeben
    In2bcd4 Alias Pina.5                                        'Alias vergeben
    In2bcd8 Alias Pina.7                                        'Alias vergeben
    
    Dim Funktin2 As Byte                                        'Bytevariable, Eingelesen wird der Zustand des Kodierschalters für Input 2
    
    
    
    '### KODIERSCHALTER INPUT 3 / MODUL 3 ###'
    
    Config Pinc.4 = Input                                       'BCD1
    Config Pinc.6 = Input                                       'BCD2
    Config Pinc.7 = Input                                       'BCD4
    Config Pinc.5 = Input                                       'BCD8
    
    Portc.4 = 1                                                 'Pullup aktivieren
    Portc.6 = 1                                                 'Pullup aktivieren
    Portc.7 = 1                                                 'Pullup aktivieren
    Portc.5 = 1                                                 'Pullup aktivieren
    
    In3bcd1 Alias Pinc.4                                        'Alias vergeben
    In3bcd2 Alias Pinc.6                                        'Alias vergeben
    In3bcd4 Alias Pinc.7                                        'Alias vergeben
    In3bcd8 Alias Pinc.5                                        'Alias vergeben
    
    Dim Funktin3 As Byte                                        'Bytevariable, Eingelesen wird der Zustand des Kodierschalters für Input 3
    
    
    
    
    
    
    '#### TIMER KONFIGURIEREN FÜR PWM AUSGÄNGE / VARIABLEN DEFINIEREN ####'
    '#####################################################################'
    
    Config Timer1 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8       'OC1A = PWM Signal Modul 2
                                                                                                                                                              'OC1B = PWM Signal Modul 1
    
    Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 8                'OC2 = PWM Signal Modul 3
    
    Dim Ai1 As Word
    Dim Ai2 As Word
    Dim Ai3 As Word
    
    Ai1 = Getadc(0)
    Ai2 = Getadc(1)
    Ai3 = Getadc(2)
    
    '#### STATUSABFRAGE VON LED TREIBERN DEFINIEREN ####'
    '######################################## '
    
    Config Pinb.3 = Input                                       'Status, LED Treiber Modul 1
    Config Pinb.4 = Input                                       'Status, LED Treiber Modul 2
    Config Pinb.2 = Input                                       'Status, LED Treiber Modul 3
    
    Statusmod1 Alias Pinb.3                                     'Statusbit Treiber Modul 1
    Statusmod2 Alias Pinb.4                                     'Statusbit Treiber Modul 2
    Statusmod3 Alias Pinb.2                                     'Statusbit Treiber Modul 3
    
    
    '#### MODULEINGÄNGE DEFINIEREN ####'
    '##################################'
                                                                  'Digitaleingang Modul 1
    Config Pind.0 = Input                                       'Digitaleingang Modul 2
    Config Pind.1 = Input                                       'Digitaleingang Modul 3
    Config Pind.2 = Input
    
    Modul1in Alias Pind.0
    Modul2in Alias Pind.1
    Modul3in Alias Pind.2
    
    
    Enable Interrupts
    
    Start Adc
    
    
    
    
    
    
    '###################################################################################################'
    '###################################################################################################'
    '############################################# - - - - PROGRAMM - - - - ######################################'
    '###################################################################################################'
    '###################################################################################################'
    
    
    
    Funktin1 = &B00000000                                       'Zustandsvariable für Kodierschalter 1 initialisieren/rücksetzen
    Funktin2 = &B00000000                                       'Zustandsvariable für Kodierschalter 2 initialisieren/rücksetzen
    Funktin3 = &B00000000                                       'Zustandsvariable für Kodierschalter 3 initialisieren/rücksetzen
    
    Do
    
    '#### ZUSTAND DES KODIERSCHALTERS FÜR INPUT 1 IN VARIABLE EINLESEN ####'
    '#####################################################################'
    
    
    Select Case In1bcd1                                         'SET/RESET Bit 0 in Zustandsvariable Funktin1
    
       Case 1 : Reset Funktin1.0
       Case 0 : Set Funktin1.0
    
    End Select
    
    Select Case In1bcd2                                         'SET/RESET Bit 1 in Zustandsvariable Funktin1
    
       Case 1 : Reset Funktin1.1
       Case 0 : Set Funktin1.1
    
    End Select
    
    Select Case In1bcd4                                         'SET/RESET Bit 2 in Zustandsvariable Funktin1
    
       Case 1 : Reset Funktin1.2
       Case 0 : Set Funktin1.2
    
    End Select
                                                                 'SET/RESET Bit 3 in Zustandsvariable Funktin1
    Select Case In1bcd8
    
       Case 1 : Reset Funktin1.3
       Case 0 : Set Funktin1.3
    
    End Select
    
    
    '#### ZUSTAND DES KODIERSCHALTERS FÜR INPUT 2 IN VARIABLE EINLESEN ####'
    '#####################################################################'
    
    
    Select Case In2bcd1                                         'SET/RESET Bit 0 in Zustandsvariable Funktin2
    
       Case 0 : Reset Funktin2.0
       Case 1 : Set Funktin2.0
    
    End Select
    
    Select Case In2bcd2                                         'SET/RESET Bit 1 in Zustandsvariable Funktin2
    
       Case 0 : Reset Funktin2.1
       Case 1 : Set Funktin2.1
    
    End Select
    
    Select Case In2bcd4                                         'SET/RESET Bit 2 in Zustandsvariable Funktin2
    
       Case 0 : Reset Funktin2.2
       Case 1 : Set Funktin2.2
    
    End Select
                                                                 'SET/RESET Bit 3 in Zustandsvariable Funktin2
    Select Case In2bcd8
    
       Case 0 : Reset Funktin2.3
       Case 1 : Set Funktin2.3
    
    End Select
    
    
    '#### ZUSTAND DES KODIERSCHALTER FÜR INPUT 3 IN VARIABLE EINLESEN ####'
    '#####################################################################'
    
    
    Select Case In3bcd1                                         'SET/RESET Bit 0 in Zustandsvariable Funktin3
    
       Case 0 : Reset Funktin3.0
       Case 1 : Set Funktin3.0
    
    End Select
    
    Select Case In3bcd2                                         'SET/RESET Bit 1 in Zustandsvariable Funktin3
    
       Case 0 : Reset Funktin3.1
       Case 1 : Set Funktin3.1
    
    End Select
    
    Select Case In3bcd4                                         'SET/RESET Bit 2 in Zustandsvariable Funktin3
    
       Case 0 : Reset Funktin3.2
       Case 1 : Set Funktin3.2
    
    End Select
                                                                 'SET/RESET Bit 3 in Zustandsvariable Funktin3
    Select Case In3bcd8
    
       Case 0 : Reset Funktin3.3
       Case 1 : Set Funktin3.3
    
    End Select
    
    
    
    '################################ TEST DER EINZELNEN MODULE ############################',
    '########################### HELLIGKEIT MIT KODIERSCHALTER ÄNDERN ######################'
    '#######################################################################################'
    
    
    Select Case Funktin1
    
       Case &B00001111 : Ocr1b = 250
       Case &B00001110 : Ocr1b = 240
       Case &B00001101 : Ocr1b = 230
       Case &B00001100 : Ocr1b = 220
       Case &B00001011 : Ocr1b = 210
       Case &B00001010 : Ocr1b = 200
       Case &B00001001 : Ocr1b = 190
       Case &B00001000 : Ocr1b = 180
       Case &B00000111 : Ocr1b = 170
       Case &B00000110 : Ocr1b = 160
    
    End Select
    
    Select Case Funktin2
    
       Case &B00001111 : Ocr1a = 250
       Case &B00001110 : Ocr1a = 240
       Case &B00001101 : Ocr1a = 230
       Case &B00001100 : Ocr1a = 220
       Case &B00001011 : Ocr1a = 210
       Case &B00001010 : Ocr1a = 200
       Case &B00001001 : Ocr1a = 190
       Case &B00001000 : Ocr1a = 180
       Case &B00000111 : Ocr1a = 170
       Case &B00000110 : Ocr1a = 160
    
    End Select
    
    Select Case Funktin3
    
       Case &B00001111 : Ocr2 = 250
       Case &B00001110 : Ocr2 = 240
       Case &B00001101 : Ocr2 = 230
       Case &B00001100 : Ocr2 = 220
       Case &B00001011 : Ocr2 = 210
       Case &B00001010 : Ocr2 = 200
       Case &B00001001 : Ocr2 = 190
       Case &B00001000 : Ocr2 = 180
       Case &B00000111 : Ocr2 = 170
       Case &B00000110 : Ocr2 = 160
    
    End Select
    
    Loop

    Hoffentlich ist es was simples und ich hab den Wald vor lauter Bäumen nichtmehr gesehen . . .


    Danke für eure Hilfe!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von 128er Beitrag anzeigen
    Hoffentlich ist es was simples und ich hab den Wald vor lauter Bäumen nichtmehr gesehen . . .
    Jtag abgeschaltet? Input 1 und 3 liegen nämlich bei Dir auf PortC.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.06.2011
    Ort
    Ruhrgebiet
    Alter
    35
    Beiträge
    42
    Alter Schwede, ich werde bekloppt. Vielen herzlichen Dank Searcher!

    JTAG über Fusebits abgeschaltet und schon ist alles in Butter. Irgendwie war ich bisher damit noch nie konfrontiert.

    DANKE!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von 128er Beitrag anzeigen
    DANKE!
    Aber gerne doch. Hätte ich mit meinen Tipps doch immer soviel Glück

    Gutes Gelingen!
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Problem beim Auslesen der Wegstrecke
    Von Revenant im Forum Robby CCRP5
    Antworten: 3
    Letzter Beitrag: 04.01.2011, 11:26
  2. Problem beim PC-Tastatur auslesen
    Von hardware.bas im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 03.09.2010, 08:19
  3. Beim auslesen über RS 232 nur Zeichensalat
    Von Mechanikone im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 10
    Letzter Beitrag: 26.08.2006, 12:30
  4. Problem beim Auslesen von ADC mit I2C
    Von feldmueller im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 16.06.2006, 21:12
  5. Problem beim auslesen von I²C
    Von Andal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 03.03.2006, 11:39

Berechtigungen

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

Solar Speicher und Akkus Tests