RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee [erledigt] I2C will nicht

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: [erledigt] I2C will nicht

[erledigt] I2C will nicht 11 Jahre 5 Monate her #1738

Irgendwie will mein I2C nicht...

BGX1 Display geht, die PCF8574 und PCF9591 bekomme ich nicht zum laufen...
Angeschlossen sind die Teile an X4 - SDA an direkt neben GND, SCL daneben. Hardwaretechnisch hab ich alles übeprüft - Spannung haben die ICs, SDA/SCL sind verbunden (ich seh auch die 5V an den I2C-Pins der ICs), A0-A2 sind an Masse.

Mein Code:
#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/i2cmaster.h>
#include <nibobee/base.h>

uint8_t i2c_transaction(uint8_t txsize, uint8_t rxsize) {
	i2c_tx_size = txsize;
	i2c_rx_size = rxsize;
	if (i2c_start_transmission()==0) {
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		return 0;
	}
	if (i2c_wait_transmission()==0) {
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		return 0;
	}
	if (i2c_status()!=I2C_SUCCESS) {
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		delay(300);
		led_set(LED_L_RD, 1);
		delay(300);
		led_set(LED_L_RD, 0);
		delay(300);
		return 0;
	}
	return 1;
}
 
 
uint8_t i2c_writePCF8591(uint8_t control, uint8_t value) {
  i2c_buf[0] = 0x48;//I2C_TX(PCF8574_ADDR);
  i2c_buf[1] = control;
  i2c_buf[2] = value;
  return i2c_transaction(3,0);
}  
 
uint8_t i2c_writePCF8574(uint8_t value) {
  i2c_buf[0] = 0x40;//I2C_TX(PCF8574_ADDR);
  i2c_buf[1] = value;
  return i2c_transaction(2,0);
}  
 
void main() {
	activate_output_group(IO_LEDS);  // LED bits als Output
	i2c_init();
 
	delay(1000);
 
	//if (i2c_writePCF8574(0x00)) {
	if (i2c_writePCF8591(0x00,0x00)) {
		led_set(LED_R_RD, 0);
		delay(1000);
		led_set(LED_R_RD, 1);
		delay(1000);
		led_set(LED_R_RD, 0);
	} else {
		led_set(LED_R_RD, 0);
		delay(1000);
		led_set(LED_R_RD, 1);
		delay(1000);
		led_set(LED_R_RD, 0);
		delay(1000);
		led_set(LED_R_RD, 1);
		delay(1000);
		led_set(LED_R_RD, 0);
	}
	while(1);
}

Status ohne Display:
Die linke led blinkt 2x, also hat wohl i2c_wait_transmission() ein Problem.

Status mit Display:
bei i2c_writePCF8574(0x00) geht das Display aus (mitsamt Hintergrundbeleuchtung), bei 0xFF wieder an?!

Sieht jemand meinen Denkfehler?

[edit] hat sich erledigt. Der PCF8574 ging schon, nur hat der Transistor danach nen kurzen verursacht -> Die Spannung ging runter -> zu wenig fürs Display... Es hats aber alles überlebt...
[/edit]
Letzte Änderung: 11 Jahre 5 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.082 Sekunden

Werbung