- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 8 von 9 ErsteErste ... 6789 LetzteLetzte
Ergebnis 71 bis 80 von 83

Thema: Nunchuk + Bascom + Atmega8 . Brauche hilfe :-)

  1. #71
    Benutzer Stammmitglied
    Registriert seit
    31.03.2008
    Ort
    Gorxheimertal
    Alter
    36
    Beiträge
    59
    Anzeige

    Powerstation Test
    Danke schonmal für die schnelle Antwort!

    Hmm, ja das I2Cinit ist mir wohl unter den Tisch gefallen, aber wenn mich jetzt nicht alles Täuscht (was durchaus sein kann, ich hab heut nacht nur noch Bascom code vor augen gehabt), dann fehlt das in deinem Code den du damals gepostet hast, aber auch.

    Ich habe jetzt aber wo anders einen funktionierenden Code gefunden, der bei mir auf Anhieb funktionierte. Ich hab das I2cinit in deinem mal schnell eingefügt, aber da hats auch nicht funktioniert, ich versteh das grad einfach nicht.

    Aber hier mal der Code der funktioniert, ich werde jetzt nur die auswertung ändern, da ich eigentlich einen Classic Controller verwenden möchte

    Code:
    $regfile = "m168def.dat"
    $crystal = 20000000
    $baud = 9600
    $hwstack = 64
    $swstack = 64
    $framesize = 64
    
    $lib "i2c_twi.lbx"
    
    
    Config Scl = Portc.5
    Config Sda = Portc.4
    Config Twi = 100000
    I2cinit
    
    Const Nunchuck_write = &HA4
    Const Nunchuck_read = &HA5
    
    Dim Buffer(16) As Byte
    Dim Joy_x As Byte
    Dim Joy_y As Byte
    Dim Accel_x As Integer
    Dim Accel_y As Integer
    Dim Accel_z As Integer
    Dim Buttons As Byte
    Dim But_c As Byte
    Dim But_z As Byte
    
    
    Waitms 250
    Print "Nunchack Init"
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H40
        If Err <> 0 Then
          Print "Error data sending"
        End If
        I2cwbyte &H00
        If Err <> 0 Then
          Print "Error data sending"
        End If
        I2cstop
        If Err <> 0 Then
          Print "Error IC2 Stop"
        End If
    Waitms 250
    
    Print "Nunchack Init finished"
    Waitms 250
    Print "Nunchuck active"
    
    Do
       Gosub Nunchuk_read
       Print Accel_x ; "," ; Accel_y , ; "," ; Accel_z ; "," ; Joy_x ; "," ; Joy_y ; "," ; Buttons.0 ; "," ; Buttons.1
    
       Waitms 500
    Loop
    
    End
    
    Nunchuk_read:
       Dim I As Byte
       Dim Tmp As Byte
    
       I2cstart
       I2cwbyte Nunchuck_write
       I2cwbyte &H00
        If Err <> 0 Then
          Print "Error data sending"
        End If
       I2cstop
    
       Waitms 5
       Buffer(1) = 0
       I2creceive Nunchuck_read , Buffer(1) , 0 , 6
       If Err <> 0 Then
         Print "Error data receving"
       End If
    
       For I = 1 To 6
          Tmp = Buffer(i) Xor &H17
          Tmp = Tmp + &H17
          Buffer(i) = Tmp
       Next I
    
       Joy_x = Buffer(1)
       Joy_y = Buffer(2)
       Accel_x = Buffer(3) * 4
       Accel_y = Buffer(4) * 4
       Accel_z = Buffer(5) * 4
    
       Buttons = Buffer(6)
    
       If Buttons.2 = 1 Then Accel_x = Accel_x + 1
       If Buttons.3 = 1 Then Accel_x = Accel_x + 2
       If Buttons.4 = 1 Then Accel_y = Accel_y + 1
       If Buttons.5 = 1 Then Accel_y = Accel_y + 2
       If Buttons.6 = 1 Then Accel_z = Accel_z + 1
       If Buttons.7 = 1 Then Accel_z = Accel_z + 2
    
    Return

  2. #72
    Hallo Leute!
    Ich bin neu hier und hab mir so einiges angelesen, programmiert und so...
    Klasse Sache so ein Atmel!
    Bisher haben meine Programme alle funktioniert. nun hab ich mir mal den Nunchuk vorgenommen. Ich hab vor, ihn als Steuerung für Roboter etc zu verwenden.So weit bin ich noch lange nicht, erstmal muss das Ding Werte liefern, mit denen man arbeiten kann.
    Irgendwas mach ich falsch. Sämtliche versionen des Programms aus dem Thread hab ich durch. Es kommen keine Werte an!

    Hier der letztgenannte Code, ein wenig abgeändert.
    An Port D hingen eh einige LEDs rum. Die CLK und DAT hab ich an Port D 4/5 Wahlweise wird mit Levelshifter und 3,3V oder ohne Levelshifter und mit 5,0V getestet. Ergebnis immer gleich.

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    
    $lib "i2c_twi.lbx"
    
    Config Portd.4 = Output                                     ' Port d.4/5/6 LEDs - für Startsequenz / Statusanzeige
    Config Portd.5 = Output                                     '
    Config Portd.6 = Output
    
    
    Config Scl = Portc.5
    Config Sda = Portc.4
    Config Twi = 100000
    I2cinit
    
    Const Nunchuck_write = &HA4
    Const Nunchuck_read = &HA5
    
    Dim Buffer(16) As Byte
    Dim Joy_x As Byte
    Dim Joy_y As Byte
    Dim Accel_x As Integer
    Dim Accel_y As Integer
    Dim Accel_z As Integer
    Dim Buttons As Byte
    Dim But_c As Byte
    Dim But_z As Byte
    
    
    Waitms 250
    
    ' Startausgabe
    Portd.4 = 1                                                 'alle LED aus
    Portd.5 = 1
    Portd.6 = 1
    Waitms 5000                                                 'led nacheinander einschalten
    Portd.4 = 0
    Waitms 500
    Portd.5 = 0
    Waitms 500
    Portd.6 = 0
    
    Print "--- nunchuk ---"
    Print " "
    Print "Nunchuk Init"
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H40
        If Err <> 0 Then
          Print "Error data sending"
        End If
        I2cwbyte &H00
        If Err <> 0 Then
          Print "Error data sending"
        End If
        I2cstop
        If Err <> 0 Then
          Print "Error IC2 Stop"
        End If
    Waitms 250
    
    Print "Nunchack Init finished"
    Waitms 250
    Print "Nunchuck active"
    
    Do
       Gosub Nunchuk_read
       Print Accel_x ; "," ; Accel_y , ; "," ; Accel_z ; "," ; Joy_x ; "," ; Joy_y ; "," ; Buttons.0 ; "," ; Buttons.1
    
       Waitms 500
    Loop
    
    End
    
    Nunchuk_read:
       Dim I As Byte
       Dim Tmp As Byte
    
       I2cstart
       I2cwbyte Nunchuck_write
       I2cwbyte &H00
        If Err <> 0 Then
          Print "Error data sending"
        End If
       I2cstop
    
       Waitms 5
       Buffer(1) = 0
       I2creceive Nunchuck_read , Buffer(1) , 0 , 6
       If Err <> 0 Then
         Print "Error data receving"
       End If
    
       For I = 1 To 6
          Tmp = Buffer(i) Xor &H17
          Tmp = Tmp + &H17
          Buffer(i) = Tmp
       Next I
    
       Joy_x = Buffer(1)
       Joy_y = Buffer(2)
       Accel_x = Buffer(3) * 4
       Accel_y = Buffer(4) * 4
       Accel_z = Buffer(5) * 4
    
       Buttons = Buffer(6)
    
       If Buttons.2 = 1 Then Accel_x = Accel_x + 1
       If Buttons.3 = 1 Then Accel_x = Accel_x + 2
       If Buttons.4 = 1 Then Accel_y = Accel_y + 1
       If Buttons.5 = 1 Then Accel_y = Accel_y + 2
       If Buttons.6 = 1 Then Accel_z = Accel_z + 1
       If Buttons.7 = 1 Then Accel_z = Accel_z + 2
    
    Return
    und DAS kommt im Terminal an:

    Code:
    Nunchuk Init
    Error data sending
    Error data sending
    Error IC2 Stop
    Nunchack Init finished
    Nunchuck active
    Error data sending
    Es scheint NICHTS zu funktionieren. Warum?
    JTAG ist ausgefust, sonst gingen die i2C-Ports nicht.
    Der Nunchuk ist per Isakartenadapter angeschlossen. Sowohl mit Levelshifter als auch ohne ist das Ergebnis gleich.
    Geändert von Matahalii (18.03.2011 um 20:14 Uhr)

  3. #73
    Au Weia!
    Jetzt gehts. Ich hab mal die Datenblätter der Chips verglichen. Beim Atmega32 liegen die L2C / TWI Pins auf C0 und C1
    und ich wundere mich warum in vielen Codes das schon auskommentiert drin steht----- AUA!
    nun fliessen die Daten und alles ist plüschi!

    Matahalii

  4. #74
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Hallo zusammen,

    wenn ich einen Wii Nunchuk Wireless verwenden möchte,
    kann ich dann den Bascom - Code genau so verwenden,
    oder muss ich Änderungen durchführen?

    Grüße High Light
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  5. #75
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    1 Jahr ist es zwar schon her, aber weiß es denn keiner???

    Grüße High Light
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  6. #76
    Benutzer Stammmitglied
    Registriert seit
    19.01.2011
    Ort
    Franken
    Beiträge
    83
    Hast dus in dem Jahr mal ausprobiert?
    alle elektronischen Bauteile arbeiten mit Rauch in ihrem Inneren;
    Wenn der Rauch rauskommt , sind sie kaputt.

  7. #77
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Nein, habe ich noch nicht, sonst müsste ich nicht fragen...
    Es wäre halt interesant zu wissen, denn es wäre nicht so toll, wenn ich mir einen mit Wireless kaufe und es dann nicht funktioniert!
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  8. #78
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.09.2004
    Ort
    Abensberg (Niederbayern)
    Alter
    39
    Beiträge
    224
    Hallo Leute,

    ich weiß, der Thread hier ist schon ewig alt, aber ich hol ihn doch nochmal raus aus der Versenkung
    Ich habe das ganze vor kurzem nachgebaut und mit dem finalen Code auf Seite 3 getestet, alles funktioniert. Allerdings habe ich ein Verständnisproblem bei dem Code. Und zwar kann mir vielleicht jemand erklären was es damit auf sich hat:


    Code:
    Tmp = Buffer(1) Xor &H17    
    Tmp = Tmp + &H17    
    Pos_x = Tmp
    Ich hatte bisher noch nichts mit dem I2C-Bus zu tun, würde aber gerne verstehen, was es mit dem Xor &H17 und der Addition auf sich hat.
    Gruß, Martin
    Meine Roboter-, Elektronik- und Modellbauseite: http://www.ram-projects.de

  9. #79
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von RAM;562337
    [CODE
    Tmp = Buffer(1) Xor &H17
    Tmp = Tmp + &H17
    Pos_x = Tmp[/CODE]
    Ich hatte bisher noch nichts mit dem I2C-Bus zu tun, würde aber gerne verstehen, was es mit dem Xor &H17 und der Addition auf sich hat.
    Was bringt dich zu der Annahme, daß dieser Code etwas mit I2C zu tun hat?

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  10. #80
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    06.09.2004
    Ort
    Abensberg (Niederbayern)
    Alter
    39
    Beiträge
    224
    Hallo klebwax,

    dass es nicht direkt etwas mit I2C zu tun hat sondern mit der Umwandlung der empfangenen Bytes ist mir klar, allerdings nicht, warum das ganze gemacht bzw. gebraucht wird.
    Gruß, Martin
    Meine Roboter-, Elektronik- und Modellbauseite: http://www.ram-projects.de

Seite 8 von 9 ErsteErste ... 6789 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad