- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 7 von 7

Thema: ATmega88 mit Nunchuk WII - Rückgabewert immer 0xFF

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer
    Registriert seit
    09.02.2010
    Alter
    47
    Beiträge
    4
    Bei mir rennt der Bus auch bei 100 KHz. Beim CC2 Projekt waren das sogar noch weniger....

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    *staubwisch*

    Moin,
    ich adoptiere diesen Thread mal, da es bei mir das gleiche Problem gibt:

    Ich betreibe einen ATMega32 direkt mit 3V3, da ich keinen Levelshifter zur Hand habe, und der Eigenbau scheinbar fehlerhaft funktionierte (keine Verbindung zum Nunchuk möglich). Zur Kommunikation nutze ich die I2C-Lib von Peter Fleury. Da ich leider grade kein LCD oder eine Möglichkeit habe die Daten an den PC zu senden toggel ich zwei LEDs um die Funktion zu testen.

    Die Initialisierung läuft durch, und auch die Daten werden angefordert und empfangen. Für einen ersten Funktionstest wollte ich mit einer der Tasten eine LED schalten. Doch diese ist nach dem ersten Auslesen des Nunchuks dauerhaft an. Auch die anderen Bits sind alle 1.

    Auch das dekodieren mit
    Code:
    x = (x^0x17) + 0x17
    brachte keine Besserung. Zudem lese ich häufiger, dass der Nunchuk die Adresse 0x52 haben soll. Damit bleibt aber die Kommunikation stehen.

    Ein Lösungsansatz ist, die TWI-Geschwindigkeit zu reduzieren. Diese Möglichkeit bietet die Lib von Peter aber in den Dateien i2cmaster.h und i2cmaster.c nicht. Wenn ich die anstatt der i2cmaster.c aber die twimaster.c in mein Projekt (AVR Studio4) einbinde bietet sich diese Möglichkeit aber die Kommunikation kommt nicht mehr zu Stande.

    Hat jemand einen Tipp oder gar einen Lösungsansatz für mein Problem?

    Code:
    //#define F_CPU 8000000L
    
    
    #include <avr/io.h>
    #include <stdio.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include <avr/pgmspace.h>
    #include "i2cmaster.h"
     
    #define NC_ADRESS     0xA4
    #define LED1_AN        PORTD |= (1<<PD4)
    #define LED1_AUS    PORTD &= ~(1<<PD4)
    #define LED1_TOG    PORTD ^= (1<<PD4)
    #define LED2_AN        PORTD |= (1<<PD5)
    #define LED2_AUS    PORTD &= ~(1<<PD5)
    #define LED2_TOG    PORTD ^= (1<<PD5)
    
    int send_zero()
    {
        i2c_start_wait(NC_ADRESS + I2C_WRITE);
        i2c_write(0x00);
        i2c_stop();
    }
    
    int main(void)
    {
        uint8_t nc_data[6], btnc, btnz, temp;
        uint16_t accx, accy, accz;
        uint8_t i=0;
     
        // Daten-Array leeren
        for(int i=0; i<4 ; i++)
        {
            nc_data[i] = 0;
        }
    
        sei();
    
    
        for(i=0; i<4 ; i++)
        {
            LED1_TOG;
            _delay_ms(500);
        }
        
        i2c_init();
    
        // Nunchuk initialisieren
        i2c_start_wait(NC_ADRESS + I2C_WRITE);
        i2c_write(0x40);
        i2c_write(0x00);
        i2c_stop();
    
        while(1)
        {
            LED1_AN;
            _delay_ms(100);
    
    
            send_zero();
    
    
            i2c_rep_start(NC_ADRESS + I2C_READ);
            
            for(i=0; i<6 ; i++)
            {
                nc_data[i] = i2c_readAck();
                _delay_us(100);
            }
            i2c_stop();
    
    
            LED1_AUS;
            _delay_ms(500);
    
    
            for(i=0; i<6 ; i++)
            {
                nc_data[i] = (nc_data[i] ^ 0x17) + 0x17;
            }
    
    
            if((nc_data[5] >> 0) & 1)
            {
                LED2_AN;
            }
            else
            {
                LED2_AUS;
            }
        }
    
    
        return 0;
     
    }
    Alles ist möglich. Unmögliches dauert nur etwas länger!

Berechtigungen

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

12V Akku bauen