Hallo ich habe ein EA eDIPTFT43-ATP Display der Firma Electronic
Assambly
Ich möchte jetzt daten über RS-232 zu einem ATMEGA32 senden bzw.
empfangen
gibt es vll ein Tutorial oder ähnliches dafür ?
Hi
>gibt es vll ein Tutorial oder ähnliches dafür ?
Datenblatt. An deiner Stelle würde ich erst mal einen RS232-Wandler
(DAtenblatt S.23) dranhängen und die ersten Versuche vom PC aus machen.
MfG Spess
Hi
>Geht ohne probleme direkt am µC.>Einfach TX -> RX und RX -> TX verbinden und Befehle mit der Uart senden.
Das weiss ich. Ich schrieb aber PC . Mir ging es darum, das er die
ersten Ansteuerversuche mit dem PC macht. Und wenn er es verstanden hat
mit dem ATMega weiter macht.
MfG Spess
hmmm ich möchte vom atmega ja keine ascii zeichen haben sondern bytes,
denn die oberfläche soll auf dem controller vom tft laufen. vom atmega
möchte ich nur infos bzw infos zum atmega senden
juppi schrieb:> natürlich , aber es kann damit alles einfach erst einmal getestet> werden!
da hast du natürlich recht vll. wird mir dann einiges klarer
Hallo
Ich spreche das Teil über COM oder USB to Seriell Adapter an.
Mit meinem Primitivprogramm kann ich Strichgrafiken zeichnen und Buttons
Positionieren.
Befehle testen und senden.
Kleine Versuche speichern.
Für meine Zwecke reicht es.
Ich glaube nicht das du USB Ansteuerung und RS232 gleichzeitig nutzen
kannst.
USB ist in diesem Falle auch nur ein USB to seriell Adapter,..oder
MfG
naja ich will es ja nur über usb programmieren und dann über rs232 daten
empfangen. also wenn das programm einmal auf das ding geladen ist soll
nur noch die rs232 angebunden sein
Hi
>Willst du den Controller mit dem TFT direkt Verbinden,ohne Max232?
Wie sonst?
Datenblatt:
'Die Leitungen RxD und TxD führen 5V CMOS-Pegel zur direkten Anbindung
an
z.B. einen Mikrokontoller.'
MfG Spess
spess53 schrieb:>>Willst du den Controller mit dem TFT direkt Verbinden,ohne Max232?>>>> Wie sonst?
Bei mir ist das zu steuernte Gerät einige Meter entfernt.
..ob dann noch der 5V Pegel sicher ist?
MfG
Hallo
Ich weiss nicht genau, wo die Unterschiede zu meinem eDIPTFT43-A liegen,
aber Du kannst es sonst mal mit meinem Code versuchen.
ACHTUNG: Die Library ist für einen Luminary Cortex-M3 und benutzt deren
Library. Du musst alle UART... Befehle und die Include Statements auf
den ATmega anpassen. Mein Display läuft am UART1 des Cortex-M3 mit
115200 Baud.
Nun hast zu zwei Varianten, entweder Du arbeitest im sog. Terminalmode
d.h. Du schreibst deinen Output einfach mit ediptft43_puts() an das
Display. Oder Du verwendest die Grafikbefehle und plazierst deinen
Text irgendwo auf dem Display.
main():
1
....UARTinitialisieren....
2
ediptft43_puts("Entering Main-Loop....\r\n");
3
ediptft43_puts("Initializing UDP-get....\r\n");
4
....
oder über die Grafikbefehle:
1
....UARTinitialisieren....
2
ediptft43_fontsel(4);
3
ediptft43_fontzoom(2,2);
4
ediptft43_fontcolor(6,0);
5
ediptft43_printxy(240,1,'C',"Text1");
6
ediptft43_fontcolor(8,0);
7
ediptft43_printxy(1,50,'L',"Text2: Text3");
8
.....
Die Library ist noch sehr jung und unausgetestet. Sporadisch ändert sich
der Font oder die Grösse, aber das liegt ev. am Rest meines Programs und
nicht der Library ;-)
Daniel
Hier nochmal der Code
das Display befindet sich im Terminal Mode mit einer Baudrate von 115200
und das small Protokoll ist deaktiviert.
Ich möchte nur ein a Ausgeben.
1
#include<avr/io.h>
2
#include<stdint.h>
3
#include<stdio.h>
4
#include<util/delay.h>
5
6
7
voidUSART_init(void)
8
{
9
10
11
#ifndef F_CPU
12
/* In neueren Version der WinAVR/Mfile Makefile-Vorlage kann
13
F_CPU im Makefile definiert werden, eine nochmalige Definition
14
hier wuerde zu einer Compilerwarnung fuehren. Daher "Schutz" durch
15
#ifndef/#endif
16
17
Dieser "Schutz" kann zu Debugsessions führen, wenn AVRStudio
18
verwendet wird und dort eine andere, nicht zur Hardware passende
19
Taktrate eingestellt ist: Dann wird die folgende Definition
20
nicht verwendet, sondern stattdessen der Defaultwert (8 MHz?)
21
von AVRStudio - daher Ausgabe einer Warnung falls F_CPU
22
noch nicht definiert: */
23
24
#define F_CPU 4000000UL // Systemtakt in Hz - Definition als unsigned long beachten
25
// Ohne ergeben sich unten Fehler in der Berechnung
// set frame format: 8 Dat - 2 Stopbits (wie N u. nur 1 Stopbit?
50
UCSRC=(1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
51
}
52
53
54
55
intmain(unsignedchar*buf,unsignedcharlen)
56
{
57
unsignedchardata,i,bcc;
58
59
USART_init();
60
data='#';
61
USART_transmit(data);
62
63
64
data='Z';
65
USART_transmit(data);
66
67
68
data='T';
69
USART_transmit(data);
70
71
data='a';
72
USART_transmit(data);
73
74
75
}
void USART_transmit (unsigned char data ) // Senden (Manual S. 149)
{
/* warte auf leeren Transmit-Puffer */
// while (! (UCSRA & (1<<UDRE))) // wartet ewig?
;
/* put date in the buffer, send the data */
UDR = data;
return;
}
Du scheinst ziemlich renitent gegenüber jedwelchen Vorschlägen zu sein.
Hast Du Deine Schaltung (wie sieht die eigentlich aus ?) über einen
Pegelwandler (max232 o.ä) auf die serielle Schnittstelle gehängt, und
über ein Terminalprogram kontrolliert, ob der Code läuft ?
Beim Code bin ich auch nicht so sicher. Verschachtelte Funktionen
( uart_init() innerhalb von USAR_init() ) finde ich nicht sehr
übersichtlich. Bin nicht der C-Crack, aber mir ist das suspekt.
Habe mal mein Display an einen ATMega128 gehängt.
Einen ATMega32 habe ich nicht. Die Ports 17 und 8 am Display auf GND.
Damit läuft das Ding mit 9600 Baud und ohne SmallProtocol. Mit 115200
ist es auch bei mir nicht gelaufen, mein 16Mhz erzeugt dabei wohl zuviel
Abweichung.
Für die UART Schnittstelle gibts die Library von Peter Fleury. Wenn das
Ding mal läuft, kannst Du dir die Schnittstellenkonfiguration immer noch
rauspullen, und ohne die Library arbeiten.
Nach dem flashen erscheint bei mir auf dem Display:
1
EA eDIPTFT43-A V1.1 Rev.E TP+
2
a
Habe Dir die main.c und das Makefile für einen ATMega32 angepasst.
Sollte so laufen.
Danke!
ich habe das problem mit das ich garnix versende habe dein programm mit
baud 9600 jetzt so übernommen und das stk500 board an die com
schnitstelle gehängt um per hyperterminal zu gucken ob ich was versende
doch leider bekomme ich nix.
mach ich da schonwieder etwas falsch?
das sende vom hyperterminal zum display funktioniert aber schonmal.
Also Ich hab ja einen Atmega8 mit 4Mhz
Die Baudrate ist auf 9600
Dann ist am RS232 Spare vom Stk500 ein RS232 auf USB adapter dran und
über Hyperterminal ruf ich den (com3) auf.
nun sollte er mir das doch eigentlich auf dem Bildschirm auswerfen oder
nicht?
Hi
>Also Ich hab ja einen Atmega8 mit 4Mhz
Hoffentlich mit einem Quarz.
>Dann ist am RS232 Spare vom Stk500 ein RS232 auf USB adapter dran und>über Hyperterminal ruf ich den (com3) auf.
Und Spare auch am Controller (PD0/PD1) angeschlossen?
MfG Spess
spess53 schrieb:> Hi>>>Also Ich hab ja einen Atmega8 mit 4Mhz>> Hoffentlich mit einem Quarz.>
ja
>>Dann ist am RS232 Spare vom Stk500 ein RS232 auf USB adapter dran und>>über Hyperterminal ruf ich den (com3) auf.>> Und Spare auch am Controller (PD0/PD1) angeschlossen?>
ja
So da bin ich wieder...
es funktioniert die Verbindung von STK500 zu PC (Hyperterminal)
und es funktioniert die verbindung von PC (Hyperterminal) zum Display
ich bekomme auf dem hyperterminal momentan #TV (Linefeed und
Carriagereturn) a angezeit
und wenn ich das so vom pc zum display sende zeigt er mir das die
displayversion (Linefeed und Carriagereturn) und ein a an.
nur wenn ich das display an den RS232 Spare vom STK500 hänge bekomme ich
irgendwelche kryptischen zeichen.
es funzt sowohl der code von Daniel B. (danke nochmal) als auch der
hier:
1
#include<avr/io.h>
2
#include<stdint.h>
3
#include<stdio.h>
4
#include<util/delay.h>
5
6
7
8
#ifndef F_CPU
9
/* In neueren Version der WinAVR/Mfile Makefile-Vorlage kann
10
F_CPU im Makefile definiert werden, eine nochmalige Definition
11
hier wuerde zu einer Compilerwarnung fuehren. Daher "Schutz" durch
12
#ifndef/#endif
13
14
Dieser "Schutz" kann zu Debugsessions führen, wenn AVRStudio
15
verwendet wird und dort eine andere, nicht zur Hardware passende
16
Taktrate eingestellt ist: Dann wird die folgende Definition
17
nicht verwendet, sondern stattdessen der Defaultwert (8 MHz?)
18
von AVRStudio - daher Ausgabe einer Warnung falls F_CPU
19
noch nicht definiert: */
20
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 8000000"
21
#define F_CPU 4000000UL // Systemtakt in Hz - Definition als unsigned long beachten
22
// Ohne ergeben sich unten Fehler in der Berechnung
Hi
>nur wenn ich das display an den RS232 Spare vom STK500 hänge bekomme ich>irgendwelche kryptischen zeichen.
Das Display will TTL-Pegel keine RS232-Pegel!
MfG Spess
aber wenn ich von pc über rs232 sende geht es ja.
liefert der denn nen TTL pegel?
ich habe das display auch direkt an rxd txd vom atmega angeschlossen,
das ging auch nicht.
shibbyx schrieb:> aber wenn ich von pc über rs232 sende geht es ja.>> liefert der denn nen TTL pegel?
Hast du einen usb to ser. Wandler am PC.
Viele liefern 0/5 V.
>ich habe das display auch direkt an rxd txd vom atmega angeschlossen,>das ging auch nicht.
Das sollte aber gehen,wenn du Rx nicht auf Rx und Tx nicht auf Tx
geschaltet hast.(5V Pegel)
Juppi J. schrieb:> shibbyx schrieb:>> aber wenn ich von pc über rs232 sende geht es ja.>>>> liefert der denn nen TTL pegel?>> Hast du einen usb to ser. Wandler am PC.> Viele liefern 0/5 V.
ja ich hab nen usb zu rs232 wandler dran
>>ich habe das display auch direkt an rxd txd vom atmega angeschlossen,>>das ging auch nicht.>> Das sollte aber gehen,wenn du Rx nicht auf Rx und Tx nicht auf Tx> geschaltet hast.(5V Pegel)
ne rx is auf tx und tx auf rx
Und die Addressleitungen am Display hast Du entsprechend der Baudrate
auf GND gezogen ?
Für 2400 wären das dann Pin 7 und 8 auf GND, Pin 6 frei lassen, hat ja
internen Pullup und ist damit High.
also...
PC--Usb to seriell--->>>> rs232/seriell->EA-dip
PC/Terminal-->Usb to seriell------------->>>>rs232/seriell-> Ea-dip
ist das so?
Arbeite doch erst einmal ohne Small-Protokoll!
ja das hyperterminal-> display funzt!
wenn ich da einfach nur ein T eingebe zeigt er mir auch ein T an
Wenn ich vom STK500->Hyperterminal das T sende geht es auch
nur Wenn ich von STK500-> Display T sende bekomme ich mal ne 5 oder ein
S (unregelmäßig)