Forum: Mikrocontroller und Digitale Elektronik LC7981 C - Code umschreiben?


von Matze G. (maroni666)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich würde gerne wissen, ob es möglich ist den Code so umzuändern das 
dieser auch auf einem Atmega8 laufen würde.

Wenn das möglich ist würde ich mich freuen wenn Ihr mir ein paar Tipps 
geben könntet was ich dann alles zu beachten habe bzw. wo ich überall 
Einstellungen ändern muss.

Habe es schon ein wenig versucht aber ohne Erfolg. Bin angefangen in der 
MFile die MCU einzustellen. Und dann habe ich versucht mittels AVR 
STudio weitere Einstellungen zu ändern.

Bin noch dabei mich in die Materie der Atmega’s und Co. Weiter 
einzuarbeiten.

Gruß Matze und schon mal vorab Danke

von Oliver (Gast)


Lesenswert?

>ich würde gerne wissen, ob es möglich ist den Code so umzuändern das
>dieser auch auf einem Atmega8 laufen würde.
1
AVR Memory Usage
2
----------------
3
Device: atmega16
4
5
Program:   14884 bytes (90.8% Full)
6
(.text + .data + .bootloader)

Kein Problem, du musst den Code nur auf ca. die Hälfte verkleinern. 
Welche Hälfte drin bleiben kann, musst du allerdings selber rausfinden.

Vermutlich sind die Fonts die größten Speicherfresser, die müssen dann 
halt raus. Der Rest ist simpel, Mega8 und Mega32 sind ziemlich verwandt, 
einfach für den Mega8 kompilieren, bei Fehlern beide Datenblätter 
konsultieren, und den Code anpassen.

Oliver

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Der Code in deinem Anhang ist für den Atmega32. Bei meinem älteren 
WinAVR (2007) und -Os Einstellung kommt raus:

AVR Memory Usage
----------------
Device: atmega32

Program:   15052 bytes (45.9% Full)
(.text + .data + .bootloader)

Data:         31 bytes (1.5% Full)
(.data + .bss + .noinit)

EEPROM:       16 bytes (1.6% Full)
(.eeprom)

Der Program Teil passt nicht in das Flash eines Atmega8, Zusätzlich wird 
in den adc-Routinen für den Touchscreen der Compare Match Modus des 
Timer0 benutzt. Den kennt der Atmega6 nicht. Ich würde mir einen 
Atmega32 beschaffen. In 2-3 Tagen kann der doch da sein.

von Matze G. (maroni666)


Lesenswert?

OK danke für die Hilfe. Scheint wirklich einfacher zu sein mit nem 32er.

Der ist ja auch vorhanden ich dachte nur das würde durch abspecken mit 
nem 8er gehen. Ist aber doch zu aufwendig.

Mit dem 32er habe ich im AVR Studio das Problem das ich beim Builden 
immer diese Meldung bekomme:

In file included from ../main.c:12:
../include/lc7981.h:37:24: error: portsmacro.h: No such file or 
directory
make: *** [main.o] Error 1
Build failed with 1 errors and 0 warnings...


vielleicht könnt Ihr mir sagen warum.

Gruß Matze

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hatte ich auch. Gelöst habe ich es, indem ich portsmacro.h in den Ordner 
include verschoben habe.

von Matze G. (maroni666)


Lesenswert?

Das hatte ich auch gedacht aber jetzt bekomme ich 90 errors angefangen 
mit :

C:\Dokumente und 
Einstellungen\Hermann\Desktop\dis2\roboter32\default/../main.c:36: 
undefined reference to `lcd_init'


Fehler 90
C:\Dokumente und 
Einstellungen\Hermann\Desktop\dis2\roboter32\default/../writing_demo.c:1 
26:  undefined reference to `touch_debounce_off'
make: *** [eee.elf] Error 1
Build failed with 90 errors and 2 warnings...


Darum habe ich erstmal gefragt weil ich das mit der Datei verschieben 
auch schon getestet habe.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Wahrscheinlich hast du nicht alle relevanten Dateien im Projekt. Bei mir 
sieht es wie oben aus.

Projektoptionen sind Atmega32, 8000000Hz, -Os
Custom Options ADD: -std=gnu99

AVR Studio hat glcd_matze_gw.c selbst angelegt und ich habe main.c in 
dieses zu Beginn leere glcd_matze_gw.c eingefügt.

von Matze G. (maroni666)


Angehängte Dateien:

Lesenswert?

Danke hatte eine Datei vergessen.

Ich habe meine Schaltung wie in dem Bild aufgebaut nur ohne den Pin 12 
und 13 aber wenn ich mich richtig informiert habe brauche ich die ja 
nicht unbedingt oder. Also ohne Kondensator beschaltet bzw. sind die 
PINs nicht beschaltet bei mir.

Aber leider bleibt mein Display schwarz. Kontrast lässt sich regeln mit 
nem Atmega8 funktioniert das Display.

Waran kann das noch liegen? was kann ich ändern bzw. noch testen.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

AREF an Vcc ist keine gute Idee.

100nF Kondensatoren jeweils zwischen 10-11 und 30-31 wären eine gute 
Idee.

An AVR ISP muss in deiner Schaltung was angeschlossen sein:
* die Stromversorgung
* etwas, das RESET uf HIGH zieht, da sonst der Atmega8 nicht läuft

Gemäß touch.h ist dein Touchscreen falsch angeschlossen.

Wie sieht es mit der JTAG Fuse bei deinem Atmega32 aus? Die muss 
disabled sein, weil du Pins des JTAG-Ports für dein Display benutzen 
willst.

Wenn du mit Pin 12-13 den Quarz meinst: Denke daran den Atmega32 von den 
Default 1 MHz auf 8 MHz zu fusen (Bedeutung der CKDIV8 Fuse ansehen).

von Matze G. (maroni666)


Lesenswert?

Danke, warte auf meine Bestellung dann werde ich mich wieder melden.

Kannst Du oder jemand anders mir noch einen Tipp oder Forenbeitrag 
geben/zeigen wie ich die Eingabe auf dem Touch auswerten kann, damit ich 
damit dann einen Port bzw. eine Led ein/aus schalten kann.

Gruß Matze

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sorry, da bin ich wirklich überfragt. Eine Abfrage eines Touchscreens 
habe ich noch nicht programmiert. Insgesamt habe ich noch nix praktisch 
mit ADC gemacht. Mein derzeitiges Opfer ist ein Attiny2313 (hält sich 
tapfer!) und der hat kein ADC. Ich sollte mal wechseln, denn das Ding 
mit dem ADC will ich selbst auch mal lernen und verstehen.

von Matze G. (maroni666)


Lesenswert?

Hallo,

jetzt habe ich es hinbekommen, das ich zumindest schonmal etwas auf dem 
Display sehen kann, aber das was angezeigt wird ist sehr verschwommen. 
Man kann ein Hello World erahnen und unten die Buchstaben von A-Z.

Foto folgt noch.

Vielleicht hatte jemand das gleiche Problem und kann mir weiter helfen.

Gruß

Matze

von Matze G. (maroni666)


Angehängte Dateien:

Lesenswert?

Anbei mein Bild,

und meine Fuse Einstellungen.

Ich hoffe jemand kann mir weiterhelfen.

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.