Willkommen Gast. Bitte einloggen oder registrieren.
Mai 3, 2024, 06:37:28
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Alles rund ums Modden
| |-+  Tutorials (Moderator: xonom)
| | |-+  USB-LCD Lowcost Edition
  « vorheriges nächstes »
0 Mitglieder und 4 Gäste betrachten dieses Thema.
Seiten: 1 ... 23 24 25 26 27 [28] 29 30 31 32 33 ... 37 nach unten Drucken
Autor Thema: USB-LCD Lowcost Edition  (Gelesen 425200 mal)
conradfreak
Lötkolbenfreak

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 157



Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #405 am: November 28, 2008, 21:36:42 »

OH

Das is schlecht  Cry

Hab mir schon 3 LCD`s geholt  Embarrassed

Könnt ich evt. einen an USB und die beiden anderen parallel an den LPT?
Gespeichert


Ast
Case-Konstrukteur

*

Karma: +8/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 589


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: USB-LCD Lowcost Edition
« Antwort #406 am: November 28, 2008, 21:46:01 »

Also, um eines klar zu stellen:

Du kannst bis zu zwei Controller an die USB-LCD-Schaltung anschließen.
Ob die am selben LCD sitzen ist total egal (genau so wie am LPT).

Also entweder du schließt ein LCD mit zwei Controllern an (meist größere mit 4 Zeilen und zwei Enable-Leitungen) oder bis zu zwei mit einem Controller (die kleineren mit bis zu 80 Zeichen und nur einer Enable-Leitung).

USB und LPT ergäben also bis zu 4 Controller.

Ob es möglich ist zwei Instanzen von StLCD mit verschiedenen Konfigurationen laufen zu lassen weiß ich allerdings nicht, da müsste Olaf was zu sagen.
Gespeichert

There are only 10 types of people in the world:
Those who understand binary, and those who don't.
--------
How many people can read hex if only you and dead people can read hex?
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #407 am: Dezember 3, 2008, 17:58:16 »

Hallo zusammen,
ich habe ein 40x4 Zeichen LCD erfolgreich in Betrieb genommen. Alles wunderbar. Ich würde nun gerne versuchen, die Hintergrundbeleuchtung per PWM zu dimmen. Ich meine im Sourcecode entdeckt zu haben, dass der Wert aus dem Befehl "short _stdcall USB_LCD_BL (short value)" irgendann auf dem TINY als data[2] ankommt:

case cmdLCD_BG:
         if(data[2] != 0)
            PORTD |= (1 << 5);
         else
            PORTD &= ~(1 << 5);
         len = 1;
         break;

Meine erste Frage nun: Warum heisst es hier (1<<5)Huh Das hieße doch, dass das Bit 5 des Ports D beeinflusst wird... Und das wäre doch eigentlich der Pin für das Signal E2? Hmmm.
Nunja, wenn ich nun PD5 und PD3 tauschen würde (E2/BL), dann könnte ich die PWM-Funktion vom PD5 aktivieren (OC1B). Dann müsste ich nur den Wert in die PWM schreiben und schwups müsste meine Hintergrundbeleuchtung dimmbar sein.
Problem: Ich habe versucht, die Firmware mit dem ATMEL AVR Studio und WinAVR (beides neueste Versionen) zu compilieren. Nachdem ich einige Optimierungen eingeschaltet habe, passt es zumindest in den Speicher (Flash 96.8%/Data 39.8%) und ich bekomme keine Fehlermeldung. Aber wenn ich das erzeugte HEX-File flashe, wird meine Schaltung nicht mehr erkannt -> "Unbekanntes Gerät".
Gibt es da irgendwie eine Anleitung, wie ich die Firmware selber compilieren und modifizieren kann? Oder kann mit das einer machen und mir das HEX-File schicken? Das wären ja nur ein paar Zeilen mehr:

[...]
case cmdLCD_BG:
         OCR1B = data[2];
         len = 1;
         break;
[...]
int   main(void){
   PORTB = 0xFF;
   DDRB = 0xFF;
   PORTD = 0;
   DDRD = 0b01111000;
   TCCR0A = (1<<COM0B1) | (1<<WGM00) | (1<<WGM01)
   TCCR0B = (1<<WGM02) | (1<<CS00)
   usbInit();
   sei();
   for(;Wink{   /* main event loop */
      usbPoll();
   }
   return 0;

Dann habe ich noch ein ganz anderes Problem: Wenn ich mein Display verbunden habe und alle wunderpar funktioniert, möchte ich meinen Rechner in den Hibernate-Zustand (Susbend to disk) versetzen. Das geht  natürlich auch. ABER wenn ich dann wieder aufwache (Resume), dann ist das Display nicht initialisiert und ich bekommen auch bei einem Neustart meiner Software auf dem PC keine Verbindung mehr. Im  Gerätemanager steht das Display ordentlich angemeldet drin. Erst nachdem ich das Display im Gerätemanager deaktiviert und aktiviert habe kann ich mich mit meiner Software wieder verbinden... Ist das ein bekanntes und im Idealfall gelöstes Problem? Habt ihr damit auch Probleme?

Grüße an alle
Christian
« Letzte Änderung: Dezember 3, 2008, 18:10:18 von christian » Gespeichert
Ast
Case-Konstrukteur

*

Karma: +8/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 589


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: USB-LCD Lowcost Edition
« Antwort #408 am: Dezember 3, 2008, 18:50:37 »

Also der Sourcecode, den ich hier habe lautet:
Code:
case cmdLCD_BG:
if(data[2] != 0)
PORTD |= (1 << 3);
else
PORTD &= ~(1 << 3);
len = 1;
break;

Keine Ahnung, ob der vielleicht in der Datei auf Modding-FAQ.de fehlerhaft ist, oder wo hast du den her?

Mit irgendwelchen Stromsparmodi habe ich noch keine Erfahrungen gemacht und kann dir deshalb leider nicht sagen, ob das "normal" ist.

Was das Kompilieren der Firmware angeht:

Hast du die CPU-Frequenz auch auf 12 MHz gestellt?
Ansonsten fällt mir gerade nichts ein, weshalb der Code bei dir anders kompilieren sollte als bei mir.

Ich hänge trotzdem einfach mal die Makefile, mit der die Firmware kompiliert wurde, an.

Code:
###############################################################################
# Makefile for the project USB-LCD
###############################################################################

## General Flags
PROJECT = USB-LCD
MCU = attiny2313
TARGET = USB-LCD.elf
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2                       -DF_CPU=12000000  -Os  -fsigned-char
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS +=


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0


## Objects that must be built in order to link
OBJECTS = main.o oddebug.o usbdrv.o usbdrvasm.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

## Build
all: $(TARGET) USB-LCD.hex USB-LCD.eep size

## Compile
usbdrvasm.o: ../usbdrvasm.S
$(CC) $(INCLUDES) $(ASMFLAGS) -c  $<

main.o: ../main.c
$(CC) $(INCLUDES) $(CFLAGS) -c  $<

oddebug.o: ../oddebug.c
$(CC) $(INCLUDES) $(CFLAGS) -c  $<

usbdrv.o: ../usbdrv.c
$(CC) $(INCLUDES) $(CFLAGS) -c  $<

##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)

%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@

%.eep: $(TARGET)
avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@

%.lss: $(TARGET)
avr-objdump -h -S $< > $@

size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) USB-LCD.elf dep/* USB-LCD.hex USB-LCD.eep

## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)

Gespeichert

There are only 10 types of people in the world:
Those who understand binary, and those who don't.
--------
How many people can read hex if only you and dead people can read hex?
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #409 am: Dezember 4, 2008, 09:33:44 »

Hallo Ast,
danke schonmal für das makefile. Ich hab das jetzt mal damit ausprobiert, irgendwie läuft der zwar durch, aber wenn ich das hex-File flashe, dann ist das wohl etwas zu gross. Keine Ahnung, schade...
Wegen den Pins, ich hab das nochmal neu heruntergeladen und da steht richtigerweise 3 drin statt 5. Evtl. hatte ich das schon geändert...
Ich hab dann jetzt alles nochmal mit dem aktuellen Sourcen probiert, aber das geht auch nicht, ich bekomm das nicht richtig kompiliert scheinbar...
Christian
« Letzte Änderung: Dezember 4, 2008, 12:47:02 von christian » Gespeichert
Ast
Case-Konstrukteur

*

Karma: +8/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 589


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: USB-LCD Lowcost Edition
« Antwort #410 am: Dezember 4, 2008, 19:08:28 »

Das ist wirklich seltsam.

Anscheinend hat sich mit einer neueren Version irgendwas im avr-gcc geändert, denn wenn ich meinen code kompiliere komme ich auch auf über 2048 Byte.

Du kannst einige Byte einsparen, indem du in der usbconfig.h den DEVICE_NAME entfernst:

Code:
//#define USB_CFG_DEVICE_NAME 'U', 'S', 'B', 'L', 'C', 'D'
//#define USB_CFG_DEVICE_NAME_LEN 6
/* Same as above for the device name. If you don't want a device name, undefine
* the macros.
*/

Außerdem kannst du den VENDOR_NAME kürzen.

Und zu guter Letzt könntest du noch in der LCD_Init Funktion in main.c die doppelten _delay_us(50) durch ein _delay_ms(1) ersetzen, was zwar die Initialisierung des LCD minimal verlangsamen sollte, aber das macht ja wohl nichts.
Gespeichert

There are only 10 types of people in the world:
Those who understand binary, and those who don't.
--------
How many people can read hex if only you and dead people can read hex?
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #411 am: Dezember 5, 2008, 18:20:29 »

Hallo,
ich habe es mittlerweile geschafft, die Sourcen zu kompilieren, allerdings wird das "USB-LCD" dann nicht erkannt sondern bleibt als "Unbekantes Gerät" im Gerätemanager stehen...
Welche Kombination aus Sourcen und Compiler benutzt ihr?
Christian
Gespeichert
Ast
Case-Konstrukteur

*

Karma: +8/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 589


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: USB-LCD Lowcost Edition
« Antwort #412 am: Dezember 14, 2008, 20:41:00 »

Also, welche Version von avr-gcc ich damal benutzt habe, weiß ich nicht.
Aber ich habe den Code so, wie er im Internet steht, original kompiliert.

Leider habe ich kein fertiges USB-LCD hier und kann desshalb auch nur schlecht herausfinden, wieso der Code mit nem neueren avr-gcc nicht mehr funktioniert.

Wenn du kannst, versuche den Code mit älteren Versionen von avr-gcc zu kompilieren.
Gespeichert

There are only 10 types of people in the world:
Those who understand binary, and those who don't.
--------
How many people can read hex if only you and dead people can read hex?
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #413 am: Dezember 15, 2008, 16:08:38 »

Hallo Ast,
also, ich habe das jetzt mal mit WinAVR 071221, 080610 und 081205 ausprobiert und nix hat geklappt.
Wenn ich unter Windows XP SP3 in der Kommandozeile aus dem Verzeichnis /firmware/default den befehl "make" eingebe, erscheint folgende zusammenfassung:

AVR Memory Usage
----------------
Device: attiny2313

Program:    2064 bytes (100.8% Full)
(.text + .data + .bootloader)

Data:         51 bytes (39.8% Full)
(.data + .bss + .noinit)

100.8% ist ja wohl etwas zu viel. Woran kann das liegen?

Hat IRGENDWER die original Sourcen mit oder ohne AVR Studio und WinAVR kompiliert bekommen, so dass das LCD sich dann richtig anmeldet? Vielleicht liegt das irgendwie am WinAVR?
Das ist ja fast verhext...
Gruß
Christian
Gespeichert
Ast
Case-Konstrukteur

*

Karma: +8/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 589


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: USB-LCD Lowcost Edition
« Antwort #414 am: Dezember 15, 2008, 16:26:57 »

Ich weiß nicht genau, wie die Versionen von WinAVR das regeln, aber es geht ja nicht darum welche Version die IDE hat, sondern um die Version des Compilers, also avr-gcc.

Also hast du vielleicht mit anderen Versionen der IDE aber der gleichen Compilerversion kompiliert?
Gespeichert

There are only 10 types of people in the world:
Those who understand binary, and those who don't.
--------
How many people can read hex if only you and dead people can read hex?
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #415 am: Dezember 16, 2008, 12:29:47 »

Hallo Ast,
es ist vollbracht!!! Ich habe eine WinAVR Version 20060125 gefunden. Die habe ich installiert und den Sourcecode per Kommandozeile kompiliert und siehe da - es hat geklappt. Nun hat es mit ein paar kleinen Veränderungen wirklich geklappt, die Hintergrundbeleuchtung dimmbar zu machen. Dazu habe ich die Leitungen zu den Pins PD3 und PD5 getauscht. Im Code habe ich folgende Zeilen geändert (nur in der main.c):

...
case cmdLCD_BG:
         OCR0B = data[2];
         len = 1;
         break;
...

int   main(void){

   static LCD_Options_t LCD_Options;
   static char text[16]={66,66,105,116,116,101,32,119,97,114,116,101,110,46,46,46};
       
   PORTB = 0xFF
   DDRB = 0xFF;
   PORTD = 0x00;
   DDRD = 0b01111000;
   
   TCCR0A = (1<<COM0B1) | (1<<COM0B0) | (1<<WGM00) | (1<<WGM01);
   TCCR0B = (1<<CS01) | (1<<CS00);
   OCR0B = 128;         //Inital value for background LED

   usbInit();

   //my values for init the LCD automatically
   LCD_Options.lines = 1;
   LCD_Init(&LCD_Options, 1);
   LCD_Init(&LCD_Options, 2);

   //Printing a welcome message
   LCD_Command(192+12,1);
   usbFunctionWrite(&text, 16);   

   sei();
   for(;Wink{   /* main event loop */
      usbPoll();
   }
   return 0;
}


Nun kann man mit dem Befehl USB_LCD_BL(value) einen Wert von 0-255 angeben, wobei 0=an , 255=aus ist. Diese Invertierung kommt durch den PWM mode.
In der usbconfig.h musste ich die Zeilen
//#define   USB_CFG_VENDOR_NAME      'w', 'w', 'w', '.', 'm', 'o', 'd', 'd', 'i', 'n', 'g', '-', 'f', 'a', 'q', '.', 'd', 'e'
//#define   USB_CFG_VENDOR_NAME_LEN   18
...
//#define   USB_CFG_DEVICE_NAME      'U', 'S', 'B', '-', 'c', 'L', 'C', 'D'
//#define   USB_CFG_DEVICE_NAME_LEN   7
auskommentieren, um Platz im Tiny zu bekommen.
Vielen Dank für die Hilfen.
Gruß
Christian
Gespeichert
christian
Modding-Noob

*

Karma: +0/-0
Offline Offline
Beiträge: 6


Ich liebe dieses Forum!


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #416 am: Dezember 17, 2008, 10:12:12 »

Hallo zusammen, ich bins nochmal.
Ich habe eine weitere Frage/Problem: Wenn ich meinen Rechner in den Hibernate- oder Standby-Zustand versetze und ihn danach wieder aufwecke, bekomme ich mit der USB-LCD-Dll keine Verbindung mehr. Ich bekomme dann als result immer nur eine 0 zurück... Ich habe mir mal die Sources der DLL und des libusb-Treibers angesehen, muss aber gestehen, das ist mir dann doch etwas zu kompliziert. Hat vielleicht irgendwer ähnliche Probleme? Da sich mein LCD ja jetzt nach einem Powerdown (Hibernate) selber initialisiert, bräuchte ich eigentlich nur wieder eine Verbindung zum libusb-Treiber zu bekommen, damit ich dann wieder Befehle an den Tiny schicken kann. Oder sehe ich das falsch? Kann ich da was debuggen oder "von Hand" testen?
Hat irgendwer eine Idee? Wen könnte ich kontaktieren?
Grüße Christian
Gespeichert
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #417 am: Dezember 17, 2008, 10:27:18 »

Im Hibernate- bzw. Standby-Modus des Rechners wird der USB abgeschaltet (d.h., die Protokollschiene wird stillgelegt). Manche Boards schalten auch die Spannung des USB ab. Stellt nun der Treiber die Kommunikation ein, ist die DLL und somit der die DLL benutzende Prozeß der Ansicht, das das Gerät abgezogen wurde. Es ist keine leichte Aufgabe, so eine abgeschaltete Kommunikation wieder in Gang zu bringen.

So oder so muß die DLL bzw. der die DLL benutzende Prozeß darauf reagieren, das das System schlafen geht (Windows sendet dazu ein spezielle Botschaft an alle Prozesse) und nach dem Aufwachen die ganze Geschichte neu initialisiert. IIRC bietet die DLL in dieser Hinsicht keinerlei Hilfestellungen, das ganze wieder in Gang zu bringen.
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Router
Gast


E-Mail
Re: USB-LCD Lowcost Edition
« Antwort #418 am: März 10, 2009, 20:51:07 »

Hi all!

Ich bin Ungarn. Ich spreche nur ein kleines bisschen auf Deutsch. (Entschuldigung!)  Cry

Ich habe USB-LCD lowcost edition gebaut. Der Apparat ist sehr toll mit 4*20 LCD und LCD Smartie mit HD44780usb.dll+ USB_LCD.dll.

Ich würde es gern verwenden mit 4*40 LCD.

Was ist es notwendig zu modifizieren in USB_LCD.dll? --->  Ich verstehe es nicht.  headshake

Ich hoffe darauf ich war verständlich...  Huh
Gespeichert
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: USB-LCD Lowcost Edition
« Antwort #419 am: März 11, 2009, 07:05:50 »

Dein Deutsch ist ziemlich gut und sehr gut verständlich. Respekt ! You may also ask in English here  bestens
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Seiten: 1 ... 23 24 25 26 27 [28] 29 30 31 32 33 ... 37 nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.042 Sekunden mit 19 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!