- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: PIC18F458/PIC18f4685 I2C Master zu EAeDIP320-8 Touchdisplay

  1. #1

    PIC18F458/PIC18f4685 I2C Master zu EAeDIP320-8 Touchdisplay

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo ihr Lieben,

    ich bin langsam ziemlich ratlos.. Ich bin derzeit dabei an meinem PIC18F458 (später dann auch am PIC18F4685)
    über I2C mit meinem EAeDip320-8-Display zu kommunizieren.. Leider bisher ohne Erfolg :(
    Hierfür nutze ich MPLAB in Verbindung mit dem CCS-Compiler.

    Bin für alle Ratschläge dankbar

    zur besseren Info hier die Datenblätter:
    PIC18F458: http://ww1.microchip.com/downloads/e...doc/41159d.pdf
    I2C ab Seite 154; I2C-Master ab Seite 169
    Display: http://www.lcd-module.com/deu/pdf/grafik/edip320-8.pdf
    I2C ab Seite 7; Befehlssatz ab Seite 14

    Zum einen habe ich folgende Verkabelungen angebracht:
    Display GND (PIN1) - Stromversorgung GND
    Display VDD (PIN2) - Stromversorgung +5V
    Display GND (PIN1) - GND Pic-Board
    Display I2CMODE (PIN12) - Display GND
    Display SCL (PIN15) - Pic SCL (C3)
    Display SDA (PIN14) - Pic SDA (C4)
    Pic SCL über Pullup 12k - Pic-Board Stromversorgung 5V
    Pic SDA über Pullup 12k - Pic-Board Stromversorgung 5V

    Könnte sein, dass hier auch noch was fehlt oder falsch ist..

    Mein Testcode ist der folgende:

    Code:
    #include "18F458.h"
    
    #FUSES H4, NOWDT //H4 für möglichst hohe Geschwindigkeit am IRQ-Eingang
    #use I2C(Master, SDA=PIN_C4, SCL = PIN_C3, FAST, FORCE_HW)
    
    #int_SSP
    SSP_isr()
    {	
    	//Zum Test noch leer interrupt flag bit von Compiler rückgesetzt
    }
    
    void main()
    {
    
    	enable_interrupts(global);
    	enable_interrupts(INT_SSP);
    
    	set_tris_d(0x00); //Ausgang für LEDs
    	set_tris_c(0b00011000); //SDA und SCL als INPUT laut Datenblatt
    	output_d(0xFF); //Alle LEDs erst aus (AUS = 1, AN = 0)
    
    	while(1)
    	{
    		//Übertragen des Befehls zum Invertieren des kompletten Displays
    		
    		i2c_start();
    		output_bit(PIN_D0,~input(PIN_D0));
    		
    		i2c_write(0b11011110);	//senden der slave-Adresse mit 0 für write
    		output_bit(PIN_C2, ~PIR2[3]);
    		output_bit(PIN_D1,~input(PIN_D1));
    
    		i2c_write(0x11);	//Hex-Code für '#' übertragen
    		output_bit(PIN_D2,~input(PIN_D2));
    
    		i2c_write(0x02);	//Länge der Datenbytes
    		output_bit(PIN_D3,~input(PIN_D3));
    
    		i2c_write(0x44);	//Hex-Code für 'D'
    		output_bit(PIN_D4,~input(PIN_D4));
    
    		i2c_write(0x49);	//Hex-Code für 'I'
    		output_bit(PIN_D5,~input(PIN_D5));
    	
    		i2c_write(0xA0);	//Prüfsumme 
    		output_bit(PIN_D6,~input(PIN_D6));
    
    		i2c_stop();
    		output_bit(PIN_D7,~input(PIN_D7));
    	}
    }
    Die LEDs sind zum nachvollziehen im Durchlauf, wobei ich leider feststellen muss, dass der PIC schon während des ersten Write-Befehls aussteigt..
    Die while-Schleife sollte dafür sein, dass ich den Vorgang wiederholt am Oszi verfolgen kann,
    nur tut sich da auch noch nicht wirklich was.. :(

    Wie gesagt ich bin mittlerweile richtig ratlos, aber meinen Funden an Beispielen hab ich bisher immer entnommen,
    dass das #use I2C mit den Optionen und i2c_start, write, stop eigentlich ausreichen müsste..

    Wäre echt super wenn ihr mich unterstützen könntet sowohl in Sachen Display als auch I2C-Programmieren..

  2. #2
    Gibts denn hier wirklich niemanden der mir helfen kann?
    Ich komm einfach nicht mehr weiter

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo Ramona1805!

    Ich würde dir sehr gerne helfen, wenn ich aber ein Programm in c sehe, dann bin ich blind, weil ich die Sprache gar nicht kenne...

    Wenn du einigemasen english beherrschts probier mal in USA http://forum.microchip.com , wo Spezialisten aus aller Welt gibt und mir wurde dort am Anfang schnell geholfen...

    Vieeel Erfolg!

    MfG

  4. #4
    Hi nochmal,

    es ist zwar schade, dass mir hier keiner helfen konnte.. aber ich habe in einem anderen Forum ausreichend Hilfe und Unterstützung gefunden =)

    Falls jemand das gleiche Problem wie ich haben sollte, möchte ich hier mal den Link zu meiner Lösung posten.. Ich hoffe es ist oke auch wenn er auf ein anderes Forum verweist..

    http://www.ccsinfo.com/forum/viewtop...=132009#132009

    Falls das hier nicht erlaubt oder gewünscht ist, ist es oke wenn der Eintrag wieder gelöscht wird, dann würde ich notfalls die Antworten händisch posten.

    Liebe Grüße
    Ramona

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo Ramona1805!

    Keine Angst, jeder darf sich Hilfe überall holen ...

    Dass du die Lösung für andere bereitstellst, finde ich toll.

    MfG

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad