Funk-TFT-Touch Projekt

Hi,

ah danke, das ist sehr gut, ja ich muss doch aber die zahlen über meinen 8bit datenport senden, oder kann ich dann auch machen portc = &h6a ?
du kannst schreiben ....

PortC = &h6a
PortC = &b0110_1010
PortC = 106
PortC = "j"

da sollte jedes mal das selbe Bitmuster am Port erscheinen. Für die CPU gibt
es da keinen Unterschied. Das sind andere Darstellungen des selben Bitmusters.
Mehr nicht.

Bei den Funktionen :confused: :confused:
Ich benutze keine weil mir die zu viel Speicher verschwenden. Ich arbeite mit
globalen Variablen. Man muß dann nur aufpassen was in welchen Routinen
für Variablen verwendet werden.

Gruß
Dino
 
mh weiss das keiner? finde dadrüber auch nix wirklich im netz,.

ich mach dann aus den funktionen mit 2 werten 4, für jedes byte einen wert,.
dann spatr ich mir vielleicht die umrechnung usw,.
 
also, der knackpunkt, was macht dieser code genau,
Code:
unsigned char m,n //variablen definition
m=y>>8; //verschiebt y 8 zeichen nach links?
n=y //weist n den wert von Y zu 
LCD_Write_COM(0x00,x) //wählt register aus, setzt in der funktion RS= 0 
LCD_WRITE_DATA(m,n) //schreibt ins Register die werte m, und n setzt RS=1
habs so Übersetzt
Code:
  Dim M As Byte
   Dim N As Byte

   M = Y
   Shift , M , Left , 8
    N = Y

......
der ablauf der kommunikation ist ja,
Register aufrufen, => datenbytes hinschicken,.....

Hab mal noch den Batenblattausschnitt angehängt
 

Anhänge

  • register com.png
    register com.png
    39,3 KB · Aufrufe: 7
so hab jetzt mal den Schaltplan komplett neu gezeichnet,
und die Anbindung ans Display und ans SPI neu gemacht, wie wirs besprochen hatten,.


schaut bitte mal drüber da ich die teile bestellen werd in den nächsten 2 Tagen,.
Ausserdem hab ich ne kleine Anschaltung mit nem Lm324 fürs DCF-Modul gefunden, welche ich benutzen werd.
http://www.b-redemann.de/sp-project-dcf77.shtml
 

Anhänge

  • untitled.pdf
    72,2 KB · Aufrufe: 14
mhh, hab vorhin mein päckchen bekommen, und gleich die schaltung zur auswertung des dcf signals audgebaut, mit nem lm324, hab dann erst das modul getestet mit ner Led, bekam ein schönes Signal,
Verstärkungsfaktor = 1

hab dann den verstärkungsfaktor auf 3 erhöht, damit mein Mega auch ein high signal bekommt,
das komische is, mein mega lässt sich beschreiben, usw, jedoch gibt er am Uart nix mehr aus ?!

bzw es kommen nurnoch sehr komische zeichen
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Uart is bei ner Frequenz von 16Mhz auf 19200

mit putty und nem baud von 9600 siehts so aus,

00:00:57 00.00.00 00:00:01 00.00.00 00000001 00000000 00000000 0 1
Timezone : 0

00:00:58 00.00.00 00:00:01 00.00.00 00000001 00000000 00000000 0 1
Timezone : 0

ðþþþþþ~þ~þþþþþþþþ~þ~þþþþþþþþþþþþþþþÿþþþþþþþþþÌû¿ÿþ~þøþ


dann kommt nichts mehr


komisch jetzt gehts wieder
und wieder nich ,.

falls es wen interesiert hab diese schaltung nachgebaut,.
http://www.b-redemann.de/sp-project-dcf77.shtml

also die terminal progs , spinnen, mitm bascom simulator funzts ohne probleme,.
und es funktioniert :D
hab eben diese ausgabe bekommen
Code:
00:05:04 00.00.00 21:17:16 12.10.10
00:05:06 00.00.00 21:17:19 12.10.10
00:05:08 00.00.00 21:17:21 12.10.10
00:05:10 00.00.00 21:17:23 12.10.10
00:05:13 00.00.00 21:17:25 12.10.10
00:05:15 00.00.00 21:12:28 12.10.10
00:05:17 00.00.00 21:12:30 12.10.10
 
So selbst wenn ich hardware mässig nicht weiterkomme und mir eben aus frust über mein Selbsgebautes ISP dongle, nen myavrusb light bestellt hab,
bin ich gerade dabei noch mehr code des LCDs von C in Bascom zu übersetzen, funktioniert auch soweit ganz gut,.

allerdings kommt ein teil sehr oft vor,.
z.B. x>>8

und ich mir nicht so sicher bin ich wie das elegant lösen kann ,
ich habs soweit verstanden das ich ne variable hab, die sagen wir mal 16 zeichen besitzt , also ein Long ist, dann wirds 8 zeichen nach rechts geschoben
x = 0000 0000 0000 0000
dann nach dem verschieben sieht x so aus
x = 0000 0000 0000 0000
rot enfällt
die vollständige anweisung sieht dann nämlich so aus ..
lcd_write_data(x1>>8, x1)


hier mal mein code bis jetzt , (ganz schön aufgebläht irgendwie,.)

Code:
'###############################################################################
'Hauptschleife
'###############################################################################
Do
 Gosub Lcd_init
 Lcd_cs = 0                                                 'LCD einschalten
 Call Paint(ffffff)                                         'hintergrundfarbe setzen

Loop
End
'###############################################################################
'Subs  & Funktionen
'###############################################################################
Lcd_init:                                                   'sub lcd initialisierung
   Set Lcd_rst
      Waitms 5
   Reset Lcd_rst
      Waitms 5
   Set Lcd_rst
      Waitms 5
   Reset Lcd_cs

   Call Init_data(&H0000 , &H0001)                          'Driver code read
      Waitms 50
   Call Init_data(&H0015 , &H0030)                          'RGB Display Interface Control 2
   Call Init_data(&H0011 , &H0040)                          'Power Control 2
   Call Init_data(&H0010 , &H1628)                          'Power Control 1
   Call Init_data(&H0012 , &H0000)                          'Power Control 3
   Call Init_data(&H0013 , &H104D)                          'Power Control 4
      Waitms 50
   Call Init_data(&H0012 , &H0010)                          'Power Control 3
      Waitms 50
   Call Init_data(&H0010 , &H2620)                          'Power Control 1
   Call Init_data(&H0013 , &H344D)                          'Power Control 3
      Waitms 50
   Call Init_data(&H0001 , &H0100)                          'Driver Output Control 1
   Call Init_data(&H0002 , &H0300)                          'LCD Driving Control
   Call Init_data(&H0003 , &H1030)                          'Entry Mode
   Call Init_data(&H0008 , &H0604)                          'Display Control 2
   Call Init_data(&H0009 , &H0000)                          'Display Control 3
   Call Init_data(&H000a , &H0008)                          'Display Control 4

   Call Init_data(&H0041 , &H0002)
   Call Init_data(&H0060 , &H2700)                          'Driver Output Control 2
   Call Init_data(&H0061 , &H0001)                          'Base Image Display Control
   Call Init_data(&H0090 , &H0182)                          'Panel Interface Control 1
   Call Init_data(&H0093 , &H0001)
   Call Init_data(&H00a3 , &H0010)
      Waitms 25

   'Set Gamma
   Call Init_data(&H0030 , &H0000)                          'Gamma control 1
   Call Init_data(&H0031 , &H0502)                          'Gamma control 2
   Call Init_data(&H0032 , &H0307)                          'Gamma control 3
   Call Init_data(&H0033 , &H0305)                          'Gamma control 4
   Call Init_data(&H0034 , &H0004)                          'Gamma control 5
   Call Init_data(&H0035 , &H0402)                          'Gamma control 6
   Call Init_data(&H0036 , &H0707)                          'Gamma control 7
   Call Init_data(&H0037 , &H0503)                          'Gamma control 8
   Call Init_data(&H0038 , &H1505)                          'Gamma control 9
   Call Init_data(&H0039 , &H1505)                          'Gamma control 10
      Waitms 25

   'Display on
   Call Init_data(&H0007 , &H0001)                          'Display Control 1
      Waitms 25
   Call Init_data(&H0007 , &H0021)                          'Display Control 1
   Call Init_data(&H0007 , &H0023)                          'Display Control 1
      Waitms 25
   Call Init_data(&H0007 , &H0033)                          'Display Control 1
      Waitms 25
   Call Init_data(&H0007 , &H0133)                          'Display Control 1
   Lcd_cs = 1

  Return

'###############################################################################
'Deklaratinsbereich der Subs und Funktions
'###############################################################################


Sub Lcd_write_bus(byval Vh As Byte , Byval Vl As Byte)      'ruft index oder status register auf
   Lcd_dataport = Vh
   Lcd_rw = 0
   Lcd_rw = 1
   Lcd_dataport = Vl
   Lcd_rw = 0
   Lcd_rw = 1
End Sub

Sub Lcd_write_com(byval Vh As Byte , Byval Vl As Byte)      'ruft controlregister auf
   Lcd_rs = 0
   Call Lcd_write_bus(vh , Vl)
End Sub

Sub Lcd_write_data(byval Vh As Byte , Byval Vl As Byte)     'schickt die übergebene daten über den bus
   Lcd_rs = 1
   Call Lcd_write_bus(vh , Vl)
End Sub

Sub Init_data(byval X As Byte , Byval Y As Long)            'zerlegt y in 2 Bytes und sendet es über den bus
   Dim M As Byte
   Dim N As Byte
   Dim Z As Word
       '15|14|13|12| |11|10|9|8| |7|6|5|4| |3|2|1|0
   'y = 0 |0 |0 |0 | |1 |1 |1|1| |0|0|0|0| |1|1|1|1
   'M = Y >> 8
   M = Y
   N = Y                                                    'M = 0000 0000
   Shift , M , Right , 8
   ''

    N = Y
    Lcd_rs = 1

   Call Lcd_write_com(&H0000 , X)
   Call Lcd_write_data(m , N)
End Sub

Sub Adress_set(byval X1 As Integer , Byval Y1 As Integer , Byval X2 As Integer , Byval Y2 As Integer)
   Call Lcd_write_com(&H00 , &H20)
         Call Lcd_write_data(x1 >> 8 , X1)
   Call Lcd_write_com(&H00 , &H21)
         Call Lcd_write_data(y1 >> 8 , Y1)
   Call Lcd_write_com(&H00 , &H50)
         Call Lcd_write_data(x1 >> 8 , X1)
   Call Lcd_write_com(&H00 , &H52)
         Call Lcd_write_data(y1 >> 8 , Y1)
   Call Lcd_write_com(&H00 , &H51)
         Call Lcd_write_data(x2 >> 8 , X2)
   Call Lcd_write_com(&H00 , &H53)
         Call Lcd_write_data(y2 >> 8 , Y2)
   Call Lcd_write_com(&H00 , &H22)
End Sub

Sub Paint(byval Dcolor As Integer)                          'Pixel mit Farbe füllen -> Hintergrund
   Dim I As Word
   Dim J As Byte

   Call Adress_set(0 , 0 , 240 , 320)
   For I = 0 To 320 Step 1
      For J = 0 To 240 Step 1
         Lcd_write_data(dcolor >> 8 , Dcolor)
      Next J
   Next I
End Sub

achso kann von euch jemand C, bzw soviel das ermir helfen kann den beispiel code mal zum laufen zu bekommen auf nem mega1284?

was mir eben aufgefallen ist, wenn ich an dem 74ls 07 die spannung an den eingängen wegnehme, ist ja trotzdem noch 3,3V auf den ausgängen,
mh, d.h. doch das sich die Spannung dann garnich ändert?
 
Hi,

was mir eben aufgefallen ist, wenn ich an dem 74ls 07 die spannung an den eingängen wegnehme, ist ja trotzdem noch 3,3V auf den ausgängen,
mh, das heißt doch das sich die Spannung dann garnich ändert?
Denk an evtl vorhandene PullUp-Widerstände. Der 74LS07 hat OpenCollector-
Ausgänge. Die PullUps ziehen dann automatisch nach plus.

Gruß
Dino
 
klar, aber wie kann ich dann testen ob das richtig funktioniert, denn im moment such ich noch den Fehler,..
an der Verkablung kann es ja nicht liegen, denn die ist so wie in meiner "vorbildschaltung", hab sie ca. 20 mal geprüft,.
den 74ls07 hab ich auch eben getauschd,.
ich glaube so langsam ich brauch nen puffer-elko am mmc-schacht, oder die spi leitungen sind zu lang,.
 
so, Testweise nochma alles angeschlossen, und siehe da SPI mit SD Card funzt, mit nem mega8 ,
also scheint mein spi adapter mit dem 74ls07 zu funktionieren

glaube allerdings hab nen mega 1284 verfused, lässt keinen spi zugriff mehr zu, seid ich auf externen Takt umgestellt hab,.
 
glaube allerdings hab nen mega 1284 verfused, lässt keinen spi zugriff mehr zu, seid ich auf externen Takt umgestellt hab,.

Wenn du keinen externen Takt an XTAL1 anlegst geht das auch nicht mehr, der AVR benötigt einen Systemtakt, entweder durch internen RC-Oszillator (Werkseinstellung), durch Quarz-Oszillator mit angeschlossenem Quarz oder eben durch externen Takt an XTAL1.

Dirk
 
ne hab nen 16mhz quarz dran ,.

Wenn du den Quarz (und Cs) entfernst und einen externen Takt auf den XTAL1 Pin gibst, kannst du den Mikrocontroller wieder über SPI programmieren, eventuell einfach einen anderen AVR nehmen und dort einen Takt erzeugen.
 
mh das problem ist eher, welchen takt leg ich an ?
bei dem standart takt geht garnichts

kanns auch sein das es daran garnicht liegt?, das z.B. beim brennen das prog abgestürzt ist, un dann der mega im arsch is? oder geht das nich?
 
sry, ich meinte mit dem takt dieses codes,.
Code:
'################################################# ######
'# Test-Programm 
'# 0123456789 #
'# LED am PortD.6, Takt x am PortD.4 #
'################################################# ######

$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000
'$baud = 9600

Config Portd = Output
Portd.4 = 1
Dim A As Byte

Do

If A = 13 Then Exit Do
   Portd.6 = 1
      Waitms 1000
   Portd.6 = 0
      Waitms 1000
   A = A + 1
Loop


Do
Toggle Portd.4
Loop

End

aber wie gesagt ich glauzb der is hin, beim verstellen der fuses ist mein bascom abgestürzt, deswegen denke ich liegt es an was andrem
 
aber wie gesagt ich glauzb der is hin, beim verstellen der fuses ist mein bascom abgestürzt, deswegen denke ich liegt es an was andrem
nimm doch einfach mal das AVR-Studio und probier aus ob du ihn noch lesen
kannst (ach ja ... was für nen Progger hattest du ?)
Bei Parallel-/Seriell-Progger nimmst du einfach PonyProg zum testen.

Du kannst einfach nen ganz normalen Taktgenerator (Quarzoszillator oder
nen NE555 oder was weiß ich) parallel auf den XTAL1-Pin legen. Das Quarz
muß dafür nicht runter. Du zwingst ihm den Takt damit auf.

(Ich glaube ich muß nochmal Schaltpläne von möglichen Taktquellen hier
reinstellen ;) )

Gruß
Dino
 
so es sind fortschritte dank dem bascom forum zu verzeichnen :D

die TFT Ansteuerung steht :)
Jetzt muss nurnoch der Touch gehen,.
Leider kommen dir Farben nicht halb so gut rüber wie sie in echt sind, aber das könnt ihr euch ja denken,.
 

Anhänge

  • P1546_05-11-10.JPG
    P1546_05-11-10.JPG
    155,4 KB · Aufrufe: 37
ja aber nicht nur meine Schuld, denn im Datanblatt des Controllers steht D9-17 sind die Pins für 8Bit Modus. Die Chinesen haben aber diese Pins auf ihrer Plartine D0-7 genannt :D
und somit gabs ne leichte verwirrung, welche pins denn überhaupt zu nutzen sind, .. funzt jetzt aber 1a, das Problem das ich jetzt habe ist, das ich den Touch-Controller nicht angesprochen bekomme,.
Dout vom µC kommt an Din und umgekehrt?

ich bekomme nur 65535 zurück,.. obowohl ich schon 2 codes ausprobiert hab, den http://comwebnet.weimars.net/forum/showthread.php?tid=463 und nen code aus dem bascom forum, der ein eigenes SPi nutzt,.

könnt mir vorstellen das die dabei der Platine noch irgendwie murks gemacht haben ,.


Code:
'*******************************************************************************
'Config Touch Display
'****************5***************************************************************
Cst Alias Porta.5
Dout Alias Porta.6
Clock Alias Porta.7                                         'Define Pin Name
Din Alias Pinb.0
Config Clock = Output
Config Cst = Output
Config Dout = Output
Cst = 1

                                           'Interupt Pin from touch
Enable Int2
Config Int2 = Falling
Enable Interrupts
On Int2 Touch_int
Ddrb.2 = 0                                                  'int2
Portb.2 = 1

Dim Touchx As Word
Dim Touchy As Word
Dim Tasteneu As Byte
Dim X_dout As Byte
X_dout = &HD0                                               'Config ADS7846
Dim Y_dout As Byte                                          'H90 = B10010000
Y_dout = &H90                                               'HD0 = B11010000
Declare Sub Read_touch()'*******************************************************************************
'Read Touch with ADS7846 Touchcontroller
'*******************************************************************************

Sub Read_touch()
   Local Help As String * 4

   Cst = 0
   Shiftout Dout , Clock , X_dout , 1 , 8 , 20
   Waitms 5
   Shiftin Din , Clock , Touchx , 1 , 12 , 20
   Shiftout Dout , Clock , Y_dout , 1 , 8 , 20
   Waitms 5
   Shiftin Din , Clock , Touchy , 1 , 12 , 20
   Cst = 1
 '  Touchx = Touchx - 4095
     Print "X= " ; Touchx
   Print "Y= " ; Touchy
   Touchx = Touchx / 136
   Touchy = Touchy / 102

   Help = "X= "
   Lcd_string = Str(touchx)
   Lcd_string = Format(lcd_string , "000")
   Lcd_string = Help + Lcd_string
   Lcdtext Lcd_string , 40 , 262 , 5 , Blue , White
   Help = "Y= "
   Lcd_string = Str(touchy)
   Lcd_string = Format(lcd_string , "000")
   Lcd_string = Help + Lcd_string
   Lcdtext Lcd_string , 40 , 290 , 5 , Blue , White
   Print "x-h= " ; Touchx
   Print "Y-h= " ; Touchy
   Waitms 500
   Tasteneu = 0


End Sub


Touch_int:
Tasteneu = 1
Return

ich glaube ich kann lange warten bis da was ankommt,m denn ich hab ja garkeine clock signal, dachte das wär irgend ne andere art von SPi,... ich glaub ich nehm dann doch lieber die hardware Spoi schnittstelle,. (was bei dem code auch vorgesehen ist oder?)
dieser code wird wahrscheinlich besser sein ?
http://comwebnet.weimars.net/forum/showthread.php?tid=463
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)