Seiten: 1 [2] 3
|
 |
|
Autor
|
Thema: Projekt M8 (Gelesen 25981 mal)
|
|
OlafSt
Global Moderator

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

Master of STLCD and LISA III
|
@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 
@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 2, 2005, 01:00:18 von OlafSt »
|
Gespeichert
|
Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
|
|
|
|
TzA
Modder der Apokalypse

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

|
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
|
|
|
|
b0nze
Gast
|
Putz deinen Arsch, ich will auch reinbeißen ! 
@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 
@Ast: hoffentlich vergisste nicht den AVR in die Fassung einzusetzen *G*
b0nze
|
|
|
Gespeichert
|
|
|
|
Ast
Case-Konstrukteur

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

Astpirin, die Medizin deines Lebens
|
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 
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 ), 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 ? ) 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
Geschlecht: 
Beiträge: 589

Astpirin, die Medizin deines Lebens
|
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, 16: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
Geschlecht: 
Beiträge: 589

Astpirin, die Medizin deines Lebens
|
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 )
|
|
|
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
|
Ich kann den Film nich laden, ich soll mich als Mitglied anmelden oder so...
b0nze
Klappt immer noch nicht...
|
|
« Letzte Änderung: Mai 7, 2005, 20:47:50 von b0nze »
|
Gespeichert
|
|
|
|
|
|
|
|
Seiten: 1 [2] 3
|
|
|
|
|