AVR-Handheld mit Mega644

OP #1065437
Lesenswert?

Hallo,

Auch wenn noch nicht alles komplett ist und die Dokumentation noch 
weitestgehend fehlt ist das Projekt "AVR-Handheld" an einem Punkt 
angelangt, an dem ich eine Veröffentlichung für sinnvoll halte. 
Hauptbestandteile sind ein ATMega644 und ein "Standard" GLCD mit 128x64 
Pixeln. Optinal kann eine DS3232 RTC an den I2C Bus angeschlossen 
werden.
Die Schaltung enthält erstmal nur den Kern, Systemverbinder (9-polig 
D-Sub)
und die Beschreibung der möglichen Adapter erfolgt in den nächsten 
Tagen.

Einen eigenen Weg bin ich bei der Display-Ansteuerung gegangen. Wie man 
sieht, ist der Screib/Lese-Pin fest auf Masse gelegt. Im Controller 
selbst befindet sich der eigentliche Bildspeicher mit gewohnt 64 Zeilen 
a 16 Bytes, die Daten werden zyklisch im Interrupt umgerechnet und zum 
LCD geschickt. Um ein Pixel zu setzen braucht man also nur das 
entsprechende Bit im Bildwiederholspeicher zu setzen, nach ca. 1/30s ist 
dann auch die
Anzeige aktualisiert. "Nebenprodukt" ist ein Videoausgang, der sich 
zwischen PAL und NTSC Timing umschalten lässt (Anschluß im zweiten Teil 
der Schaltung).

Folgende Funktionen sind derzeit realisiert:

- Einfache Bedienung über (meist) grafische Menüs und Tasten-Symbolen
- Dataflash-Dateisystem kompatibel zum BASIC-Computer
- Runtime-Engine weitestgehend kompatibel zum ChipBasic2  (nur VM5)
- Platz für 4 Programme
- Stopp-Uhr, 4 Zeitspeicher
- Wecker (braucht RTC)
- 2 Kanal Logikanalysator mit max 4 MHz Abtastfrequenz und 2000 Samples
- Mini-Oszilloskop mit max. 20KHz Abtastfrequenz und 2000 Samples
- Voltmeter +-6,4V oder +-64V (mit Vorteiler)
- 2 Kanal Zähler bis 65535
- Zeitmessung (Pulsdauer, Verzögerung) mit 1/1000s Auflösung
- Temperaturmessung mit LM75
- Seriell-Monitor mit Text- und Hex-Darstellung
- Breakout-Spiel
- Puzzel-Spiel
- GPS-Anzeige mit Koordinaten, Geschwindigkeit und Richtung
- GPS-Koordinatenspeicher mit 105 Datensätzen
- GPS Richtungs- und Entfernungsanzeige zu 4 wählbaren Zielen
- Dateimenü zum Modul formatieren, Dateien löschen...
- Konfigurationsseite

Geplant ist noch eine Programmieroberfläche ähnlich wie Siemens Logo mit 
einem Mega8/88 als Target (über I2C oder SPI), das wird aber wohl erst 
Anfang nächsten Jahres eingebaut.

Ansonsten wünsche ich vie Spaß beim Basteln (und Bugs melden ;-)

Gruß Jörg
Angehängte Dateien:
Gast #1066017
Lesenswert?

Hallo Jörg,

auch ich freue mich sehr, dass Dein neues Projekt fertig ist und kann es 
kaum erwarten, es nachzubauen.

Wohl wissend das GLCD "grafisches LCD" bedeutet, frage ich mich doch, 
welchen Standards es genügen muß.

Viele Grüße

Otto
Persönliche Seite #1066251
Lesenswert?

Wofür soll denn ein AVR Handheld gut sein? Und so kompakt kann ich mir 
das gar nicht vorstellen.

Übrigens sind Pullups im AVR integriert, die Widerstände an den Tastern 
kann man sich sparen.

Und warum zur Hölle sind die Datenbits des Displays da so aufgeteilt auf 
PORTA und PORTD?

Und ob das mit der Prozessorleistung hinhaut den Screen mit 30Hz 
komplett zu refreshen weiß ich ja auch nicht... ;)
Vielleicht wäre ein SPI Display und ein XMega AVR eher was dafür :D
Gast #1066353
Lesenswert?

>Und warum zur Hölle sind die Datenbits des Displays da so aufgeteilt auf
>PORTA und PORTD

Auf Port A, C und D. Das verstehe ich auch nicht, wird aber wohl seinen 
Grund haben

Aber ein interessantes Projekt, welches ich auf jeden Fall nachbauen 
werde !

Welchen Controller man für das GLCD braucht, müsste ich dann auch noch 
wissen.
#1066529
Lesenswert?

Jens B. wrote:
> Hmm, kann der AVR nicht eigentlich nur 21mA am ausgang?

Er kann 40mA.

> Vee und Contrast? ist Vee nicht eigentlich der Kontrast, und sollte
> der nicht regelbar sein?

Vee= Ausgangsspannung von -5V (wird auf dem Display erzeugt), Contrast = 
Eingangsspannung für den Kontrast.
Bei dem Display handelt es sich vermutlich um ein 128x64 mit 2x KS0108
Gast #1066533
Lesenswert?

Hallo bin gerade an etwas ähnlichem.
Ich plane noch ein paar Schieberegister für Ein-/Ausgaben ein.

Kleines kultiges Extra: Programme können (bzw. sollen) über eine 
Chipkarte ausgetauscht werden.
Ich hab eine Kiste mit Kartenslots rumstehen, deshalb die Idee.
OP #1066535
Lesenswert?

Hallo,

also, die "Komische" Belegung der Datenbits rührt daher, dass ich PORTA 
0/1 als Analog/Digitaleingänge brauche. Hier gleich noch die Belegung 
des 9-poligen "Systemsteckverbinders", bis ich dazukomme den Schaltplan 
zu zeichnen:

(1) - 1KOhm - Zwei Schottky-Dioden zur Spannungsbegrenzung - PTA0
(2) - TX (PTD1)
(3) - RX (PTD0)
(4) - SDA (PTD1)
(5) - GND
(6) - Video (330Ohm von PTD4, 1KOhm von PTD5)
(7) - 1KOhm - Zwei Schottky-Dioden zur Spannungsbegrenzung - PTA1
(8) - SCL (PTD0)
(9) - VCC

Den Schaltplan habe ich übrigens mit XFIG gezeichnet, das Display hat 
lt. Datenblatt einen KS0107 + 2x KS0108 Controller.

Da es bei mir im Gehäuse sehr eng zugeht und alles auf Lochrasterplatte 
ist, hatte ich nach Einbau eines Step-Up Schaltreglers (Schaltungsteil 
kommt noch) Probleme mit den Eingängen, die genau daneben lagen. 
Deswegen habe ich neben die Eingänge einfach SIL-Widerstandsnetzwerke 
eingebaut und seitdem Ruhe. Die an Reset und SPI sollte ich wohl noch 
einzeichnen...

Die ca. 30Hz kommen daher, dass der Horizontalinterrupt mit 15,625 KHz 
läuft und ich etwa 528 Interrupts brauche, um den Bildspeicher komplett 
zu übertragen. Da nach Datenblatt des KS0108 ein Schreibvorgang nach 
64µs sicher abgeschlossen ist, brauche ich auch nicht ready/busy 
abzufragen. Dass die 528 Interrupts ausreichen und nicht 1056 liegt 
einfach daran, dass ich jeweils ein Byte an die beiden auf dem Display 
verbauten KS0108 schicke. VEE sind bei mir die -5V, die  aus dem Display 
rauskommen.

Gruß Jörg
#1066732
Lesenswert?

Hallo Jörg,
bei deiner Liste bezüglich des Systemsteckers bist Du Dir sicher das es 
so sein soll/ist?

(1) - 1KOhm - Zwei Schottky-Dioden zur Spannungsbegrenzung - PTA0
(2) - TX (PTD1)
(3) - RX (PTD0)
(4) - SDA (PTD1)
(5) - GND
(6) - Video (330Ohm von PTD4, 1KOhm von PTD5)
(7) - 1KOhm - Zwei Schottky-Dioden zur Spannungsbegrenzung - PTA1
(8) - SCL (PTD0)
(9) - VCC


2+4 und 3+8 sind demnach verbunden^^
Da ich auf der Arbeit momentan bin und kein Datenblatt des M644 zu Hand 
habe denke ich 2+3 sind klar TX/RX der Serial aber 4+8 müßten wohl an 
die I2C des M644 oder?

Grüße
Harry
Gast #1066778
Lesenswert?

müssen die leute immer und alles kritisieren, sicher hätte man das auch 
anders und besser lösen können, aber jeder tut das was in seinen 
mgölichkeiten liegt.

ich finde es toll das es immer wieder leute gibt die kreativ sind ud 
projekt machen und die dann auch mit andern sharen!

feedback kann man acuh anders geben, und hilfreicher.

"warum hast du das display so angeschlosen, wäre es nicht sinnvoller 
wenn d0-d7 auf einem port liegen? kannst du mir deine ideen die dahinter 
stekcen näher erörtern, so ein geiles projekt!" oder so ähnlich?

wenn die leute immer nur kritisiert werden und niedergemacht werden dann 
wird es bald keine mehr geben die was machen geschweigeden ins netz 
stellen!
OP #1069820
Lesenswert?

Kleiner Hinweis zur Tastenanordnung (Dokumentation versuche ich dieses 
WE weiterzumachen...):
1
       +----------------------------+
2
 ESC   |                            |  UP
3
       |                            | 
4
       |      Display-Fläche        | LE RI
5
       |                            |
6
 ENT   |                            |  DO
7
       +----------------------------+
8
       +----------#################-+
9
                   Anschlussleiste
In den meisten Programmen sind den Tasten Symbole am Displayrand 
zugeordnet.

Zum Thema Geschwindigkeit: Was wirklich limitiert, ist die Trägheit des 
Displays. Rein rechnerisch könnte man unkomprimiertes Video aus dem 
Dataflash mit bis zu 25FPS abspielen.

Gruß Jörg
Angehängte Dateien:
Gast #1070055
Lesenswert?

Hallo Jörg,

ich habe mal Display und Tasten an einen Mega644 angeschlossen und uC 
geflasht.
Bekomme allerdings lediglich ein Rechteck (0,0,128,64) angezeigt.
Benutzt habe ich das HEX aus dem Archiv.

Gerhard
Gast #1070236
Lesenswert?

Hallo Gerhard,

ohne es genau zu wissen, würde ich mal auf die Fuses tippen.....

Eigentlich wollte ich heute auch einen Lochrasteraufbau wagen, warte 
jetzt besser mal ab.

Hallo Jörg,

besteht auch die Chance, dass es mit einem 128x64 OLED-Display mit 
SED1303-Controller funktioniert?

Viele Grüsse

Otto
Gast #1070287
Lesenswert?

Hallo Gerhard,

ich hatte ein ähnliches Problem bei einem der anderen 
"Chipbasic-Computer" von Jörg, als ich einen neuen Controller geflasht 
hatte:

Das Monitorbild erschien zwar aber dann war "tote Hose" - Ursache waren 
die Fuses, die ich falsch gesetzt hatte.

Gruss Otto
OP #1070741
Lesenswert?

@Günti
Ich habe mir mal das Datenblatt von dem Display angesehen, theoretisch 
wäre eine Unterstützung möglich, dazu müssten aber (auf den ersten 
Blick) "bimode1.asm" und "bimode2.asm" dahingehend umgeschrieben werden, 
die Daten anstelle paralell seriell auszugeben.
Da ich selbst aber derzeit keinen Bedarf dafür habe, wird eine Anpassung 
von meiner Seite her eher unwahrscheinlich sein, aber schliesslich ist 
es ja ein Opensource-Projekt...

Gruß Jörg
#1093703
Lesenswert?

Hallo Jörg,
leider bin ich noch nicht dazu gekommen deinen kleinen Compi zu bauen. 
Aber eine Frage wäre noch interessant: Die RTC DS3232 ist wirklich blöd 
zu bekommen, wäre eine Alternative der DS3231 also ohne Ram? Nutzt Du 
denn das RAM in dem Baustein?

Den DS3231 würde man wenigstens bei Segor für sagenhafte 9,80 bekommen 
:-/

Wünsche aber in jedem Fall einen guten Rutsch ins Jahr 2009!

Grüße
Harry
OP #1206833
Lesenswert?

Sorry, dass es hier nur sehr langsam weitergeht, anbei mal ein Bild von 
meinem Teil. Um abzuschätzen ob eine Weiterführung des Projektes 
überhaupt sinnvoll ist, würde mich interessieren, wieviele leute das 
Teil aufgebaut haben/aufbauen wollen und wie interessant bzw. wichtig 
eine Kompatibilität zum BASIC-Computer ist.

Gruß Jörg
Angehängte Dateien:
Gast #1207086
Lesenswert?

Als kleines Zusatzteil baue ich es mir bestimmt auf. Mir fehlt etwas die 
Anbindung an andere Geräte, z.B. PC über Serial oder ähnliches. Damit 
kann man die Meßwerte/Ergebnisse auch mal festhalten.
Oder habe ich das jetzt irgenswo übersehen?

Respekt vor Deiner Leistung - das ist toll, was Du da aus dem AVR 
gemacht hast.


Blackbird
OP #1207380
Lesenswert?

Layout wollte ich eigentlich nicht mehr machen, da ich bei mir alle auf 
Lochraster aufgebaut habe (und bei jedem zweiten Aufmachen einer der 
Drähte von der Platine zum Display abbricht ;-)
Wenn größeres Interesse dran besteht, lässt sich aber bestimmt was 
machen (mit Mega644 als TQFP) oder jemand anderes macht sich die Mühe...

Gruß Jörg
#1208799
Lesenswert?

Hallo Jörg,
schön mal wieder von Dir zu lesen.
Also ich baue das Ding auch nach sobald klar ist das die Hardware nicht 
mehr geändert wird. Also meinetwegen muß es überhaupt keine 
Kompatibilität zum Basic-Computer haben. Sind ja an sich 2 
unterschiedliche Geräte mit anderen Anwendungen. Teile hätte ich bis auf 
den DS32** zusammen, also an sich könnte es losgehen^^

Gruß Harry


ps:Hoffe in der Jobsuche erfolgreich gewesen?!
OP #1223222
Lesenswert?

Ich denke, dazu gibt es noch ein paar Dinge zu beachten:

1. Spannungvversorgung, ich benutze eine Li-Ion Zelle und einen MC34063. 
Das ist allerdings keine saubere Lösung, da eine 
Unterspannungsabschaltung fehlt.

2. Der Alarmausgang der RTC steuert einen P-Kanal MOSFET an, der zum 
Wecken den Einschalter überbrückt

3. Alles auf einen Steckverbinder zu führen, hat sich leider als recht 
ungünstig herausgestellt. So habe ich mir mittlerweise schon ein 
9-poliges Y-Kabel gebaut, da sonst z.B. der Videoausgang alle anderen 
Anschlüsse blockiert.

4. Das Display. Ich habe z.B. noch ein relativ Flaches rumliegen, an dem 
nur ein relativ schmaler Folienleiter dran ist.

Auf jeden Fall sollte man es vorher mal z.B. auf Lochraster aufgebaut 
haben um zu sehen ob alles funktioniert. An der Belegung selbst werde 
ich nichts mehr ändern, da das schon mehr oder weniger das Optimum bei 
der vorhandenen Hardware zu sein scheint.

Gruß Jörg
Gast #1241269
Lesenswert?

Hallo Jörg,

leider Doppelpost (Siehe Fuses Atmega 644P) Ich schreibe es nochmal hier 
rein.

Du gibst in deinem Zip-File die Fuses an. Aber mit dem Low-Fuses komm
ich nicht klar.

Du schreibst für Low-Fuses E6! Stimmt das?
Wenn ich die Fuses so setzen wil, schlägt mein Progtool mir einen
Ceramic-Resonator vor!

Ich habe mal EE gesetzt. Ich hoffe das ist so richtig?

Gruß

Jürgen
Gast #1245873
Lesenswert?

Hallo Joerg

habe das Gerät nach deinem Schaltplan aufgebaut und nach deinen Angaben 
die Fuses gesetzt: Low: Oxe6; High: Oxd1; Ext: Oxfc

Bekomme aber nur ein Rechteck im Display angezeigt, sonst keine Reaktion 
des Gerätes. Die Schaltung habe ich geprüft, Pullups wie vorgegeben 
eingebaut!

Mein Display ist ein Powertip PG 12864 mit KS 108 Controler

Nochmals meine Frage: sind die Fuses richtig?

Bitte um Antwort.

Gruß

Jürgen
Gast #1247637
Lesenswert?

Hallo Joerg,

habe das Gerät neu geflasht (AVRHH_0.370_noRTC.hex) aber keine Änderung!
Quarz schwingt mit 20 MHZ! (mit Oszi kontrolliert)

Fuses nach deinen Angaben gesetzt und trotzdem nur Rechteck im Display.

Zeige mal ein Bild vom meinem Gerät.

Gruß

Jürgen
Angehängte Dateien:
Gast #1248309
Lesenswert?

Hallo Joerg,

Gerät funktioniert, alles OK!

Ich hatte den Reset-Pin des Display auf Masse gelegt!!
Habe noch eine Frage: Funktioniert der Sound?
Ist der Lautsprecher ein Piezo oder Normal? Bei meinem LS kommt kein 
Ton. Schon im Menue ein und wieder ausgeschaltet.

Schon genial was du aus dem Atmega rausgeholt hast. Mein Respekt!

So jetzt wird noch die RTC eingebaut, Samples von Maxim sind die Woche 
gekommen.

Nochmals Danke

Gruß

Jürgen
Gast #1249513
Lesenswert?

Hallo Joerg,

habe zu deinem Schaltplan zwei Änderungen vorgenommen!

Den 220 Ohm Widerstand in Reihe zum Lautsprecher habe ich entfernt und 
durch ein 100 Ohm Poti ersetzt! Habe einen wert von 30 Ohm eingestellt
und jetzt ist der Sound auch zu hören. Ich habe einen 8 Ohm Mini-LS 
benutzt.

Der 100 Ohm Widerstand zu LED+ ist zu groß, meine Displaybeleuchtung war 
zu dunkel, 26 Ohm haben das geändert.

Gruß

Jürgen
Gast #1259147
Lesenswert?

Hallo Jörg,

habe die RTC DS3231 eingebaut, läuft super genau! Bis jetzt nach 2 Tagen 
keine Abweichung festgestellt!.

Nur der Wecker funktioniert nicht!
Weckzeit eingstellt und eingeschaltet, Glocke-Symbol erscheint. Aber 
nach erreichen der Weckzeit passiert nichts! Erst wenn ich das Gerät vom 
Netzteil trenne und wieder verbinde, erscheint der Alarm! Dann hängt 
sich das Gerät auf!


Gruß

Jürgen
OP #1259799
Lesenswert?

Das ist halt das Problem, wenn die Doku fehlt. Aber ich habe im Moment 
einfach einfach nicht die nötige Zeit dazu und werde aus diesem Grund 
das Projekt auch wohl nicht weiter publizieren.

Das Verhalten ist richtig, bei mir überbrückt der INT-Ausgang der RTC 
(liegt direkt am Akku) über einen P-Kanal Mosfet den Einschalter. Beim 
Einschalten wird das INT-Bit überprüft und wenn gesetzt zur Weckroutine 
gesprungen. Mit einem Tastendruck lässt sich der Spuk wieder ausschalten 
und beim nächsten Einschalten (von Hand) ist alles wieder beim alten.

Gruß Jörg
Persönliche Seite #1281344
Lesenswert?

Hallo,

nachdem ich mir den Handheld nun auch endlich nachgebaut habe und auch 
alles soweit funktioniert habe ich 2 Fragen:

- Wie funktioniert dieses GPS programm? EInfach nur nen Empfänger an die 
serielle Schnittstelle anschließen und der Handheld dekodiert dann oder 
wie funktioniert das?

- Die serielle übetragung von Programm vom Handeld zum PC geht irgendwie 
nicht. Wollte mir das "Hallo Welt" Programm mal angucken um zu sehen wie 
das Format ist welches ich an den Handheld übetragen muss.


Gruß
Robin T.
OP #1281648
Lesenswert?

1. Man braucht einen GPS-Empfänger, der zyklisch den NMEA RMC-Datensatz 
mit maximal 9600 Bps ausgibt. Andere Datensätze werden ignoriert, die 
langsame maximale Geschwindigkeit kommt daher, dass die 
Winkelumrechnungen von DDDMM.mmmmm in Grad schon erfolgt, während die 
Zeichen ankommen. Bsudrate kann man im Konfigurations-Menü umstellen.

2. Man kann nur den Bytecode übertragen, nicht den Quellcode. Die 
Übersetzung muß (zwangsläufig) mit einem Chipbasic2 Computer erfolgen. 
Dort kann man dann aus dem Hauptmenü heraus die Programme per X-Modem 
senden und braucht normalerweise gar keinen PC dazu.

Wenn ich meine anderen beiden Projekte (ChipBasic2 und ChipBasic8) 
einigermaßen abgeschlossen habe, werde ich mich auch nochmal diesem 
Projekt widmen, kann aber noch etwas dauern.

Gruß Jörg
OP #3751143
Lesenswert?

Da der alte Handheld ziemlich klobig und auch vom Softwaredesign her 
nich gerade optimal war, habe ich mich vor einiger Zeit zu einer 
Weiterentwicklung entschlossen. Die "neue Generation" setzt das 
Oberfächenkonzept praktisch 1:1 fort, der Unterbau hat sich
jedoch größtenteils geändert. Als Controller verwende ich jetzt einen 
MC9S12XD256 von Freescale. Die Tasten sind durch kapazitive 
Berührungsflächen ersetzt worden, schon allein wegen der 
Geräuschentwickung und Haltbarkeit. Die Ansteuerung von Display und 
Touchfeldern übernimmt der XGATE-Coprozessor, Der Hauptprozessor "sieht" 
nur einen linear adressierten Bildspeicher und ein Speicherbyte mit dem 
aktuellen Tastaturstatus. "Apps" können in C oder ASM geschrieben werden 
und sind auf einem 1 MB Dataflash gespeichert. Der S12 kann Programme im 
RAM ausführen und es stehen für die Apps 8K Programm- und 1,25K 
Datenspeicher zur Verfügung. 8K scheint zwar nicht gerade viel, aber es 
gibt ja eine zur Zeit noch ständig wachsende Bibliothek im Flash, die 
auch ein (rudimentäres) printf, Grafikfunktionen, Sprites etc. enthält. 
Für den GCC gibt es auch schon ein Compilier-Script (evtl. später auch 
ein angepasstes Makefile), ein Linkerscript und Includes um die 
Bibliotheksfunktionen im Flash anzusprechen.

Meine Frage ist, inwieweit Interesse an dem Projekt besteht, denn es 
fällt ja doch jede Menge Dokumentationsaufwand an, den ich für mich 
selbst nicht unbedingt treiben möchte.

Jörg
Angehängte Dateien:
#3752125
Lesenswert?

Ich finde das Teil unglaublich gut, was da alles rauszuholen ist :O
Respekt vor deiner Arbeit!!
Ich hab leider diverse andere Projekte am laufen, aber wenn mal Leerlauf 
ist und du dich dazu entscheidest deine Doku zu veröffentlichen werde 
ich mich wahrscheinlich mal ransetzen und versuchen das nachzubauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren