Hallo AVR Freunde!
Ich habe ein großes Problem, leider habe ich nur auf der Arbeit einen
Internetzugang so dass ich dass Forum nur auf der Arbeit nutzen kann,
dass heißt auch das ich dort nicht programmieren kann.Des halb meine
Frage ob jemand von euch hier in Berlin wohnt der mich vielleicht beim
programmieren unterstützen kann. Unter der Woche habe ich frei, leider
aber nicht am Wochenende.
Zum programmieren nutze ich das Funkboard von Pollin und das WinAVR
Studio 4.0 über eine serielle Schnittstelle (win98).
Ich weiß auch das es hier die Grundlagen der Programmierung git aber
leider komme ich nicht ganz klar damit.
Vielen Dank für Eure Hilfe und Unterstützung!
Constantin
Hallo Daniel!
Danke für den Tip! Wie sieht es aus, vielleicht kannst Du mir ja auch
helfen beim Programmieren. Oder mir vielleicht auch ein tolles Skript
von irgendeigen Prof. empfehlen.
Vielen Dank!
Constantin
Hallo Constantin,
ich bin viel südlicher zu Hause^^
und im Moment am Theoriepaucken.
Mit AVR(vor allem der Peripherie) habe ich wenig Erfahrung
mit reinem C dagegen schon einige.
Dass es Uni-Skripte zu AVR gibt bezweifele ich, Bücher dazu an
der Unibib habe ich allerdings schon einige gesehen.
Als ich mich in AVR einlesen wollte, habe ich einfach die
umfangreichen Datenblätter gedruckt und nach und nach
gelesen.
Möchtest du einfach in AVR uC einsteigen (und lernen) oder hast
du schon ein bestimmtes Projekt im Auge?
Wünsche Dir viel Erfolg!
Hallo daniel, Stefan ....
Vielen Dank für die Hilfe. Da ich ja zuhause keinen Netzzugang habe
melde ich mich jetzt erst wieder von der Arbeit.
Ich habe mit der LCD-ansteuerung folgendes Problem für die Datenbits
benutze ich den PORTA und für RS und E die PORTadressen PD4 und PD5.
Kann ich das so schreiben als #define in die lcd.h Datei?
Zum Programmieren benutze ich das AVR-Studio 4.0 ein Notebook mit win98,
so wie das Pollin Board mit einem Mega16 Taktung 16MHz.
Mit Basecom bekomme ich etwas aufs Display leider aber nicht in C.
Ich muß in C Programmieren, leider sonst wär einiges einfacher.
Vielen Dank
Constantin
Danke Hubert!
Für mich stellt sich die Frage ob ich PORTA als Datenport verwenden kann
und Enable und RS an einen anderen PORT anschließen kann.
Wie würde die lib dann aus sehen?
void lcd_data(unsigned char temp1);
void lcd_string(char *data);
void lcd_command(unsigned char temp1);
void lcd_enable(void);
void lcd_init(void);
void lcd_home(void);
void lcd_clear(void);
void set_cursor(uint8_t x, uint8_t y);
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
#define F_CPU 16000000// Angepasst 16MHZ
// LCD Befehle
#define CLEAR_DISPLAY 0x01
#define CURSOR_HOME 0x02
// Pinbelegung für das LCD, an verwendete Pins anpassen
#define LCD_PORT PORTA//an meine Werte angepasst
#define LCD_DDR DDRA
#define LCD_RS PD4
#define LCD_EN PD5
// DB4 bis DB7 des LCD sind mit PD0 bis PD3 des AVR verbunden
Leider funtioniert die Anzeige bei mir so nicht? Wenn ich in Main siehe
Tutorial eine Wartefunktion verwende Blinken nur die schwarzen Balken
auf also kein Test und auch kein Hello world sind zu sehen. Wie schon
geschrieben funktionier die Anzeige mit Basecom tadellos nur in C
bekomme ich das irgendwie nicht hin.
Es kann auch an den Zeiten liegen die ich in der Routine anpssen muß an
meine 16MHz.
Vielen Dank!
Constantin
Hallo,
>es muss immer alles an einen Port bei den libs die so rumfliegen...
Zitat aus der "lcd.h" von P. Fleury:
* The four LCD data lines and the three control lines RS, RW, E can be
* on the same port or on different ports.
* Change LCD_RS_PORT, LCD_RW_PORT, LCD_E_PORT if you want the control
* lines on different ports.
* Normally the four data lines should be mapped to bit 0..3 on one
port,
* but it is possible to connect these data lines in different order or
* even on different ports by adapting the LCD_DATAx_PORT and
* LCD_DATAx_PIN definitions.
Gruß
risu
Danke erstmal!
kann ich dann das so programmieren?
#define LCD_PORT PORTA//an meine Werte angepasst
#define LCD_DDR DDRA
#define LCD_RS PD4
#define LCD_EN PD5
danke!
Ja besser wäre es wenn alles einem PORT liegt!
Ich habe es aber beim Aufbau für besser gefunden auf ein anderes PORT
auszuweichen.
Constantin
Hallo,
> kann ich dann das so programmieren?> #define LCD_PORT PORTA//an meine Werte angepasst> #define LCD_DDR DDRA> #define LCD_RS PD4> #define LCD_EN PD5
"PORTD" musst Du dann schon noch angeben, z.B. so:
Dank nochmals!
Werde ich wenn, ich zu Hause bin gleich ausprobieren.
Ich hoffe das die Anzeige dann endlich läuft.
Bis dann und ein schönes Wochenende
Constantin
Constantin wrote:
> Danke erstmal!>> kann ich dann das so programmieren?> #define LCD_PORT PORTA//an meine Werte angepasst> #define LCD_DDR DDRA> #define LCD_RS PD4> #define LCD_EN PD5> danke!>> Ja besser wäre es wenn alles einem PORT liegt!
Nö, das ist unerheblich.
Hier mal ein Beispiel, wie man beim AVR-GCC ganz elegant einzelne Bits
definiert und verwendet (siehe Anhang):
Beitrag "Re: LCD nicht nur für einen Port in C"
Man muß nicht immmer mit großen Geschützen auf kleine Aufgaben schießen.
Peter
Hallo Robert/ Falk!
Danke erstmal für eure Beiträge zu meiner Mail!
Das Display funktioniert jetzt! Ich hatte nur einen Hardware Fehler
gehabt.
Der Quelltext war sonst soweit ok.
Tut mir leid das ich mich jetzt erst melde aber ich habe jetzt erst
wieder die Möglichkeit mich zu melden.
Dank!
Bis dann
Constantin
Zusammenfassung LCD-Display 202A
1. wenn im 4Bit Modus dann die Anschlüsse D7 bis D4 vom LCD Display
nehmen!
2. Erst den 8 Bit-Modus initialisieren dann meistens den 4-Bitmodus
2x bis 3x aufrufen
3. Hardware überprüfen!!
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.