Willkommen Gast. Bitte einloggen oder registrieren.
Mai 13, 2024, 02:06:28
Ü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 23618 mal)
Ast
Case-Konstrukteur

*

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


Astpirin, die Medizin deines Lebens


Profil anzeigen WWW
Projekt M8
« am: April 20, 2005, 16:15:57 »

Also Leute,

Da ich nun endlich meinen neuen PC habe, kann es mit dem Modden ja los gehen.
Und da jeder weiß, dass es die inneren Werte sind die Zählen, will ich mit der Lüftersteuerung anfangen.

Aber ich will keine gewöhnliche Lüftersteuerung!
Folgende Punkte sind mir wichtig:

-(relativ) einfacher Aufbau:
   Damit jeder meine LüSteu auch mit einfachen Mitteln nachbauen kann.
   (Ich habe selbst keine Werkstat zu Verfügung, also ist das nicht ganz uneigennützig Wink)

-modularer Aufbau:
   Inspiriert von der LV2 hatte ich an ein System mit Steckkarten gedacht,
   damit jeder seine Lüsteu nach seinen Bedürfnissen zusammensetzen kann.

-billige gut beschaffbare Teile:
   Der einfachste Aufbau bringt nichts, wenn die Teile ein Vermögen kosten,
   oder nur über einen Importeur aus dem fernen Osten zu beschaffen sind.

-digital:
   Bis jetzt hätte ich auch einfach eine LV2 bauen können,
   aber, da ich mir sowieso vorgenommen hab mich mit uC's zu beschäftigen,
   will ich eine digitale Lüftersteuerung auf Basis eines AVRs bauen.
   Dann kann die Lüftersteuerung auch geich die ansteuerung des LCD übernehmen

Ich habe mir gedacht das ganze auf Basis des AVR Mega 8 zu realisieren,
weil es der günstigste Mega ist den es bei Reichelt im DIP-Gehäuse gibt.
Dadurch erfülle ich auch die Punkte 1 und 3 Wink

Der Mega 8 hat 23 I/O-Pins, von denen 4 für andere Funktionen drauf gehen.
(1xReset, 2xUART, 1xexterner Takt)

Bleiben 19 I/Os mit denen ich 4 4-Bit-breite Anbindungen zu den Steckkarten(folgend ganz unromantisch Slots genannt) und 3 Steuerungs-Taster realisieren will.

Nacher soll man den AVR nur ein Mal programmieren müssen.
Dann sagt man dem AVR über den COM-Port, welche Karten in welchen Slots stecken.
Der uC lädt dann selbst mit der eindeutigen TreiberID für jeden Slot den richtigen Treiber.
(Dies habe ich mit Sprungmarken realisiert)

Jeder Treiber benötigt (bis jetzt) 3 SubRoutinen:
-Die Ini-Routine wird beim Starten der LüSteu ein Mal aufgerufen.
   Sie ist dazu gedacht die Slot-Pins zu konfigurieren (Input/Output, interner Pullup)
   und Variablen vorzuinitialisieren
-Die Loop-Routine wird immer wieder aufgerufen.
   In ihr soll der Treiber seine eigentliche Aufgabe erfüllen und z.B. die Lüfter regeln.
-Die Taster-Routine wird jedesmal aufgerufen, wenn der Treiber den Focus hat(siehe unten) und ein Taster gedrückt wird.
   Sie ist dazu gedacht, den Treiber während der Laufzeit zu beeinflussen.
   (z.B. Lüftergeschwindigkeit regeln)

Die Ausgabe auf ein LCD übernimmt ebenfalls eine Steckkarte.
Da alle Treiber auf das LCD zugreifen können müssen, befindet sich im "globalen" RAM ein Bereich in dem der aktuelle Anzeigetext abgelegt wird
und aus dem der LCD-Treiber dann die Daten ließt, die angezeigt werden sollen.

Damit der uC weiß, wer die Taster-Eingabe verarbeiten soll, gibt es ein Focus Register, das bei keinem Focus den Wert 0xFF und ansonsten die Nummer des Slots mit Focus enthält.
Außer der Taster-Verarbeitung regelt das Focus Register auch was auf dem LCD angezeigt werden soll.
Also ich habe mir gedacht, dass die Anzeige einfach in den Taster-Routinen der Treiber erledigt wird.

So ich hoffe ich habe nix wichtiges vergessen...

Ob der Nutzen den Aufwand wert ist, will ich garnicht wissen Wink
Der Weg ist das Ziel.

Natürlich würde ich mich über ein paar Tips von den uC-Erfahrenen hier im Forum freuen.
Ich progge das ganze in AVR-Studio 4.
Dies ist sowohl mein erstes uC-Projekt als auch das erste Mal, dass ich mich mit Assembler beschäftige.
Ich springe sozusagen ins kalte Wasser, also seit ein bisschen nachsichtig Wink

Ich werde gleich mal den Quelltext bis wohin ich bis jetzt gekommen bin hochladen, damit ihr euch den mal angucken könnt.

Bis jetzt ist das noch alles theoretisch.
Die Simulationen laufen ohne Probleme, aber ich glaube ohne Hardware komm ich nicht mehr viel weiter.

Ich werde demnächst mal bei Reichelt bestellen.
Nur damit ich nix vergesse:
Ich brauche...
1x AVR Mega8
1x Quarzoszillator
1x MAX 232
1x Com-Buchse
3x Taster
Lochraster-Platten
Buchsenleisten
Steckerleisten
IC-Sockel
ein paar Transistoren
ein paar Widerstände für LEDs
Litze
gewinkelte Stiftleisten für die Befestigung der Karten
Stabilisierte 5V Versorgungsspannung für den Tesataufbau

Ich hoffe ich hab nix vergessen.
Naja sagt mal was ihr bis jetzt davon haltet.

Edit:
Hier und hier ist der Quelltext
« Letzte Änderung: April 20, 2005, 16:26:12 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 #1 am: April 27, 2005, 14:14:26 »

So,
heute sind die Bauteile von Reichelt angekommen (Montag bestellt, Mittwoch in den Händen: TOP).

Leider haben sie mir wohl das falsche D-SUB-Kabel geschickt, aber das brauch ich im Moment eh noch nicht.

Jetzt kann gelötet werden Lötkolben

Vielleicht sollte man sich direkt auf einen Modding-FAQ Standard einigen was uC betrifft:
Gibt es irgendwelche Vorschläge, wie der ISP-Programmer-Stecker aussehen soll?
Also ich wollte den mit ner Stifleiste realisieren (die ist billig und im Rastermaß 2,54 ohne Probleme zu verarbeiten).
Jetzt stellt sich nur die Frage der Pinbelegung.
Evtl. sollt man die auch so wählen, dass man nicht gleich den uC zerstört, wenn man den Stecker falschherum einsteckt.
Zu verteilen währen da V+, Gnd, Rst, Miso und Mosi.
Hat da jemand ne Idee, oder gibt es da ne Verteilung, die sich bewährt hat, oder soll ich die einfach frei Schnauze verteilen.
Ist ja auch kein Problem, das nacher wieder umzulöten.

[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?
b0nze
Gast


E-Mail
Re: Projekt M8
« Antwort #2 am: April 27, 2005, 16:33:49 »

Nettes Projekt, mal schaun, was draus wird.

Hab da aber noch Anregungen:
 Für das Tastererfassen und entprellen würde ich das hier in einen Timer setzen:  http://www.mikrocontroller.net...-20549.html#new
 Vielleicht ist es besser, mit einem m32 zu arbeiten, der hat schöne 32Pins. Zähle z.B. noch einen Pin dazu, damit du einen Quarz nehmen kannst. Warum so nen teuren Oszillator. Dann vielleicht TWI (I2C) Temperatursensoren, die wollen auch 2 Pins. Dann ein paar LEDs (Effekte, Bestätigung), da kann das doch knapp werden.
 Wie das mit den IDs geht, hmm.. werden die ins EEprom gespeichert? Sonst vielleicht nen Menü, wo man das zur Laufzeit ändern kann.


==> Ich schick dir mir mal mein Lüftersteuerungchen... ist recht modular aufgebaut und hat nen schönes, allgemein gültiges, Menü. Ich bin nie dazu gekommen das fertigzustellen. Vielleicht kannste was brauchen und vielleicht hab ich irgendwann Lust dazu.
Bis jetzt ist integriert:
 PWM Ausgabe der Spannungen in 20Stufen (könnte geändert werden)
 Umdrehungen erfassen bis glaub 10.000U/min bei 8Mhz (oder so)
 Alles für 4 Kanäle ausgelegt, könnte sicher erweitert werden
 4 Tasten Bedienung (UP/DOWN/ENTER/BACK)
 Am besten natürlich 4x?? Display
 DS1621 Temperatursensoren sind so halb integriert
 Automatisches Verändern der eingestellten Stufe mit einem Sollwert in der Temperatur (ist Temp zu hoch, geht die Stufe mit einstellbarer Zeit immer höher, zu niedrig (mit Hysterese natürlich) langsam wieder runter. Dürfte sich sicher mal einpendeln, habs net getestet)
 Ontime Anzeige
 Passwortschutz
 Ausgabe der Daten per UART
 mehr fällt mir grad nich ein *G*.

 b0nze
 
Gespeichert
Falzo
Diktator vom Dienst
Administrator

*

Karma: +15/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 5088



Profil anzeigen WWW
Re: Projekt M8
« Antwort #3 am: April 27, 2005, 20:36:01 »

was den standard fuer das prommer-kabel angeht, vielleicht schliesst du dich da nochma mit spunky kurz? der hat imho irgendwo schonmal was dazu gemacht oder entworfen oder so, wenn ichs nicht in falscher erinnerung habe...

haettest du Lust ein Tutorial schreiben und dies nur den µC-grundlagen und vor allem der herstellung jenes Kabels sowie der Definition besagten Standards zu widmen? das waer riesig, auf sowas draenge ich schon lange und du haettest ja direkte gelegenheit ordentlich fotos zu machen etc.

ich wuerde dich dafuer jedenfalls lieben  zunge Grin knuddel
Gespeichert

...bis einer heult!
find virtual reality related boards at https://vrforum.de
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 #4 am: April 28, 2005, 15:47:43 »

Also ich dokumentiere meine Arbeite auf jeden Fall, alllerdings glaube ich, dass die Fotos nicht unbedingt Tutorial-Qualität haben...

Schreiben kann ich sicherlich tun, aber das ist jetzt erstmal ein Prototyp und wie gesagt mein erstes uC-Projekt, also werd ich das erst machen wenn's fertig is.
Fotos kann dan ja vieleicht jemand anderes machen.

@b0nze:
Ich werd mir deinen Code mal anschauen, wenn ich Inspiration brauche,
aber im Moment stehen erstmal mehr oder weniger stupide Lötaufgaben vor mir.
Und was den Mega32 betrifft: Der kostet bei Reichelt 5 bis 6 Euro und ich wollte ja eine möglichst Low-Cost LüSteu bauen (naja so Low-Cost wie halt geht...)
Wenn ich damit fertig bin, könnte man ja über einen Nachfolger nachdenken  Grin

Ich wollte eigentlich ein paar Fotos von meinem neuen Programmer hochladen, aber meine Cam ist überhaupt nicht für Nahaufnahmen geeignet...
Naja, ist vieleicht auch besser, wenn ihr den nicht seht.
Die Lötbrücken sehen furchtbar aus...

Was solls, ich werd mal mit spunky Kontakt aufnehemen.
Und dann frisch ans Werk!
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 #5 am: April 28, 2005, 16:15:50 »

Ich finde die Idee mit dem Oszillator gar nicht schlecht. Es ist fast unmöglich, einen Atmel einfacher mit einem sauberen Takt zu versorgen.

Hab auch den Code einmal grob überflogen und einen kapitalen Bock entdeckt - aber das heben wir uns auf, bis wir den Code sezieren. Jetzt löte erstmal fleißig  Grin
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 #6 am: April 28, 2005, 18:20:04 »

Ja, eins nach dem anderen.

Um zu zeigen, dass ich auch wirklich was mache, gibts auch ein Bild von meinem ISP und der Test-Stromversorgung.
Der ISP ist 8-polig, aber außer V+ am ersten Pin ist noch kein Pin verbunden.
Und die Stromversorgung besteht aus nem billigen unstabilisierten 6V 500mA Netzteil, das ich noch hier rumliegen hatte und nem 7805.

[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?
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 #7 am: April 29, 2005, 07:41:37 »

Ui, da wäre ich aber sehr aufmerksam. 6V sind ein bissel knapp für einen 7805. Weiterhin würde ich auf jeden Fall die beiden 100nF-Pillen mit einbauen. Wenn der 7805er zu schwingen beginnt (besonders bei dieser niedrigen Eingangsspannung), könnte der ATMega echte Probleme bekommen und der ISP mehr oder weniger nach dem Zufallsprinzip funktionieren. Die 100nF's verhindern diese Schwinger.

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 #8 am: April 29, 2005, 10:48:08 »

Also das Netzteil liefert im Leerlauf deutlich über 6V.
So 7 bis 8 Volt.

Sollte das nicht reichen hab ich hier noch nen alten Carrerabahn-trafo.
Der kann bis zu 14V bei 1A liefern, also währe das auch kein Problem.

Und zur Schwingungsreduzierung:
Ich hatte sowieso geplant für jeden IC einen 100nF Entstör-Kondensator einzulöten.

Mal schaun, an der Stromversorgung lässt sich immer noch basteln.
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 #9 am: Mai 1, 2005, 11:20:20 »

So,
eigentlich müsste ich jetzt soweit sein, dass ich die ersten Tests mit dem Atmel machen kann, aber irgendwie, will PonyProg den nicht erkennen...

Wie sieht denn die minimale beschaltung für einen ersten erfolgreichen Test aus?

Ich hab jetzt Vcc und VAcc mit V+ und zwei mal Gnd mit Gnd verbunden.
Außerdem hab ich sogar noch den Oszi. eingelötet und natürlich Miso, Mosi, Sck, und Rst mit dem Programmer verbunden.

Fehlt da noch was?
Muss ich Rst mit nem Pull-Up oder -Down versehen?
Oder hab ich mich irgendwo verlötet?
Hab eigentlich alles schon ein paar mal überprüft...
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 #10 am: Mai 1, 2005, 11:35:15 »

Den Oszi hätteste dir sparen können. Der m8 läuft auch bei dir (da du ja nicht programmieren kannst) noch mit internem 1Mhz.

Probier mal das "Yaap" aus. Das hab ich, könnte er zwar mal weitermachen...aber funktioniert.

Ich würde eher mal deinen ISP überprüfen.. ich hab auch 3-4Tage gebraucht, Miniatur-Quetsch-Bauweise bei mir Wink.

Brauchst nix Pulldown etc. Na vielleicht Pullup am RESET.

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 #11 am: Mai 1, 2005, 11:36:32 »

Jo, den Oszi hab ich auch nur aus verzweiflung eingelötet  Grin

Ich werds mal mit Yaap versuchen...

Edit:

Mit Yaap scheint es zu funktionieren.
Wenn ich es jetzt testweise hinkriege ne LED zum leuchten zu bringen, kann ich die  restliche schaltung aufbauen und dann kanns richtig losgehn.

Edit²:

Juchuu

Es funktioniert alles wunderbar.
Hab Slot0 fertig verlötet und ein Testprogramm erfolgreich ausgeführt.
Jetzt muss ich nur noch die anderen Slots verlöten und die Fuse-Bits richtig setzen.
Ihr könnt ja schonmal anfangen den Code zu sezieren Grin
« Letzte Änderung: Mai 1, 2005, 14:02:18 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 #12 am: Mai 1, 2005, 18:01:23 »

So dann mach doch mal nen Doppelpost,
denn ich habe ein kleines Problem:

Hier und hier habt ihr den aktuellen Quellcode.

Ich möchte eigentlich nur bei jedem Hauptschleifendurchlauf einen festen Wert über den UART schicken.

Empfangen tu ich das ganze über das Terminal Programm von Rowalt.de

Auch die Verdrahtung ist wie auf rowalt.de, außer dass ich RX und TX vertauscht habe, weil ich kein Nullmodemkabel, sondern 1:1 Kabel benutze.

Jetzt empfange ich aber leider nicht den Wert, den ich im Code angebe!

Code:
;UART Initialisieren
;Baudrate einstellen
ldi temp1, LOW(UBRRVAL)
out UBRRL, temp1
ldi temp1, HIGH(UBRRVAL)
out UBRRH, temp1
;Frame-Format: 8 Bit
ldi temp1, (1<<URSEL)|(3<<UCSZ0)
out UCSRC, temp1
;RX und TX aktivieren
    ldi temp1, (1<<RXEN)|(1<<TXEN)
out UCSRB,Temp1

Code:
;Serielle Schnittstelle abfragen
ldi Fin,0x0F
rcall SendChar

Code:
SendChar:
sbis UCSRA,UDRE
rjmp SendChar
out UDR, Fin
ret

Was mach ich falsch?

Und um zu zeigen, dass es im Großen und Ganzen eigentlich ganz gut läuft hab ich hier auch noch zwei bilder vom Aufbau:

[gelöscht durch Administrator]
« Letzte Änderung: Mai 1, 2005, 18:08: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?
b0nze
Gast


E-Mail
Re: Projekt M8
« Antwort #13 am: Mai 1, 2005, 18:24:33 »

Mein Zimmer ist ja aufgeräumt im Gegensatz zu deinem Code (so schlimm siehts hier eigenlich garnich aus.. bis auf die Klamotten überall).

Wie wärs, wenn du mal ne Schleife irgendwo reinmachst? Z.B. am Anfang, wo du aus dem EEprom die Treiber lädst.. kann man schön und einfach mit
 LD temp1, Z+
 ST X+, temp1
machen. Also allgemein versuchen, eine Schleife zu erzeugen, das is ja grauenhaft *G*, wirste später merken, alles was man vereinfachen kann (auch wenns 5% Takte mehr kostet) ist GUT.

Für nen gescheites Terminalprogramm:
http://realterm.sourceforge.net/    (thx to Olaf, my redda)

Ich wüsste nicht, was da jetzt falsch sein könnte bei dem Serial... nimm doch einfach mal "ldi fin, 'x'", dann siehste mit jedem Programm, dass was kommt. 15 ist nämlich ASCII Steuercode, mögen nicht alle... und Tipp, Yaap ist bei seinem Serial Terminal etwas lahm, also, wenn du volle Pulle ohne Delay sendest.. gute Nacht *G*.

Also resumé: mach den Code noch etwas leserlicher, und ich freu mich auf das weitere.


b0nze

PS. Haddu kein ICQ?
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 #14 am: Mai 1, 2005, 19:58:37 »

Also ich habs mal mit dem anderen Terminalprogramm versucht, aber da ist auch keine Besserung in Sicht.

Wenn ich den Port schließe und dann wieder öffne, kommen manchmal andere Signale an.
Heißt das, ich hab ein Problem mit den Einstellungen des UARTs?
So wie der Code momentan ist müsste ich doch eigentlich eine Baudrate von 9600, 8 Bits, keine Parität, und ein Stopbit haben, oder?

Achja: UBBRVAL berechne ich 16000000/(16*9600) - 1

Irgendwie fuchst mich das jetzt...

Zum Spaghetticode:  zunge
Ist mein erster ASM-Code und optimiert wird später.
Aber keine Angst: Sobald der UART funktioniert, werd ich den Code ein bisschen übersichtlicher machen.
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.059 Sekunden mit 19 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!