Test du Rpi Pico Annexe : 1er essais OK !
This commit is contained in:
parent
69fab18b7d
commit
5a570ac325
55
Test.c
55
Test.c
@ -1,6 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include "pico/multicore.h"
|
||||
#include "pico/stdlib.h"
|
||||
#include "pico/stdio.h"
|
||||
#include "hardware/gpio.h"
|
||||
#include "hardware/i2c.h"
|
||||
#include "pico/binary_info.h"
|
||||
@ -40,8 +41,9 @@ int test_cde_vitesse_cercle(void);
|
||||
int test_asser_position_avance(void);
|
||||
int test_asser_position_avance_et_tourne(int);
|
||||
int test_trajectoire(void);
|
||||
int test_tca9535(void);
|
||||
int test_i2c_bus(void);
|
||||
void affiche_localisation(void);
|
||||
int test_i2c_lecture_pico_annex();
|
||||
|
||||
|
||||
// Mode test : renvoie 0 pour quitter le mode test
|
||||
@ -63,6 +65,7 @@ int mode_test(){
|
||||
printf("T - Trajectoire\n");
|
||||
printf("U - Scan du bus i2c\n");
|
||||
printf("V - APDS_9960\n");
|
||||
printf("W - Com i2c Pico Annexe\n");
|
||||
stdio_flush();
|
||||
int rep = getchar_timeout_us(TEST_TIMEOUT_US);
|
||||
stdio_flush();
|
||||
@ -133,7 +136,7 @@ int mode_test(){
|
||||
|
||||
case 'U':
|
||||
case 'u':
|
||||
while(test_tca9535());
|
||||
while(test_i2c_bus());
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
@ -141,11 +144,16 @@ int mode_test(){
|
||||
while(test_APDS9960());
|
||||
break;
|
||||
|
||||
case 'W':
|
||||
case 'w':
|
||||
while(test_i2c_lecture_pico_annex());
|
||||
break;
|
||||
|
||||
case PICO_ERROR_TIMEOUT:
|
||||
iteration--;
|
||||
if(iteration == 0){
|
||||
printf("Sortie du mode test\n");
|
||||
return 0;
|
||||
//printf("Sortie du mode test\n");
|
||||
//return 0;
|
||||
}
|
||||
|
||||
default:
|
||||
@ -179,7 +187,37 @@ int test_APDS9960(){
|
||||
return 1;
|
||||
}
|
||||
|
||||
int test_tca9535(){
|
||||
int test_i2c_lecture_pico_annex(){
|
||||
i2c_maitre_init();
|
||||
uint8_t tampon[10];
|
||||
uint8_t registre=0;
|
||||
uint8_t adresse = 0x17;
|
||||
int ret;
|
||||
|
||||
ret = i2c_write_blocking(i2c0, adresse,®istre, 1, false);
|
||||
if(ret < 0){
|
||||
printf("Erreur I2C : %d", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = i2c_read_blocking(i2c_default, adresse, tampon, 10, false);
|
||||
if(ret < 0){
|
||||
printf("Erreur I2C : %d", ret);
|
||||
}else{
|
||||
for(int i=0; i<10; i++){
|
||||
printf("%c", tampon[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
for(int i=0; i<10; i++){
|
||||
printf("%2x ", tampon[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int test_i2c_bus(){
|
||||
// Adresse I2C : 0b0100 000 R/W
|
||||
// Lecture des broches sur les registres 0 et 1
|
||||
// Registre 2 et 3 : valeur des broches en sorties
|
||||
@ -189,7 +227,7 @@ int test_tca9535(){
|
||||
uint8_t reception[8];
|
||||
uint8_t emission[8];
|
||||
//uint8_t adresse = 0b0100000;
|
||||
uint8_t adresse = 0x39;
|
||||
uint8_t adresse = 0x20;
|
||||
int statu;
|
||||
int lettre;
|
||||
|
||||
@ -198,17 +236,18 @@ int test_tca9535(){
|
||||
i2c_maitre_init();
|
||||
// Scan bus I2C - cf SDK
|
||||
printf("\nI2C Bus Scan\n");
|
||||
printf(" 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
|
||||
printf(" 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
|
||||
for (int addr = 0; addr < (1 << 7); ++addr) {
|
||||
if (addr % 16 == 0) {
|
||||
printf("%02x ", addr);
|
||||
}
|
||||
int ret;
|
||||
uint8_t rxdata;
|
||||
uint8_t rxdata=0x55;
|
||||
if (reserved_addr(addr))
|
||||
ret = PICO_ERROR_GENERIC;
|
||||
else
|
||||
ret = i2c_read_blocking(i2c_default, addr, &rxdata, 1, false);
|
||||
//ret = i2c_write_blocking(i2c_default, addr, &rxdata, 1, false);
|
||||
|
||||
printf(ret < 0 ? "." : "@");
|
||||
printf(addr % 16 == 15 ? "\n" : " ");
|
||||
|
13
i2c_maitre.c
13
i2c_maitre.c
@ -11,12 +11,17 @@ void i2c_maitre_init(void){
|
||||
stdio_init_all();
|
||||
i2c_init(i2c0, 100 * 1000);
|
||||
|
||||
printf("Initialisation des broches\n");
|
||||
for(int i=0; i++; i<=28){
|
||||
if(gpio_get_function(i) == GPIO_FUNC_I2C){
|
||||
printf("Borche I2C : %d\n", i);
|
||||
gpio_set_function(i, GPIO_FUNC_NULL);
|
||||
}
|
||||
}
|
||||
|
||||
printf("%d et %d en I2C\n", I2C_SDA_PIN, I2C_SCL_PIN);
|
||||
gpio_set_function(I2C_SDA_PIN, GPIO_FUNC_I2C);
|
||||
gpio_set_function(I2C_SCL_PIN, GPIO_FUNC_I2C);
|
||||
|
||||
gpio_set_function(6, GPIO_FUNC_NULL);
|
||||
gpio_set_function(7, GPIO_FUNC_NULL);
|
||||
|
||||
}
|
||||
|
||||
/// @brief Pour l'instant bloquant, mais devrait passer en non bloquant bientôt
|
||||
|
Loading…
Reference in New Issue
Block a user