Skip to content
Snippets Groups Projects
main.c 5.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • Pascal Koch's avatar
    Pascal Koch committed
    #include <pico/stdlib.h>
    
    Pascal Koch's avatar
    Pascal Koch committed
    #include <hardware/i2c.h>
    
    Pascal Koch's avatar
    Pascal Koch committed
    #include <stdio.h>
    #include <unistd.h>
    
    Pascal Koch's avatar
    Pascal Koch committed
    /*
    
    Pascal Koch's avatar
    Pascal Koch committed
    unsigned* enablerregister = (void *) (SIO_BASE + SIO_GPIO_OE_SET_OFFSET);
    unsigned* volatile outregister = (void *) (SIO_BASE + SIO_GPIO_OUT_SET_OFFSET);
    unsigned* volatile outclearregister = (void *) (SIO_BASE + SIO_GPIO_OUT_CLR_OFFSET);
    
    Pascal Koch's avatar
    Pascal Koch committed
    unsigned* gpioregister = (void *) (IO_BANK0_BASE + IO_BANK0_GPIO25_CTRL_OFFSET );
    
    Pascal Koch's avatar
    Pascal Koch committed
    unsigned* resetspace = (void *) (RESETS_BASE);
    
    Pascal Koch's avatar
    Pascal Koch committed
    unsigned* resetdone = (void*) (RESETS_BASE + RESETS_RESET_DONE_IO_BANK0_BITS);
    //unsigned* resetdone = (void*) RESETS_RESET_DONE_IO_BANK0_BITS;
    */
    
    //unsigned* SDApin = (void*)(SIO_BASE + IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_I2C0_SDA);
    //unsigned* SCLpin = (void*)(IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_I2C0_SCL);
    
    
    
    Pascal Koch's avatar
    Pascal Koch committed
    unsigned* SDApinctrl = (void*)(IO_BANK0_BASE + IO_BANK0_GPIO0_CTRL_OFFSET);
    unsigned* SCLpinctrl = (void*)(IO_BANK0_BASE + IO_BANK0_GPIO1_CTRL_OFFSET);
    //unsigned* SDApinctrl = (void *)PICO_DEFAULT_I2C_SDA_PIN;
    //unsigned* SCLpinctrl = (void *)PICO_DEFAULT_I2C_SCL_PIN;
    
    
    
    const uint8_t init[4]  = { 0x21,0xa0,0xe1,0x81};
    const uint8_t zeile[8]  = { 0x00,0x02,0x04,0x06,0x08,0x10,0x12,0x14};
    //const uint8_t test[1]  = { 0x21,0xa0,0xe1,0x81};
    
    Pascal Koch's avatar
    Pascal Koch committed
    const uint8_t fill[17]  = { 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
    const uint8_t empty[17]  = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t achtel[17]  = { 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t viertel[17]  = { 0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t dreiachtel[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t hälfte[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t fünfachtel[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    const uint8_t dreiviertel[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00};
    const uint8_t siebenachtel[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0x00};
    const uint8_t ganzes[17]  = { 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00};
    
    
    Pascal Koch's avatar
    Pascal Koch committed
    
    
    Pascal Koch's avatar
    Pascal Koch committed
    
    int main() {
    
    Pascal Koch's avatar
    Pascal Koch committed
        //*SDApinctrl = IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_I2C0_SDA;
        //*SCLpinctrl = IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_I2C0_SCL;
    
    Pascal Koch's avatar
    Pascal Koch committed
        //gpio_set_function_masked(1 | 2, GPIO_FUNC_I2C); //
    
    Pascal Koch's avatar
    Pascal Koch committed
        //gpio_pull_up(*SDApinctrl);
        //gpio_pull_up(*SCLpinctrl);
    
    Pascal Koch's avatar
    Pascal Koch committed
    
    
    
    Pascal Koch's avatar
    Pascal Koch committed
       // gpio_set_function_masked(*SDApinctrl , IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_I2C0_SDA); //
       // gpio_set_function_masked(*SCLpinctrl , IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_I2C0_SCL); //
    
    Pascal Koch's avatar
    Pascal Koch committed
        i2c_init(i2c_default, 100000);
    
    Pascal Koch's avatar
    Pascal Koch committed
        gpio_set_function(0 ,GPIO_FUNC_I2C);
        gpio_set_function(1 ,GPIO_FUNC_I2C);
    
    Pascal Koch's avatar
    Pascal Koch committed
    
    
    Pascal Koch's avatar
    Pascal Koch committed
      
    
        gpio_pull_up(1);
        gpio_pull_up(0);
    
    Pascal Koch's avatar
    Pascal Koch committed
    
        //uint8_t* lampe [2] = {0x01,0xff};
    
    Pascal Koch's avatar
    Pascal Koch committed
        
    
    Pascal Koch's avatar
    Pascal Koch committed
        i2c_write_blocking(i2c_default, 0x70 , init+0, 1 ,false);
        i2c_write_blocking(i2c_default, 0x70 ,init+1, 1 ,false);
        i2c_write_blocking(i2c_default, 0x70 ,init+2, 1 ,false);
        i2c_write_blocking(i2c_default, 0x70 ,init+3, 1 ,false);
    
        //const uint8_t zeile[8]  = { 0x00,0x02,0x04,0x06,0x08,0x10,0x12,0x14};
    
        i2c_write_blocking(i2c_default, 0x70 , zeile, 4 ,false);
    
        //i2c_write_blocking(i2c_default, 0x70 , fill, 17 ,false);
        i2c_write_blocking(i2c_default, 0x70 , empty, 17 ,false);
    
    
    Pascal Koch's avatar
    Pascal Koch committed
        i2c_write_blocking(i2c_default, 0x70 , achtel, 17 ,false);
    
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
    
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , viertel, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , dreiachtel, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , hälfte, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
    
    Pascal Koch's avatar
    Pascal Koch committed
     //   busy_wait_ms(1000);
    
    Pascal Koch's avatar
    Pascal Koch committed
        i2c_write_blocking(i2c_default, 0x70 , fünfachtel, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , dreiviertel, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , siebenachtel, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
        i2c_write_blocking(i2c_default, 0x70 , ganzes, 17 ,false);
        for(int j = 0; j <10000000; j++){
            volatile int i = 0;
            //        *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
        }
     //   busy_wait_ms(1000);
    
    
    
    
    
    
        
    
    Pascal Koch's avatar
    Pascal Koch committed
        //i2c_write_blocking(i2c_default, 0x70 ,(const uint8_t *) 0x81, 1 ,false);
    
    
    
    
        
    
        
    
    Pascal Koch's avatar
    Pascal Koch committed
        
    
    Pascal Koch's avatar
    Pascal Koch committed
    
    
    Pascal Koch's avatar
    Pascal Koch committed
        
    
    Pascal Koch's avatar
    Pascal Koch committed
        /*
    
    Pascal Koch's avatar
    Pascal Koch committed
        *resetspace &= ~(1u<<5);
    
    Pascal Koch's avatar
    Pascal Koch committed
        *gpioregister = 5;
        *enablerregister = 0x01 << PICO_DEFAULT_LED_PIN;
    
    Pascal Koch's avatar
    Pascal Koch committed
    
        if(*resetdone & (0x1 <<5)){
    
        }
    
    
    Pascal Koch's avatar
    Pascal Koch committed
        for(int i = 0; i< 10 ;i++){
    
    Pascal Koch's avatar
    Pascal Koch committed
            for(int j = 0; j <1000000; j++){
    
    Pascal Koch's avatar
    Pascal Koch committed
                *outregister = 0x01 << PICO_DEFAULT_LED_PIN;
            }
    
    Pascal Koch's avatar
    Pascal Koch committed
            for(int j = 0; j <1000000; j++){
                //*outregister = 0x00 << SIO_GPIO_HI_OUT_CLR_OFFSET;
                *outclearregister = 0x01 << PICO_DEFAULT_LED_PIN;
    
                
    
    Pascal Koch's avatar
    Pascal Koch committed
    
            }
        }
    
    Pascal Koch's avatar
    Pascal Koch committed
        */
    
    Pascal Koch's avatar
    Pascal Koch committed
        return 0;
    }