Forum: Mikrocontroller und Digitale Elektronik HD44780, Mega88@8MHz - komische Zeichen


von Bastian F. (bastian_f)


Lesenswert?

In der lcd-routines.h und in den Projektoptionen (Eclipse) habe ich 
jeweils 8MHz eingetragen, aber ich bekomme nur kryptische Zeichen auf 
das LCD. Das Ganze steckt auf/in einem STK500.
Mit einem Mega8@4MHz hatte ich diese Probleme nicht.
Fuses:
High 0xDC
Low 0xE2
Extendend 0xF9

Code:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include "lcd-routines.h"
4
#include "includes.h"
5
6
int main () {
7
  DDRD  &= ~(1<<PD3) | (1<<PD2);
8
  PORTD &= ~(1<<PD3) | (1<<PD2);
9
  lcd_init();
10
  while (1) {
11
    if (debounce( PIND, PD3 )) { //Taster 7
12
      lcd_clear();
13
      lcd_string("test");
14
      DDRD ^= (1<<PD6);
15
    }
16
  }
17
}

Jemand eine Idee?

von Floh (Gast)


Lesenswert?

Bastian F. schrieb:
> DDRD  &= ~(1<<PD3) | (1<<PD2);
>   PORTD &= ~(1<<PD3) | (1<<PD2);

fehlende Klammern? Weis die Operatorenrankings nicht auswendig.

von Bastian F. (bastian_f)


Lesenswert?

Floh schrieb:
> Bastian F. schrieb:
>> DDRD  &= ~(1<<PD3) | (1<<PD2);
>>   PORTD &= ~(1<<PD3) | (1<<PD2);
>
> fehlende Klammern? Weis die Operatorenrankings nicht auswendig.

Stimmt aber hat nichts mit dem LCD zu tun.
Komisch, dass der Compiler sich nciht beschwert. Tasten funktionieren 
trotzdem.

von Floh (Gast)


Lesenswert?

Bastian F. schrieb:
> Und wenn nicht, würde sich der Compiler beschweren

Es geht mir mehr um die Logik. Syntaktisch passt es ja.

Mach die LCD-Ausgabe mal ohne auf den Taster zu warten, damit man den 
als Fehlerquelle ausschließen kann. :-)

von Bastian F. (bastian_f)


Angehängte Dateien:

Lesenswert?

Ok, es lag anscheinend an oben angehängten Bibliotheken.
Nehme ich die komplett raus, funktioniert alles normal.
Warum auch immer...
Ich hatte die oben nicht drin, da ich den hier geposteten Code so klein 
wie möglich halten wollte und nicht davon ausgegangen bin, dass die auf 
sowas Einfluss haben könnten.
Es war auch so, dass mit diesen das Display teilweise gar nicht 
funktioniert hat, aber da bin ich von einem Wackler oä ausgegangen.
Jetzt, ohne die, geht alles wieder normal.
teufelswerk ;)

von g457 (Gast)


Lesenswert?

> Ok,  es lag anscheinend an oben angehängten Bibliotheken.
> Nehme ich die komplett raus, funktioniert alles normal.
> Warum auch immer...

..die verschwendet riesige Mengen Speicher, schau mal nach ob Du den 
tatsächlich über hast.. wenn nicht dann pack die Daten doch mal in den 
Flash. Wenn doch dann machs trotzdem ;-)

HTH

von Bastian F. (bastian_f)


Lesenswert?

Device: atmega88

Program:    4288 bytes (52.3% Full)
(.text + .data + .bootloader)

Data:       1019 bytes (99.5% Full)
(.data + .bss + .noinit)

Scheint knapp zu sein, aber "sollte" doch noch gehen, oder?

von g457 (Gast)


Lesenswert?

> Data:       1019 bytes (99.5% Full)
> (.data + .bss + .noinit)
>
> Scheint knapp zu sein, aber "sollte" doch noch gehen, oder?

..vergiss es, das ist hoffnungslos. Oder positiv betrachtet: (Einen) 
Fehler gefunden :-) Jetzt musst den nur noch beheben, sollte mit [1] 
aber kein großes Problem sein, denn alleine die beiden Arrays in obiger 
Lib belegen grob 768 Bytes (von 1k verfügbarem SRAM).

HTH und HF

[1] http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

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.