Willkommen Gast. Bitte einloggen oder registrieren.
April 25, 2024, 15:07:13
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Alles rund ums Modden
| |-+  User-Mods (Moderator: Saint)
| | |-+  Projekt M8
  « vorheriges nächstes »
0 Mitglieder und 1 Gast betrachten dieses Thema.
Seiten: 1 [2] 3 nach unten Drucken
Autor Thema: Projekt M8  (Gelesen 23526 mal)
TzA
Modder der Apokalypse

*

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



Profil anzeigen
Re: Projekt M8
« Antwort #15 am: Mai 1, 2005, 20:31:45 »

Also ich hatte mal das Problem, dass ich am UART nur zufällige Zeichen empfangen habe, das hat sich dann als ein Baudratenproblem herausgestellt. Wenn die eingestellte Baudrate am PC und die vom µC nicht recht genau (so zwischen 1-2%) übereinstimmen, kann man also so nette Effekte bekommen.
Zu deinem Code selbst kann ich leider nix sagen, da ich von Assembler keinerlei Ahnung habe (was die Leute bloß immer gegen C haben).
Für die Bits im UBBRL/H gibts auch im Datenblatt am Ende des USART-Kapitels eine Tabelle, du solltest auch drauf achten dass du nicht versehentlich das U2X-Bit setzt (da bin ich mal reingefallen).
Gespeichert

You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape
OlafSt
Global Moderator

*

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


Master of STLCD and LISA III


Profil anzeigen
Re: Projekt M8
« Antwort #16 am: Mai 1, 2005, 22:50:03 »

@TzA: Niemand hat was gegen C-Code. Aber
- das Kompilat, das (zumindes WinAVR) produziert, ist derart ineffizient, das man weinen muß. Auch mit allen Optimizer-Stufen ändert sich das kaum. Sicherlich kann ein Compiler niemals optimalen Code produzieren, aber ich habe auch schon deutlich bessere Kompilate gesehen.
- Weiterhin ist der Weg, bis WinAVR vernünftig läuft und flasht, sehr steinig - verglichen mit dem AVRStudio.
- Bis im AVRStudio richtig ein C-Kompilat simuliert werden kann, ist es noch einmal sehr steinig.
- Ach ja: AVR-Assembler ist leichter zu lernen als C, wenn man keine Vorkenntnisse hat  Grin

@Ast:
Wie @TzA schon bemerkte, würde ich als erstes das U2X-Bit überprüfen. Ist zwar standardmäßig abgeschaltet, aber man weiß ja nie...

Weiterhin würde ich ein richtiges ASCII-Zeichen senden (0x41 z.B.), kein 0x0F - das könnte auf der PC-Seite fehlinterpretiert werden.

Ansonsten ist dein 16MHz-Oszillator denkbar ungeeignet für jedwede Form von serieller Kommunikation, da man die Baudrate schlicht nicht exakt genug eingestellt bekommt. Die Toleranzen sind zwar nicht besonders eng gefaßt, aber bei dem extremen Sparzwang, der im PC-Sektor herrscht, kann auch 1% Abweichung schon zuviel sein.

Aus diesem Grunde benutze ich persönlich die 14.7456 MHz-Quarze - höchstmögliches Tempo im Atmel bei exakten Baudraten. Brauche ich keine SIO, brauche ich eigentlich auch kein rasendes Rechentempo und weiche auf Energieparende (weniger Takt=weniger Strom) und günstigere 11MHz-Oszis aus.

Falls das zu langsam erscheint: Ich hab an einem Gerät mitentwickelt, das einen GPS-Receiver per SIO, ein GSM-Modem per SIO, zwei Digital-IN, zwei Digital-OUT, einen Erschütterungssensor und einen Berg interner Funktionen in Echtzeit bedient. Takt des ATMega: 3.6MHz...
« Letzte Änderung: Mai 1, 2005, 23:00:18 von OlafSt » Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #17 am: Mai 2, 2005, 10:02:47 »

Also wegen dem Takt mach ich mir nicht so große Sorgen:
Laut dem Baudratenrechner von Rowalt.de beträgt die Abweichung weit unter 1%.
Ich glaub sie liegt eher im bereich von 0,1%.

Könnte es daran liegen, dass was mit der Verkabelung nicht stimmt?
Was passiert, wenn ich RX und TX vertauscht habe?
Dann dürfte garnix mehr empfangen werden, oder?

Wie gesagt: Ich habe das ganze so verkabelt wie hier beschrieben, nur dass ich RX und TX am Stecker vertauscht hab, weil ich eben kein Nullmodem-kabel einsetze.
Ist das so korrekt?

Und wegen dem gesendeten Zeichen:
Ich habe natürlich auch versucht gut anzeigbare Zeichen zu versenden.
Ich hab mehrere Sachen ausprobiert und dann halt nen Code hochgeladen, bei dem es grade kein anzeigbares Zeichen war.
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?
TzA
Modder der Apokalypse

*

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



Profil anzeigen
Re: Projekt M8
« Antwort #18 am: Mai 2, 2005, 14:37:47 »

Hmm, wenn du einen Verkabelungsfehelr hast, dürfte eigentlich garnichts ankommen. Schreib doch mal dein Programm so, dass er kontinuierlich das gleiche Zeichen sendet, dann kann man sehr leicht feststellen, auf welcher Letiung sich was tut, denn da sollte ein Multimeter ca. 2,5V (TTL) bzw 0V(RS232) anzeigen. Wie hast du die Umsetzung  TTL<->RS232-Pegel gemacht, mit einem MAX232 ?
Gespeichert

You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #19 am: Mai 2, 2005, 15:47:04 »

 headcrash headcrash headcrash headcrash headcrash headcrash headcrash

Leute ich könnt heuelen!

Es tut mir Leid!

Der Fehler ist so banal, dass es mir schon fast zu peinlich ist, den hier zu posten.

Aber ihr habt es euch verdient.

Der Max232 war nicht mit Vcc verbunden!

Da war einfach kein Kabel zur Stromversorgung.
Ich habs schlicht und ergreifend vergessen.  Cry Cry

Es tut mir Leid und trotzdem danke, an alle, die mir mit einem echten Problem helfen wollten.

Ich glaub ich setzt mich jetzt erstmal in die Ecke und schäm mich und dann wird erstmal der Code ein bisschen übersichtlicher gemacht.

Kabel vergessen... Ich könnt mir in den Arsch beißen...
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?
b0nze
Gast


E-Mail
Re: Projekt M8
« Antwort #20 am: Mai 2, 2005, 16:04:18 »

Putz deinen Arsch, ich will auch reinbeißen ! Grin

@Quarz: Naja, man sollte bei SIO wirklich nen UART Quarz nehmen, aber:
 Wie heißt das Forum? Es gibt doch auch einen mit 18,xx Mhz, das halten die meisten AVR noch aus und gibt noch mal Performance. Solang es keine Serienproduktion (wie wahrscheinlich) bei Olaf ist, kannste das scho machen. Musste halt testen: Eeprom und Flash spielen dann nicht mehr so mit.

@Olaf: unter deinen "Anforderungen" des Geräts kann ich mir z.B. keinen Schwierigkeitsgrad vorstellen.. also ich weiß ja nicht, was ihr da für arithmetisches Zeugs reingepackt habt.. aber in ASM kann man glaub garnicht so viel langsam machen. Wenn man dann einmal als "Optimierer" rübergeht kann man schon viel Zeug ausbügeln und vereinfachen. Ist ja euer Job Grin

@Ast: hoffentlich vergisste nicht den AVR in die Fassung einzusetzen *G*

b0nze
Gespeichert
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #21 am: Mai 2, 2005, 16:55:54 »

So ich hab den Code ein wenig übersichtlicher gemacht.
Hoffe ich zumindest...

klick mich

An den Treibern hat sich nicht geändert.

Hab die Treiber-ID-Ladung in ne Schleife gepackt, die ich so hingematscht habe und sonst versucht alles in Macros zu packen.
Das lässt sich bestimm auch über echte Funktionen regeln, aber das machen wir, wenn der Speicher knapp wird  Grin

Als nächstes muss ich dann noch ne Grafikkarte basteln, mit der ich über den 4-Bit-Bus das LCD betreiben kann (Jaha aufgepasst Ati und Nvidia  Wink),
ne Test Treiber-Karte löten (einfach eine Transistorverstärkung der 4 Ausgänge) die entsprechenden Treiber programmieren und noch irgendwie das Zusammenspiel von LCD, Treiber-Karte, Betriebssystem (nennen wir es M8-OS ?  Grin Grin) und User einprogrammieren.

Natürlich darf die kommunikation über den COM-Port nicht fehlen und das ganze muss allgemeingültig sein, damit sich jeder möglichst einfach seine eigenen Treiber für seine Hardware schreiben kann.

Uff...
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?
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #22 am: Mai 3, 2005, 18:30:42 »

So nächstes Problem:

Hab die Grafikkarte zusammengelötet und bin gerade dabei den Treiber zu schreiben: Klick mich

Ich weiß, ich weiß: Sieht bestimmt furchtbar aus.
Aber Schleifen kommen rein, wenn's funktioniert.

Im Moment gibt das LCD aber garnichts aus.
Es ist nur, je nach Kontrast-Einstellung, ein schwarzer Balken zu sehen.

Es handelt sich um ein 16x2 Display von Reichelt.

Über die Slot-Pins 0 und 1 können Daten in das Schieberegister geladen werden (Das habe ich bereits überprüft: Es funktioniert wunderbar).

Pin 3 ist mit E verbunden und 4 mit RS.

Da ich auch mit LCDs null Erfahrung habe, währe es nett, wenn mir da jemand helfen könnte.

Edit:

So ich habs jetzt den schwarzen Balken weg bekommen (das ist doch ein gutes Zeichen, oder?), aber angezeigt wird immernoch nix.
Hier der Code

[gelöscht durch Administrator]
« Letzte Änderung: Mai 4, 2005, 14:23:04 von Ast » 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?
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #23 am: Mai 5, 2005, 14:06:42 »

Ich habs hingekriegt.

Es lag daran, dass ich das Schieberegister zu schnell angesprochen habe.

Ich habs jetzt soweit, dass das LCD bei jedem Aufruf der TextLCD_Loop Routine die daten aus dem RAM lädt und entsprechend der LCD-Größe anzeigt.

Hier und Hier gibts den passenden Code.

Und natürlich ein Foto zum Beweis:

[gelöscht durch Administrator]
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?
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #24 am: Mai 7, 2005, 12:56:38 »

Soderle

Die Interaktion zwischen User und Treiber sollte jetzt funktionieren.

Sobald Taster1 gedrückt wird betritt man das Menü.

Mit Taster0 und Taster1 kann man dann zwischen den Einträgen durchschalten.

Mit Taster2 wird der Focus dann auf den jeweiligen Slot gelenkt und die Tasterfunktion des Treibers aufgerufen.

Nun muss der Treiber die Taster und den Screen verwalten.

Jedes Mal, wenn ein Taster gedrückt wird, wird die Taster-Funktion des Treibers aufgerufen.

Im X-Register befindet sich die, dem Treiber zugewiesene RAM-Position und im Y-Register die EEPROM-Position.

Wird das Menü des Treibers verlassen, muss dieser den Focus wieder auf 0xFF setzen, womit er die Taster und Screen-Verwaltung wieder an das Betriebssystem übergibt.

Hier und hier gibts den Code (warscheinlich wieder Spaghett²)

Und diesmal gibts kein Pic, aber ein Video, das (in miserabler Qualität), zeigt, wie die Menüeinträge durchgeschaltet werden und schließlich das LCD-Menü betreten wird, das aber nur aus einem Text besteht.
(Zu sehen auch meine selbstgedrehten Taster-Verbindungskabel in modischem Schwarz-Gelb Grin)
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?
b0nze
Gast


E-Mail
Re: Projekt M8
« Antwort #25 am: Mai 7, 2005, 18:07:44 »

Ich kann den Film nich laden, ich soll mich als Mitglied anmelden oder so...

b0nze




Klappt immer noch nicht...
« Letzte Änderung: Mai 7, 2005, 18:47:50 von b0nze » Gespeichert
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #26 am: Mai 7, 2005, 18:23:58 »

Nagut hier ist der Link zum Ordner in dem das Video gespeichert ist.
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?
OlafSt
Global Moderator

*

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


Master of STLCD and LISA III


Profil anzeigen
Re: Projekt M8
« Antwort #27 am: Mai 7, 2005, 19:03:29 »

Kleiner Tip: Anstelle der Makros (die Idee ist nicht schlecht, aber am Zweck von Makros vorbei) würde ich Subroutinen machen. Ansonsten mußt du zwar wenig tippen - aber es wird trotzdem massenhaft Code generiert.

Ansonsten:  respekt für diese Leistung. Mich schauderts, weil das alles auch noch auf mich zukommt...  Shocked
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #28 am: Mai 7, 2005, 19:39:33 »

Die Makros habe ich ja auch nicht da eingebaut, um den Code zu verkleiner, sondern um ihn lesbarer zu machen  Grin

Ich hätte lieber Funktionen genommen, aber da der Großteil der "Funktion" nur aus dem Laden von Speicheradressen besteht hab ich es als Makro realisiert.

Und wieso kommt das noch auf dich zu?

Auf mich kommt jetzt erstmal eine einfache Treiberkarte zu, dann die konkrete kommunikation zwischen PC und M8 und ich muss die PC-Software schreiben, mit der die M8 letztendlich gesteuert wird.

Wenn das alles fertig ist erstell ich noch ne pdf-Datei, die engagierten Moddern die Entwicklung von eigenen Karten und Treibern erleichtern soll.  headshot

Allerdings müssten die Treiber dann auch in die PC-Software integriert werden...
hmm...
Vielleicht kann man sich da ja ne eigene Skriptsprache ausdenken...
Mal schaun  bestens
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?
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Re: Projekt M8
« Antwort #29 am: Mai 18, 2005, 16:23:34 »

So

Es hat zwar etwas länger gedauert (ich bin in den letzten Tagen irgenwie nie zum Coden gekommen), aber es gibt mal ein Update.

Ich habe die Kommunikation zwischen M8 und PC zur Hälfte fertig.
Senden von Daten vom PC zur M8 scheint problemlos zu funktionieren.
Zuerst sendet der PC ein Byte welches den Befehl an die M8 enthällt.
Die M8 quittiert das mit einem OK-Byte und ruft die entsprechende Funktion auf.
Wird der Befehl nicht erkannt schickt die M8 ein Fehler-Byte.

Die Kommunikation funktioniert also immer:

PC --- Befehl ---> M8
PC <--- OK ------- M8
PC --- Daten ---> M8
PC <--- OK ------- M8
PC --- Daten ---> M8
PC <--- OK ------- M8
usw...

Für das Auslesen von Daten habe ich mir das so gedacht:

PC --- Befehl ---> M8
PC <--- OK ------- M8
PC --- OK -------> M8
PC <--- Daten --- M8
PC --- OK -------> M8
PC <--- Daten --- M8
PC --- OK -------> M8
PC <--- Daten --- M8
usw...

Es wird jeweils nur ein Byte übermittelt.
Um das ganze nicht immer mit dem Terminalprogramm schreiben zu müssen habe ich ein kleines Programm geschrieben, dass mir vorallem beim entwickeln erstmal helfen soll (siehe Anhanhg).
Für den "Endverbraucher" werde ich ein komfortableres Programm schreiben.
Vielleicht sogar mit einem "Wizzard" Wink

Hier und hier könnt ihr euch auch den neuen Quelltext anschaun.
Falls es jemanden interessiert, könnte ich auch den Quelltext meines Setuprogramms hier posten.
Geschrieben hab ich es in Visual Basic 6.0.

[gelöscht durch Administrator]
« Letzte Änderung: Mai 18, 2005, 16:46:39 von Ast » 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?
Seiten: 1 [2] 3 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.069 Sekunden mit 19 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!