PCF8574 LCD TWI I2C Initialisierung Scanner Assembler ATmega8

#3786214
Lesenswert?

Geschätztes Forum,

ein kleines Assembler-Beispiel, wie ein LCD und ein PCF8574 per TWI / 
I2C initialisiert bzw.angesteuert werden kann.

Die vielen LEDs am SLAVE-Display dienten nur zu Versuchszwecken... 
schaut aber gut aus, dieses lustige gezappel :-)


TASTE-A: Der Master scannt den kompletten I2C-BUS und zeigt die 
vorhandenen Slaves an.

TASTE-B: Das externe Slave-Display am PCF8574 wird initialisiert.
(in diesm Beispiel wurde ein 4x16 Display verwendet, bein Bedarf muss 
die Initialisierungsroutine "MASTER_LCD_EXT.asm" entsprechend  angepasst 
werden).

TASTE-C: Ein TEXT wird zum externen Display gesendet.

TASTE-D: Der PIN-Zustand des PCF8574 wird ausgelesen und angezeigt.


Bernhard
Gast #4096019
Lesenswert?

Hallo Bernhard!
Ein sehr interessantes Projekt.
Da ich mich gerade mit Anzeigen und TWI beschäftige, habe ich ihre 
Schaltung aufgebaut und das Programm 1:1 in den Mega8 geflasht.

Den Mega8 betreibe ich mit Ext.Oszillator 16 MHz...und das funktioniert 
auch, der Mega wird mit AVR Studio 5.1 bearbeitet.

Dazu muss ich sagen dass ich ein Asm-Anfänger bin und außer ein paar 
kleineren Projekten keine großartige ASM-Erfahrung mitbringe.

Zu meinem Problem: Die Schaltung zeigt nach dem Einschalten keinerlei 
Reaktionen...weder LED noch LCD. Das LCD zeigt nur die üblichen 
Balken...also wird nicht inizialisiert.
Mit dem Debugger komme ich nicht über "rcall NEUSTART_MIT_WDR" hinaus.

Nach 3 Tagen verzweifelter Suche habe ich mich für diesen Schritt 
entschlossen ob mir vielleicht sie oder einer der vielen Profis im Web 
mit einem Tip weiter helfen könntet. Derzeit stehe ich total an!



Im voraus vielen Dank!
Gast #4096639
Lesenswert?

Hallo Bernhard!
Also ich habe mir die LED-Pins am Speicherscope angeschaut ausser einem 
Mini-Einschaltpuls mit 400 mV ist da nichts!

-Alle Verbindungen habe ich nochmals gemessen (auf sicheren 
Kontakt)...ok
-Externe CLK an Xtal1 schwingt sauber mit 2,44Vss

Hochohmig gemessen an den Pins:
-alle auf 5,01V
 außer
-Enable 4,12v
-alle drei LED's 4,3V
-Taster A,B,C,D 4,12V

Pullup R an den Tasterleitungen sind wahrscheinlich nicht geplant oder 
erforderlich..?!
Meine Schaltung sende ich zur Einsicht mit...Denkfehler, welche man 
selber immer wieder überliest sind immer möglich. Einzige Änderung zur 
gesendeten Schaltung ist die externe 16 MHz CLK.

Ich finde einfach keinen Ansatzpunkt mehr für weitere Untersuchungen.

Ich danke für ihre Mühe
Angehängte Dateien:
Gast #4096778
Lesenswert?

Hallo !

In der Sequenz in Modul "Master_LCD_INI.asm" Zeile 279 habe ich das, 
nach meiner Meinung fehlende "rcall LCD_COMMAND" eingefügt:

vorher:
    ldi temp, 0b00000001        ; DISPLAY löschen
   rcall LCD_COMMAND
    ldi temp, 0b00001111        ; DISPLAY ein / CURSOR blinken
    ldi temp, 0b00001100   ; CURSOR aus
  rcall LCD_COMMAND
    ldi temp, 0b00000110        ; Cursor Auto-Increment
   rcall LCD_COMMAND

jetzt:
    ldi temp, 0b00000001        ; DISPLAY löschen
   rcall LCD_COMMAND
    ldi temp, 0b00001111        ; DISPLAY ein / CURSOR blinken
        rcall LCD_COMMAND
    ldi temp, 0b00001100   ; CURSOR aus
  rcall LCD_COMMAND
    ldi temp, 0b00000110        ; Cursor Auto-Increment
   rcall LCD_COMMAND

Leider hat das nichts geändert, Programm hängt nach wie vor.
Gast #4099070
Lesenswert?

Hallo Bernhard!

Danke für den Tip! Das war's!!!

Offensichtlich ist da was beim Unzip (RAR) passiert...keine Ahnung wie 
das Zustande gekommen ist...aber das hat mich nahezu eine Woche lang die 
Abende gekostet! Ich habe die Moduls jetzt einzeln verglichen, aber in 
der Geschwindigkeit habe ich den Kopier-Fehler noch nicht entdeckt.

Die LED's und die Tasten tun jetzt was sie machen sollen. Mit dem LCD 
muss ich mich noch auseinandersetzen, denn da mangelt es noch an der 
Config....aber dafür reichen meine ASM-Kentnisse und das LCD-Manual 
schon aus.

Nochmals vielen Dank für deine Mühe!

Ich wünsche dir alles Gute!

K.T.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren