Forum: Mikrocontroller und Digitale Elektronik MyAVR Display


von Thomas D (Gast)


Lesenswert?

Hallo,

ich versuche mit dem MK2 Board das MyAVR Display anzusprechen. Mein Ziel 
ist, dass IRGENDETWAS auf dem Display passiert. Das wäre schon ein sehr 
großer Erfolg.


Ich habe mir dazu das Datenblatt auf Seite 11 angeguckt...

http://www.myavr.info/download/techb_lcd.pdf


Dort steht "Das Display wird durch das dreimalige senden von 0b0011xxxx
(Soft-Reset) in den Initialisierungsmodus versetzt, dabei muss
RS = 0 sein."

Darin sehe ich einen kleinen Widerspruch... RS ist Port D.2. Wenn dieser 
Low sein soll können die doch nicht schreiben, dass 0b0011xxxx sondern, 
dass 0b0011x0xx geschickt werden soll oder?

Außerdem meine Frage in welchem Zeitabstand dieses Signal verschickt 
werden soll. Müsste es nicht noch so etwas wie eine Taktleitung geben?


Vielen Dank schonmal für Antworten!

von holger (Gast)


Lesenswert?

>Darin sehe ich einen kleinen Widerspruch... RS ist Port D.2. Wenn dieser
>Low sein soll können die doch nicht schreiben, dass 0b0011xxxx sondern,
>dass 0b0011x0xx geschickt werden soll oder?

Es ist nicht relevant was du denkst oder was andere schreiben.
Du hast dich an das gottverschissene Datenblatt deines
LCDs zu halten.

von Thomas D (Gast)


Lesenswert?

Hallo und vielen Dank für die Antwort. Ich werde jetzt nochmal nach dem 
"DISPLAYTECH 162" Datenblatt suchen.... aber myAVR hat dieses Display 
mitgeliefert und es wird insgesamt als "myAVR LCD Add-On"


Ich bin auch von der Firma nicht soo begeistert aber kann man wirklich 
so weit gehen und behaupten, was in deren Datenblatt stünde wäre falsch 
und wäre nicht mit deren verkauften Hardware vereinbar?


Nochmal danke für die Hilfe.

von Peter D. (peda)


Lesenswert?

Thomas D wrote:
> Darin sehe ich einen kleinen Widerspruch... RS ist Port D.2. Wenn dieser
> Low sein soll können die doch nicht schreiben, dass 0b0011xxxx sondern,
> dass 0b0011x0xx geschickt werden soll oder?

Schau mal in den Schaltplan.
Die meinen das LCD und da hast Du keinen Zugriff auf DB3..0, das ist mit 
den xxxx gemeint.


> Außerdem meine Frage in welchem Zeitabstand dieses Signal verschickt
> werden soll. Müsste es nicht noch so etwas wie eine Taktleitung geben?

Gibt es, ist der Pin "E".


Ein einfacher C-Code fürs LCD:

http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

Da stehen auch die Timings drin, entsprechen dem HD44780-Datenblatt.


Peter

von Thomas D (Gast)


Lesenswert?

Okay, danke soweit. Sprich wenn ich einen Befehl ausgeführt habe kommt E 
für eine ms auf low, dann wieder auf high, eine ms warten und dann 
nächster Befehl? Hier das Datenblatt: 
http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A500%252FLCD162C%2523DIS.pdf;SID=29MY@xsqwQAR0AACpSTWI654e4c217a3a333ef6475519295d9237


Die Beispielprogramme funktionieren leider nicht. Ich benutze myAVR 
Workpad PLUS.


Das Programm:

#define F_CPU 3686400

#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include "main.h"
#include "lcd_drv.h"


int main( void )
{
  lcd_init();

  lcd_pos( 0, 1 );
  lcd_text( (u8*)"Zeile 1" );

  lcd_pos( 1, 2 );
  lcd_text( (u8*)"Zeile 2:" );

  for(;;);
}





Und die Fehlermeldungen


 In file included  from MAIN.c:5:

c:/programme/myavrworkpadplus_demo/winavr/lib/gcc/../../avr/include/util 
/delay.h:90:3:  warning: #warning "Compiler optimizations disabled; 
functions from won't work as designed"
 In file included  from MAIN.c:6:

main.h:1  1:15: error: io.h: Datei nicht gefunden.




:( Ich hoffe jemand kann mir weiterhelfen. Danke.

von holger (Gast)


Lesenswert?

>main.h:1  1:15: error: io.h: Datei nicht gefunden.

Da hast du wirklich ein Problem ;)

von Thomas D (Gast)


Lesenswert?

Wenn ich #include <io.h> bzw #include "io.h" hinzufüge kommt die 
Fehlermeldung

error: io.h: Datei nicht gefunden.

von Thomas D (Gast)


Lesenswert?

Ich checks einfach nicht.

von Justus S. (jussa)


Lesenswert?

>  #include <avr/io.h>

>  #include <util/delay.h>

sind die nicht vom WinAVR? Gibt es die überhaupt bei dem komischen 
Workpad? Ich hab auch ein MK2 Board mit MyAVR Display, aber hab gleich 
WinAVR benutzt, und damit gabs keine Probleme

von Walter (Gast)


Lesenswert?

dann such doch mal nach der Datei io.h

von Thomas D (Gast)


Lesenswert?

So, habe mir WinAVR installiert. Ich habe "AVR Insight" gestartet. So 
schwer kann das doch garnicht sein.

von Thomas D (Gast)


Lesenswert?

... oh die Frage vergessen... wo kann ich denn jetzt den Quellcode 
eingeben? ^^

von Justus S. (jussa)


Lesenswert?

Thomas D wrote:
> ... oh die Frage vergessen... wo kann ich denn jetzt den Quellcode
> eingeben? ^^

im Programmers Notepad

von Thomas D (Gast)


Lesenswert?

Super, danke.


Dies ist ja jetzt nur eine Art Texteditor. Ich habe mal das 
Kleinstprogramm vom AVR-GCC-Tutorial eingefügt und als main.c sowie als 
Workspace abgespeichert.

#include <avr/io.h>          // (1)

int main (void) {            // (2)

   DDRB  = 0xff;             // (3)
   PORTB = 0x03;             // (4)

   while(1) {                // (5a)
     /* "leere" Schleife*/;  // (5b)
   }                         // (5c)

   /* wird nie erreicht */
   return 0;                 // (6)
}


Hat jemand Lust mir stichwortartig die nächsten Schritte zu erklären? 
Habe versucht die abgespeicherten Dateien mit Insight zu laden aber das 
will er nicht so wirklich.

von Justus S. (jussa)


Lesenswert?

Thomas D wrote:

> Hat jemand Lust mir stichwortartig die nächsten Schritte zu erklären?
> Habe versucht die abgespeicherten Dateien mit Insight zu laden aber das
> will er nicht so wirklich.

zum komiplieren:
Tools > Make all

zum Programmieren:
Tools > Programm

wahrscheinlich musst du dir zuerst noch ein makefile anlegen, siehe
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Exkurs:_Makefiles
das muss man aber eigentlich nur einmal pro Projekt machen

von Justus S. (jussa)


Angehängte Dateien:

Lesenswert?

ich hab dir mal mein makefile angehängt, welches ich mit dem USB MK2 
benutze...ein paar Änderungen musst du noch machen:

relativ am Anfang musst du die Werte für F_CPU (Quarzgeschwindigkeit in 
Hertz) und TARGET (= Filename ohne(!) .c) anpassen und etwas weiter 
hinten AVRDUDE_PORT auf den COM-Port setzen, wo dein USB-Programmer 
hingemappt wurde, also zB com1,com2,...


mehr müsste nicht nötig sein

€: das Ding muss in den gleichen Ordner wie dein c-File

von Thomas D (Gast)


Lesenswert?

Danke nochmal!


Brauche ich das "Insight" überhaupt?

Wenn ich auf Program klicke gibt es einen Fehler. Ich verwende den 
ATmega168.


Im makefile sieht es jetzt so aus: MCU = atmega168


Folgende Fehlermeldung:

selected device is not supported by programmer: m168


Brauche ich noch weitere Veränderungen im makfile?

von Justus S. (jussa)


Lesenswert?

Thomas D wrote:
> Danke nochmal!
>
>
> Brauche ich das "Insight" überhaupt?

ich hab es noch nie benutzt


> Im makefile sieht es jetzt so aus: MCU = atmega168
>
>
> Folgende Fehlermeldung:
>
> selected device is not supported by programmer: m168

komisch...im avrdude ist der bekannt, und laut myAVR-HP wird der auch 
vom mySmartUSB MK2 unterstützt

von Thomas D (Gast)


Lesenswert?

Wenn ich den atmega48 verwende kommt die entsprechend gleiche 
Fehlermeldung nachdem ich den makefile korrigiert habe:

MCU = atmega48

vrdude: error: selected device is not supported by programmer: m48

von Thomas D (Gast)


Lesenswert?

Hier die komplette Ausgabe der Konsole:

> "make.exe" program
makefile:510: warning: overriding commands for target `sizebefore'
makefile:348: warning: ignoring old commands for target `sizebefore'
makefile:512: warning: overriding commands for target `sizeafter'
makefile:352: warning: ignoring old commands for target `sizeafter'
avrdude -p atmega48 -P com3 -c avr910    -U flash:w:main.hex

Found programmer: Id = "AVR ISP"; type = S
    Software Version = 2.5; Hardware Version = 2.0
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize = 512 bytes.

Programmer supports the following devices:
    Device code: 0x01 = (unknown)
    Device code: 0x02 = (unknown)
    Device code: 0x03 = (unknown)
    Device code: 0x04 = (unknown)
    Device code: 0x05 = (unknown)
    Device code: 0x06 = (unknown)
    Device code: 0x07 = (unknown)
    Device code: 0x08 = (unknown)
    Device code: 0x09 = (unknown)
    Device code: 0x0a = (unknown)
    Device code: 0x0b = (unknown)
    Device code: 0x0c = (unknown)
    Device code: 0x0d = (unknown)
    Device code: 0x0e = (unknown)
    Device code: 0x0f = (unknown)
    Device code: 0x10 = (unknown)
    Device code: 0x11 = (unknown)
    Device code: 0x12 = (unknown)
    Device code: 0x13 = AT90S1200
    Device code: 0x14 = (unknown)
    Device code: 0x15 = (unknown)
    Device code: 0x16 = (unknown)
    Device code: 0x17 = (unknown)
    Device code: 0x18 = (unknown)
    Device code: 0x19 = (unknown)
    Device code: 0x1a = (unknown)
    Device code: 0x1b = (unknown)
    Device code: 0x1c = (unknown)
    Device code: 0x1d = (unknown)
    Device code: 0x1e = (unknown)
    Device code: 0x1f = (unknown)
    Device code: 0x20 = ATtiny84
    Device code: 0x21 = (unknown)
    Device code: 0x22 = (unknown)
    Device code: 0x23 = (unknown)
    Device code: 0x24 = (unknown)
    Device code: 0x25 = (unknown)
    Device code: 0x26 = (unknown)
    Device code: 0x27 = (unknown)
    Device code: 0x28 = AT90S4414
    Device code: 0x29 = (unknown)
    Device code: 0x2a = (unknown)
    Device code: 0x2b = (unknown)
    Device code: 0x2c = (unknown)
    Device code: 0x2d = (unknown)
    Device code: 0x2e = (unknown)
    Device code: 0x2f = (unknown)
    Device code: 0x30 = AT90S4433
    Device code: 0x31 = (unknown)
    Device code: 0x32 = (unknown)
    Device code: 0x33 = (unknown)
    Device code: 0x34 = AT90S2333
    Device code: 0x35 = (unknown)
    Device code: 0x36 = (unknown)
    Device code: 0x37 = (unknown)
    Device code: 0x38 = AT90S8515
    Device code: 0x39 = (unknown)
    Device code: 0x3a = ATMEGA8515
    Device code: 0x3b = (unknown)
    Device code: 0x3c = (unknown)
    Device code: 0x3d = (unknown)
    Device code: 0x3e = (unknown)
    Device code: 0x3f = (unknown)
    Device code: 0x40 = (unknown)
    Device code: 0x41 = ATMEGA103
    Device code: 0x42 = (unknown)
    Device code: 0x43 = ATMEGA128
    Device code: 0x44 = (unknown)
    Device code: 0x45 = ATMEGA64
    Device code: 0x46 = (unknown)
    Device code: 0x47 = (unknown)
    Device code: 0x48 = (unknown)
    Device code: 0x49 = (unknown)
    Device code: 0x4a = (unknown)
    Device code: 0x4b = (unknown)
    Device code: 0x4c = AT90S2343
    Device code: 0x4d = (unknown)
    Device code: 0x4e = (unknown)
    Device code: 0x4f = (unknown)
    Device code: 0x50 = (unknown)
    Device code: 0x51 = (unknown)
    Device code: 0x52 = (unknown)
    Device code: 0x53 = (unknown)
    Device code: 0x54 = (unknown)
    Device code: 0x55 = ATtiny12
    Device code: 0x56 = ATtiny15
    Device code: 0x57 = (unknown)
    Device code: 0x58 = (unknown)
    Device code: 0x59 = (unknown)
    Device code: 0x5a = (unknown)
    Device code: 0x5b = (unknown)
    Device code: 0x5c = (unknown)
    Device code: 0x5d = (unknown)
    Device code: 0x5e = ATtiny2313
    Device code: 0x5f = (unknown)
    Device code: 0x60 = ATMEGA161
    Device code: 0x61 = (unknown)
    Device code: 0x62 = (unknown)
    Device code: 0x63 = ATMEGA162
    Device code: 0x64 = ATMEGA163
    Device code: 0x65 = (unknown)
    Device code: 0x66 = (unknown)
    Device code: 0x67 = (unknown)
    Device code: 0x68 = AT90S8535
    Device code: 0x69 = ATMEGA8535
    Device code: 0x6a = (unknown)
    Device code: 0x6b = (unknown)
    Device code: 0x6c = AT90S4434
    Device code: 0x6d = (unknown)
    Device code: 0x6e = (unknown)
    Device code: 0x6f = (unknown)
    Device code: 0x70 = (unknown)
    Device code: 0x71 = (unknown)
    Device code: 0x72 = ATMEGA32
    Device code: 0x73 = (unknown)
    Device code: 0x74 = ATMEGA6450
    Device code: 0x75 = ATMEGA6490
    Device code: 0x76 = ATMEGA8
    Device code: 0x77 = (unknown)
    Device code: 0x78 = ATMEGA169
    Device code: 0x79 = (unknown)
    Device code: 0x7a = (unknown)
    Device code: 0x7b = (unknown)
    Device code: 0x7c = (unknown)
    Device code: 0x7d = (unknown)
    Device code: 0x7e = (unknown)
    Device code: 0x7f = (unknown)

avrdude: error: selected device is not supported by programmer: m48
make.exe: *** [program] Error 1

> Process Exit Code: 2
> Time Taken: 00:02




Der ATMEGA48 ist hier nicht vorhanden. Auf dem AVR Board steht V2.07

In der Konsolenmeldung steht: Hardware Version = 2.0

Aber daran wirds wohl nicht liegen. Ob ich einen anderen Makefile 
brauche? Hast du einen dieser µC mal verwendet?

von Justus S. (jussa)


Lesenswert?

Thomas D wrote:
> Hier die komplette Ausgabe der Konsole:
>
> Aber daran wirds wohl nicht liegen. Ob ich einen anderen Makefile
> brauche? Hast du einen dieser µC mal verwendet?

ich hab mit dem mySmartUSB MK2 bis jetzt ATmega8, ATmega32 und 
ATmega644P programmiert..wie meine Ausgabe dabei aussieht, werde ich dir 
allerdings erst morgen sagen können, weil ich meine Sachen nicht hier 
habe

von Justus S. (jussa)


Lesenswert?

also bei mir sieht es so aus:

avrdude -p atmega644p -P com1 -c avr910    -U flash:w:teststand3.hex

Found programmer: Id = "AVR ISP"; type = S
    Software Version = 2.5; Hardware Version = 2.0
Programmer supports auto addr increment.

Programmer supports the following devices:
    Device code: 0x01 = (unknown)
    Device code: 0x02 = (unknown)
    Device code: 0x03 = (unknown)
    Device code: 0x04 = (unknown)
    Device code: 0x05 = (unknown)
    Device code: 0x06 = (unknown)
    Device code: 0x07 = (unknown)
    Device code: 0x08 = (unknown)
    Device code: 0x09 = (unknown)
    Device code: 0x0a = (unknown)
    Device code: 0x0b = (unknown)
    Device code: 0x0c = (unknown)
    Device code: 0x0d = (unknown)
    Device code: 0x0e = (unknown)
    Device code: 0x0f = (unknown)
    Device code: 0x10 = (unknown)
    Device code: 0x11 = (unknown)
    Device code: 0x12 = (unknown)
    Device code: 0x13 = AT90S1200
    Device code: 0x14 = (unknown)
    Device code: 0x15 = (unknown)
    Device code: 0x16 = (unknown)
    Device code: 0x17 = (unknown)
    Device code: 0x18 = (unknown)
    Device code: 0x19 = (unknown)
    Device code: 0x1a = (unknown)
    Device code: 0x1b = (unknown)
    Device code: 0x1c = (unknown)
    Device code: 0x1d = (unknown)
    Device code: 0x1e = (unknown)
    Device code: 0x1f = (unknown)
    Device code: 0x20 = ATtiny84
    Device code: 0x21 = (unknown)
    Device code: 0x22 = (unknown)
    Device code: 0x23 = (unknown)
    Device code: 0x24 = (unknown)
    Device code: 0x25 = (unknown)
    Device code: 0x26 = (unknown)
    Device code: 0x27 = (unknown)
    Device code: 0x28 = AT90S4414
    Device code: 0x29 = (unknown)
    Device code: 0x2a = (unknown)
    Device code: 0x2b = (unknown)
    Device code: 0x2c = (unknown)
    Device code: 0x2d = (unknown)
    Device code: 0x2e = (unknown)
    Device code: 0x2f = (unknown)
    Device code: 0x30 = AT90S4433
    Device code: 0x31 = (unknown)
    Device code: 0x32 = (unknown)
    Device code: 0x33 = (unknown)
    Device code: 0x34 = AT90S2333
    Device code: 0x35 = (unknown)
    Device code: 0x36 = (unknown)
    Device code: 0x37 = (unknown)
    Device code: 0x38 = AT90S8515
    Device code: 0x39 = (unknown)
    Device code: 0x3a = ATMEGA8515
    Device code: 0x3b = (unknown)
    Device code: 0x3c = (unknown)
    Device code: 0x3d = (unknown)
    Device code: 0x3e = (unknown)
    Device code: 0x3f = (unknown)
    Device code: 0x40 = (unknown)
    Device code: 0x41 = ATMEGA103
    Device code: 0x42 = (unknown)
    Device code: 0x43 = ATMEGA128
    Device code: 0x44 = (unknown)
    Device code: 0x45 = ATMEGA64
    Device code: 0x46 = (unknown)
    Device code: 0x47 = (unknown)
    Device code: 0x48 = (unknown)
    Device code: 0x49 = (unknown)
    Device code: 0x4a = (unknown)
    Device code: 0x4b = (unknown)
    Device code: 0x4c = AT90S2343
    Device code: 0x4d = (unknown)
    Device code: 0x4e = (unknown)
    Device code: 0x4f = (unknown)
    Device code: 0x50 = (unknown)
    Device code: 0x51 = (unknown)
    Device code: 0x52 = (unknown)
    Device code: 0x53 = (unknown)
    Device code: 0x54 = (unknown)
    Device code: 0x55 = ATtiny12
    Device code: 0x56 = ATtiny15
    Device code: 0x57 = (unknown)
    Device code: 0x58 = (unknown)
    Device code: 0x59 = (unknown)
    Device code: 0x5a = (unknown)
    Device code: 0x5b = (unknown)
    Device code: 0x5c = (unknown)
    Device code: 0x5d = (unknown)
    Device code: 0x5e = ATtiny2313
    Device code: 0x5f = (unknown)
    Device code: 0x60 = ATMEGA161
    Device code: 0x61 = (unknown)
    Device code: 0x62 = (unknown)
    Device code: 0x63 = ATMEGA162
    Device code: 0x64 = ATMEGA163
    Device code: 0x65 = (unknown)
    Device code: 0x66 = (unknown)
    Device code: 0x67 = (unknown)
    Device code: 0x68 = AT90S8535
    Device code: 0x69 = ATMEGA8535
    Device code: 0x6a = (unknown)
    Device code: 0x6b = (unknown)
    Device code: 0x6c = AT90S4434
    Device code: 0x6d = (unknown)
    Device code: 0x6e = (unknown)
    Device code: 0x6f = (unknown)
    Device code: 0x70 = (unknown)
    Device code: 0x71 = (unknown)
    Device code: 0x72 = ATMEGA32
    Device code: 0x73 = (unknown)
    Device code: 0x74 = ATMEGA6450
    Device code: 0x75 = ATMEGA6490
    Device code: 0x76 = ATMEGA8
    Device code: 0x77 = (unknown)
    Device code: 0x78 = ATMEGA169
    Device code: 0x79 = (unknown)
    Device code: 0x7a = (unknown)
    Device code: 0x7b = (unknown)
    Device code: 0x7c = (unknown)
    Device code: 0x7d = (unknown)
    Device code: 0x7e = (unknown)
    Device code: 0x7f = (unknown)

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.05s

avrdude: Device signature = 0x1e960a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be 
performed



der Mega644p wird also erkannt, obwohl er nicht in der Liste steht...auf 
dem myAVR-Programmer steht bei mir:

mySmartUSB
V2.11

von Thomas D (Gast)


Lesenswert?

Vielen Dank für die Antwort!


Wie hast du das denn Hardwaretechnisch gemacht? Der atmega32 und 
atmega644p haben jeweils 40 Pins, das Board nur 28.

von Thomas D (Gast)


Lesenswert?

Ahh, habs schon gecheckt.

von Justus S. (jussa)


Lesenswert?

Thomas D wrote:
> Ahh, habs schon gecheckt.

nur um sicher zugehen:
den Mega8 habe ich auf dem myAVR-Board programmiert, in dem das USB-Teil 
dabei dort eingesteckt war, Mega32 und Mega644u auf meiner selber 
designten Platine und dem RN-Controlboard mittels des 10poligen Steckers 
auf dem Programmer

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.