Hallo,
Vorab: Bin blutiger Anfänger mit MCs.
ich möchte über einen AtMega168 Daten aus einem Beschleunigungssensor
auslesen. Hierzu habe ich Bit4 und Bit5 von PortC auf Eingang
geschalten. Bit4 ist mit den Daten verbunden und Bit5 mit dem Clock des
Sensors. Die Daten des Sensors befinden sich in dessen Register (z.B.
06h Bit0). Wie komme ich von diesem Bit am Mikrocontroller an das
Register und die Daten des Sensors?
So hatte ich mal angefangen...
DDRC &= ~( ( 1 << DDC4 ) | ( 1<<DDC5) );
uint8_t bPortC;
bPortC = PINC;
Gruß
Hmmm,
mach es uns doch einfacher...
1. Was steht an den Pins des ATMega ?
2. Was ist das für ein Sensor ?!
3. Hast Du die Datenblätter ?
...
Diese auch schonmal gelesen ?
Ich vermute mal, das war im wesentlichen schon das Programm und das
Hauptproblem ist die serielle, synchrone Übertragung. Wenn wir Glück
haben hat der Sensor IIC Bus oder sowas. Da kann er dann eine fertige
Routine von hier nehmen.
natürlich habe ich schon die datenblätter durchgelesen. dadurch weiß ich
ja, dass sie z.b. das zu lesende register für den x-wert des sensors in
06h befindet. Jedoch kann ich nicht nachvollziehen, wie ich aus einem
Bit der MCs aus dem Sensor mehrere Daten bekommen soll...
Also gut:
Du liest ein Bit, dann liest Du das nächste Bit, danach das folgende,
dann das darauf folgende, dann das nächste und das nächste auch noch,
dann noch eins und dann das letzte. Das sind dann 8 Bit. Geben ein Byte.
Danke ;). Jetzt sind wir wieder am Anfang der Menschheit...
Mein Problem: Was muss man dem Mikrocontroller sagen, dass er mir alle
Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem
File)?
PortC Bit4 muss als Eingang deklariert werden!?
Anschließend muss ich ihm sagen, hole mir bitte die Daten aus dem
RegisterA, dann RegisterB und RegisterC.
Yannick Simon schrieb:
> Danke ;). Jetzt sind wir wieder am Anfang der Menschheit...
Tja. Irgendwo muss man anfangen.
Und wenn man neu in eine Materie einsteigt, ja dann fängt man im
übertragenen Sinne beim Anbegin der Menschheit an.
So ist das nun mal.
> Mein Problem: Was muss man dem Mikrocontroller sagen, dass er mir alle> Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem> File)?
Wie ich derartige Redereien hasse. Sie kommen meistens von den Leuten,
die 0 Ahnung davon haben, wie so eine CPU funktioniert oder worums beim
Programmieren überhaupt geht.
Yannick Simon schrieb:
> PortC Bit4 muss als Eingang deklariert werden!?> Anschließend muss ich ihm sagen, hole mir bitte die Daten aus dem> RegisterA, dann RegisterB und RegisterC.
Fang mal an, das Tutorial hier durchzugehen.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Besser wäre allerdings, wenn du zuvor erst mal 1 oder 2 Monate
C-Programmierung auf dem PC übst. Die Frustrate ist dort nicht so hoch.
Wenn du dann mit dem Tutorial so einigermassen klar kommst, bist du in 3
bis 4 Monaten soweit, den Sensor ohne Verwendung einer fertigen Library
auslesen zu können.
Wenn du fleissig übst, selbstverständlich.
>Danke ;). Jetzt sind wir wieder am Anfang der Menschheit...
Genau das wollte ich sagen. Ich bin aber heute auch etwas bissiger als
Dir angenehm sein kann.
>Mein Problem: Was muss man dem Mikrocontroller sagen, dass er mir alle>Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem>File)?
Dein Problem ist, das Dir da in der Mitte zwischen einer Taktleitung,
einem Datenbit und den Register und "was muss man dem Mikrocontroller
sagen" eine ganze Menge an kleinen Verständnisschritten fehlt.
Deswegen mein Hinweis Dir mal Dokumente über IIC und SPI durchzulesen.
Das ist nicht eben mal mit zwei Befehlen getan. Wobei gerade die ATmegas
schon eingebaute Hardware für diese beiden Busse haben. Schau Dir auch
hier mal die Tutorials an. Da ist glaube ich auch was mit IIC und SPI
dabei.
Also wenn Du wirklich noch keine Ahnung hast, dann richte Dich auf
mindesten ein Viertelajahr intensives Hobby ein.
@ Karl Heinz
>Wie ich derartige Redereien hasse. Sie kommen meistens von den Leuten,>die 0 Ahnung davon haben, wie so eine CPU funktioniert oder worums beim>Programmieren überhaupt geht.
Mich erinnert das immer an die Anzeigen in den Fernsehzeitschriften in
denen Leute die unser Wirtschaftssystem völlig durchblickt haben,
Methoden zum schnelle Geldverdienen anbieten.
Daher stammt wahrscheinlich auch die Mär, das man keine Ahnung haben
muss, sondern nur, wo es steht. (oder wen man fragen muss). :-) IM FORUM
latürnich.
Diese Mär ist ja auch korrekt. Man muss nur eben nicht nur wissen WO es
steht (das ist der leichte Teil) sondern auch wissen WAS man sucht (und
da setzt es hier im Forum schon oft aus....)
Nehmt ihn doch nicht gleich auseinander.
In den Haufen den er gesetzt hat, haben wir ihn doch schon mit der Nase
reingehalten.
Jetzt ist er am Zug, bzw am Lötkolben und Rechner ;)
Lerning By Doing ist jetzt angesagt.
Wenn Du bei einem Speziellen Problem :
1. nicht selbst draufkommst
2. Google,
3. die Forensuche
4. oder die Artikel Dir nicht weiterhelfen
-> Post ein Frage die Du sorgfälltig ausformuliert hast.
Wir entwickeln hier nicht zusammen Deine Projekt,
wir helfen uns "*nur*" gegenseitig.
Hallo Protoss, hier meine kleinen Gedqanken zu deinem Problem:
Protoss schrieb:
> Vorab: Bin blutiger Anfänger mit MCs.
Das macht grundsätzlich ja nichts, das Problem uC+Beschleunigungssensor
ist durchaus als Anfangsprojekt adequat.
> ich möchte über einen AtMega168 Daten aus einem Beschleunigungssensor> auslesen.
Hier fehlen zwei wesentliche Informationen um dir helfen zu können:
a.) Um welchen Beschleunigungssensor handelt es sich
b.) Wie ist jener an den uC angebunden. SPI, I²C, parallel, oder ganz
anders?
> Hierzu habe ich Bit4 und Bit5 von PortC auf Eingang geschalten.> Bit4 ist mit den Daten verbunden und Bit5 mit dem Clock des Sensors.
Das könnte SPI sein. Ist "Chip Select" am Sensor richtig beschaltet?
Bit5 (dein Clock) müsste dann allerdings ein Ausgang sein, da du bei SPI
nur lesen kannst, wenn gleichzeitig (vom uC aus gesehen) geschrieben
wird. Ausserdem fehlt dir dann (bei SPI) eine Leitung.
Falls es TWI (I²C) ist: Hast du den Sensor überhaupt korrekt
andressiert?
> Die Daten des Sensors befinden sich in dessen Register (z.B.> 06h Bit0). Wie komme ich von diesem Bit am Mikrocontroller an das> Register und die Daten des Sensors?
Ganz einfach: Entsprechenden Befehl zum Registerlesen rüberschicken, die
Antwort ist der entsprechende Wert. Bit0 aus dem empfangenen Byte
herausextrahieren. Bei I²C korrekt adressieren, bei SPI die richtige
Länge senden.
> So hatte ich mal angefangen...> DDRC &= ~( ( 1 << DDC4 ) | ( 1<<DDC5) );> uint8_t bPortC;> bPortC = PINC;
Schaut nach C aus, hilft aber keinem weiter.
Viel Erfolg und Glück auf wünscht Iwan
Ahem schrieb:
> Herrlich Ivan, wirklich herrlich. Und falls Du den Thread dann mal> liest, wirst Du auch einige Deiner eigenen Fragen selbst beantworten> können.
Ich habe den Thread vorab gelesen. Vielleicht bin ich aber auch blind.
Also, Butter bei die Fische, Wo sagt der OP welchen Sensor er verwendet
und wie er ihn angebunden hat?
Иван S. schrieb:
> Ahem schrieb:>> Herrlich Ivan, wirklich herrlich. Und falls Du den Thread dann mal>> liest, wirst Du auch einige Deiner eigenen Fragen selbst beantworten>> können.>> Ich habe den Thread vorab gelesen. Vielleicht bin ich aber auch blind.> Also, Butter bei die Fische, Wo sagt der OP welchen Sensor er verwendet> und wie er ihn angebunden hat?
OK: Wie er ihn angebunden hat, hat er tatsächlich nicht gesagt.
Aber zum Thema Sensor: Er hat sogar das Datenblatt gepostet (was ja
grundsätzlich löblich ist)
Иван S. schrieb:
> Ahem schrieb:>> Herrlich Ivan, wirklich herrlich. Und falls Du den Thread dann mal>> liest, wirst Du auch einige Deiner eigenen Fragen selbst beantworten>> können.>> Ich habe den Thread vorab gelesen. Vielleicht bin ich aber auch blind.> Also, Butter bei die Fische, Wo sagt der OP welchen Sensor er verwendet> und wie er ihn angebunden hat?
Edit: Sorry, anscheined wirklich blind (Bosch-Datenblatt nicht gesehen).
Der Controller kann jedenfalls SPI und I²C. Meine Ausführungen von oben
waren gar nicht so verkehrt, hatte leider das DB überlesen.
>Sorry...
Naja. Keine Frage von Schuld. Schon ok.
Ich meine wir haben unterschiedliche Aufassungen darüber, wo sich die
Kenntnisse des Thread-Openers bewegen. Er fragt ja, "welches Kommando"
er geben muss, nachdem er Daten und Takt an den uC angeschlossen hat, um
"die Register zu lesen".
Er weiss also garnicht was ein Bus, was Adressierung usw. beim IIC oder
SPI ist. Es gibt noch andere Hinweise.
Die Sequenz
>> Die Daten des Sensors befinden sich in dessen Register (z.B.>> 06h Bit0). Wie komme ich von diesem Bit am Mikrocontroller an das>> Register und die Daten des Sensors?>Ganz einfach: Entsprechenden Befehl zum Registerlesen rüberschicken, die>Antwort ist der entsprechende Wert. Bit0 aus dem empfangenen Byte>herausextrahieren. Bei I²C korrekt adressieren, bei SPI die richtige>Länge senden.
ist ja nicht falsch, aber zwischen den Bits auf der Leitung und dem
senden eines Befehls sind soviele gedankliche Zwischenschritte nötig....
Was soll er da mit so einer Antwort? Um sie umsetzen zu können müsste
man schon wissen, das es sowas wie Befehle/Adressen auf dem I2C gibt.
Welche Buszustände es gibt. Das der Atmel eine Hardware TWI hat. Wo die
Portpins sind uswuswf.
D.h. hier fehlen schon die Grundlagen, die man haben muss um Deine
Antwort zu verstehen. Und ich meine das ist relativ gut zu erkennen.
Und das hat mich geärgert, das ich (und andere hier) sich mit dem Niveau
der Fragestellung auseinandergesetzt haben und dann einer mal kurz
drüberfliegt und mit einem kurzen "einfach so" meint, das erledigen zu
können, was mehr damit zu tun hat, dem Thread-Opener gleichzeitig seine
momentanen Grenzen aufzuzeigen und ihm Hinweise zu geben in welche
Richtung er gehen kann.
Deine kurze Antwort aber suggeriert, das wir hier alle verkannt haben
wie simpel das Problem eigentlich ist. Wenn ich aber in einem relativ
langen Thread von verschiedenen Antwortern die Qualität der
Fragestellung thematisiert sehe, dann wäre es vielleicht sinnvoll diese
mal etwas näher anzuschauen, anstatt mit einem: "ist doch ganz einfach"
so reinzupoltern.
Naja. So weltbewegend ist das nun auch nicht. Also Schlagsahne drüber,
aber das wollte ich mal loswerden.
Ahem schrieb:
>>Sorry...> Naja. Keine Frage von Schuld. Schon ok.> Ich meine wir haben unterschiedliche Aufassungen darüber, wo sich die> Kenntnisse des Thread-Openers bewegen. Er fragt ja, "welches Kommando"> er geben muss, nachdem er Daten und Takt an den uC angeschlossen hat, um> "die Register zu lesen".
Zumindest weiß er ja schon, welches Bit aus welchem Register er auslesen
will, das ist doch schon was ;-)
> Er weiss also garnicht was ein Bus, was Adressierung usw. beim IIC oder> SPI ist. Es gibt noch andere Hinweise.
Klar, aber dann muß er einfach mal sagen, wie er die zwei Schaltkreise
überhaupt zusammengeschaltet hat und was grundsätzlich schon
funktioniert.
Der uC scheint ja immerhin schon zu laufen, also hat er zumindest
grundlegende Ahnungen.
> ist ja nicht falsch, aber zwischen den Bits auf der Leitung und dem> senden eines Befehls sind soviele gedankliche Zwischenschritte nötig....> Was soll er da mit so einer Antwort? Um sie umsetzen zu können müsste> man schon wissen, das es sowas wie Befehle/Adressen auf dem I2C gibt.> Welche Buszustände es gibt. Das der Atmel eine Hardware TWI hat.
Wer, wenn nicht der OP, soll wissen wie er es angeschlossen hat. Daß es
SPI und I²C gibt traue ich dem OP schon zu zu wissen. Zumindest nach dem
Lesen dieses Threads wird er die grundsätzlichen Konzepte beider Systeme
verstehen, bzw. sich die Literatur dazu besorgen.
> D.h. hier fehlen schon die Grundlagen, die man haben muss um Deine> Antwort zu verstehen. Und ich meine das ist relativ gut zu erkennen.
Ports kann er anscheinend schon ansprechen (das C-Snippet sagt natürlich
nichts aus), er ist zumindest auf einem guten Weg sein Projekt mit der
Hilfe die er hier bekommt zu verwirklichen.
> Und das hat mich geärgert, das ich (und andere hier) sich mit dem Niveau> der Fragestellung auseinandergesetzt haben und dann einer mal kurz> drüberfliegt und mit einem kurzen "einfach so" meint,
Falls es so rübergekommen ist tut es mir leid, das war nämlich
mitnichten meine Intention. Ich wollte nur "meine kleinen Gedanken" dem
OP kundtun auf daß es ihm vielleicht irgendwie helfe.
> das erledigen zu können, was mehr damit zu tun hat, dem Thread-Opener> gleichzeitig seine momentanen Grenzen aufzuzeigen und ihm Hinweise zu> geben in welche Richtung er gehen kann.
So in etwa habe ich mir das auch gedacht. Ich habe von I²C und SPI
geschrieben, damit sich der Opener klarer darüber wird, daß es
Bussysteme gibt die man einfach verstanden haben muß um den Sensor
auszulesen. Deshalb hatte ich auch die Adressierung bei TWI
angesprochen, damit der OP erkennt, da könnte etwas wichtig sein. Oder
daß bei SPI Lesen gleich Schreiben ist, das ist für den OP auch wichtig.
Die Grundlagenpapers kann ihm ja keiner vorlesen, aber daß es
grundsätzliche Konzepte gibt die man in der Elektronik beherschen muß,
das wollte ich beibringen.
> Deine kurze Antwort aber suggeriert, das wir hier alle verkannt haben> wie simpel das Problem eigentlich ist.
Wie gesagt, daß war bestimmt nicht meine Intention. Durch deine Kritik
habe ich jedoch einiges gelernt, in Bezug auf Wahrnehmung fremder
Postings. Ich werde daher versuchen mich in Zukunft besser auszudrücken.
So gesehen hast du mich wieder ein kleines Stück auf dem richtigen Weg
weitergebracht.
> Wenn ich aber in einem relativ langen Thread von verschiedenen> Antwortern die Qualität der Fragestellung thematisiert sehe, dann wäre> es vielleicht sinnvoll diese mal etwas näher anzuschauen, anstatt mit> einem: "ist doch ganz einfach" so reinzupoltern.
Die Qualität der Fragestellung war mein erster Kritikpunkt an den OP.
Bis jetzt weiß man nur, daß er einen ATMega hat, den er anscheinend
programmieren kann. Und den Bosch-Sensor, welcher I²C und SPI
beherrscht. Er will nun Erkennen, ob ein bestimmtes Bit im Sensor
gesetzt ist. Mehr haben wir bis dato einfach nicht erfahren.
Ich hatte die Frage ursprünglich als Anfrage an Radio Jerewan
kategorisiert, daher auch meine entsprechende Antwort.
Frage an Radio Eriwan: Ich habe einen ATMega und einen
Bosch-Beschleunigungssensor. Im Controller wird durch bestimmte Umstände
ein Bit gesetzt. Geht das einfach auszulesen?
Antwort von Radio Eriwan: Im Prinzip ja. Allerdings ist die korrekte
Verbindung zwischen Controller und Sensor sicherzustellen. Der
Controller kann SPI und I²C. Beachte, daß bei SPI jede Leseoperation
einer Schreiboperation entspricht. Bei I²C ist die korrekte Adressierung
des Sensors essentiell. Die entsprechenden Befehle zum Lesen und
Beschreiben der Register können bestimmt dem Datenblatt entnommen
werden. Den mitgelieferten Code haben wir ob seiner irrelevanz leider
nicht weiter beachten können. Mit armenischem Gruße, (Red.)
> Naja. So weltbewegend ist das nun auch nicht. Also Schlagsahne drüber,> aber das wollte ich mal loswerden.
Kein Problem, deine konstruktive Kritik ist in keinem Falle zu
verurteilen, ich bin Dir dankbar darüber. Begründete, sachliche Kritik
kann nur zum Vorteil beider Diskutanden sein.
In diesem Sinne, lass uns eine Friedenspfeife rauchen.
LG aus dem OOE-Zentralraum, Iwan
Karl heinz Buchegger schrieb:
> Aber zum Thema Sensor: Er hat sogar das Datenblatt gepostet (was ja> grundsätzlich löblich ist)
Ich find das Datenblatt interessant, vor allem das "Confidential" auf
jeder Seite.
Ahem,
gesetzt den Fall, Du würdest Daten aus dem Sensor rausbekommen, was soll
denn dann damit geschehen? Ich mein der Controller, der den Sensor
anspricht, soll sicher irgend etwas tun.
Am einfachsten ist es Du versuchst erstmal eine Kommunikation zu deinem
Controller aufzubauen (RS232?) oder eine LED blinken zu lassen.
Wenn Du so weit bist, kannst Du die das Atmega DB hernehmen und die
Beispiele zum SPI oder IIC abtippen(je nachdem was Du benutzt) und
versuchen zu verstehen.
Wenn Du das geschafft hast kannst Du auf die Antwort vom Sensor
reagieren indem du eine Nachricht ausgibst oder ne LED blinken lässt.
Irgendwie hab ich das Gefühl Du musst noch bisschen mehr tun als SPI/IIC
zum laufen zu bekommen.
Viel Erfolg noch!
Ich hatte auch mal mit dem Gedanken gespielt einen Beschleunigungs-
messer zu bauen. (um im Flugzeug die Gs zu messen) Ich wollte das
so realisieren, dass ich Beschleunigungssensoren verwende, die
analoge Spannungen ausgeben. Die dann in einen Mega8 über die
AD-Wandler einlesen und in menschlesbare Dezimalzahlen umwandeln
und sagen wir im Sekundentakt auf einem Display ausgeben zu lassen.
Weil ich schon kleinere Projekte mit AVR-Assembler gemacht hatte und
das AVR-Tutorial mir sehr gut geholfen hat, würde ich auch diesmal
wieder Assembler wählen. Mein Programm wäre dann nichts weiter als
eine Schleife, die andauernd Wandler ausließt, Daten in den Dezimal-
zahl-String konvertiert und diesen dann auf dem Display ausgibt.
Danach ein Einsekundendelay und alles wieder von vorne.
Langfristig würde ich aber lieber wieder auf irgendeine Hochsprache
wechseln, weil ich es in Assembler irgendwie nicht schaffe,
strukturiert zu programmieren. Am liebsten wäre mir ja Pascal.
Aber das gibt es für die AVRs ja afaik nicht. :(
So, wieder bei der Arbeit...
ich schicke euch dann meine Bachelorarbeit, wenn ich in knapp 3 Monaten
damit fertig sein muss (soviel zum Thema 3-4 Monate Einarbeitung)
@Gast (Gast): Der Controller soll den Beschleunigungswert (X, Y und Z)
lesen. Vorab werden 3 Wertebereiche (Lage, Ruhe und Panik) eingestellt
und bei Überschreitung der Bereiche (z.B. 0,4G - 1,0G) ein Alarm
ausgelöst.
Es handelt sich hierbei um I²C (2-Wire) und der Beschleunigungssensor
ist schon in einer komplexen Schaltung integriert. Zum Glück sind in der
Schaltung schon LEDs vorhanden, womit ich mich mal herangetastet habe
und natürlich auch ein "Blinklicht" erstellt habe. Dies hilft mir
allerdings nicht mit der Ansteuerung des BMA020, sondern nur um zu
wissen wie man Ports anspricht.
Yannick Simon schrieb:
> euch dann meine Bachelorarbeit,
Das war jetzt unklug :-)
> wenn ich in knapp 3 Monaten> damit fertig sein muss (soviel zum Thema 3-4 Monate Einarbeitung)
Mit einer Bachelorarbeit von der du keine Ahnung hast, wie man das
realisiert, beeindruckst du hier niemanden. Wir sind Techniker. Für uns
zählt nur, was einer kann und was er nicht kann und nicht welchen Titel
er hat. Von einem Bachelor, der sich so ausdrückt wie du und in I2C
nicht selbsttätig einarbeiten kann, halten wir (*) nicht viel. Wieder
ein Bachelor mehr, der von der FH kommt, und dem man in der Arbeit erst
mal die Grundlagen beibringen muss. Gerade von einem Bachelor erwarte
ich nämlich, dass er sich das selber beibringen kann. Noch dazu, wenn er
dazu 3 Monate Zeit hat.
Edit:
(*) Mit ist klar, dass ich nicht für die Gesamtheit der regelmässigen
Forenantworter schreibe. Bei Bedarf bitte 'wir' durch 'ich' ersetzen.
Mooooment,
ich wollte gewiss nicht damit prahlen, sondern lediglich sagen, dass ich
nur noch 3 Monate dafür zeit habe und mir keine Einarbeitungszeit von 3
Monaten leisten kann.
Man lernt während eines Studiums zu vielen verschiedenen Themen was
(dies geschieht aber eher oberflächlich). Klar ist, dass ich mich mit
einem Semester Mikrocontroller nicht so gut auskennen kann wie ihr (die
jahrelange Erfahrung habt).
Ja, da kommt wieder PISA ins Gespräch... Nun ist es so, wenn man von der
Schule kommt und dann in die Berufswelt einsteigt hat man auch wenig
Ahnung und nur weil ich meinen Bachelor mache heißt das nicht, dass ich
mich in jedem elektronischen Bereich bestens auskenne, aber ich denke,
dass man das auch von niemandem erwarten kann. Ich schätze, dass auch Du
(K. Buchegger) am Anfang erst einmal eingelernt werden musstest. So ist
der Lauf der Dinge...
Ich wollte gerne nach meinem Studium in die Materie eindringen und daher
hat mich diese Bachelorarbeit interessiert. Ich befasse mich sozusagen
zum ersten mal genauer mit MCs und deren Funktion und dies ist für mich
eine Herausforderung!
Es ist schade, dass einem hier nur Kritiken gemacht werden, anstatt ihm
ein wenig konstruktiv zu helfen (wofür ein Forum eigentlich da sein
sollte?!). Aber ich will hier keinem Vorwürfe machen. Ihr habt ja schon
genug meine Inkompetenz zu Beweis gestellt.
Es geht nicht darum, ob du sich schon super auskennst. Es geht um die
Fähigkeit sich selbstständig in ein Thema einzuarbeiten und zumindest
sich erstmal die Grundlagen selber durchliest.
Frage: Hast du z. B. das AVR-Tutorial und das GCC-Tutorial schonmal
durchgearbeitet? Dann würde dir auf einmal alles viel klarer werden.
Yannick S. schrieb:
> Es ist schade, dass einem hier nur Kritiken gemacht werden, anstatt ihm> ein wenig konstruktiv zu helfen (wofür ein Forum eigentlich da sein> sollte?!).
Du bist noch nicht lange im Forum, daher ist das OK.
Aber wenn mir jemand mit der Aufgabenstellung kommt "Ich will einen
Sensor über eine serielle Schnittstelle auslesen" und alles was er
selber bisher rausgefunden hat ist, wie man die Schnittstelle auf
Eingang schaltet, dann ist das nicht gerade viel.
Arbeite dich weiter ein, finde raus wie das geht, such im Web nach I2C
Code (oder welche Schnittstelle du auch immer von diesem Sensor benutzt)
und wenn du konkrete Fragen zum Thema hast dann helfen wir gerne weiter.
Aber auf die Frage "Ich mach in 3 Monaten meinen Abschluss als Chirurg
und soll jetzt eine Blinddarmoperation machen. Wie rum muss ich das
Skalpell halten?" darfst du dir auch in einem hilfsbereiten Forum keine
grossen Hoffnungen auf sinnvolle Antwort machen.
Es gehört auch zum Berufsbild eines
Informatikers/Programmierers/Softwareentwicklers, dass er ein wenig
abschätzen kann, wo die Grenzen liegen und welche Aufgabenstellung für
ihn in welcher Zeit machbar ist. Interesse zu haben ist super, aber im
Berufsleben ist das zuwenig. Du kannst deinem zukünftigen Chef auch
nicht einfach sagen: "Ich interessiere mich sehr für Quantenphysik. Wie
war das nochmal? Kraft ist Weg mal Geschwindigkeit, oder wie? Da such
ich mir doch heimlich glatt ein Forum, welches mir die Grundlagen der
Physik aufschreibt, damit ich in 3 Monaten was für sie habe"
Karl heinz Buchegger schrieb:
> Aber auf die Frage "Ich mach in 3 Monaten meinen Abschluss als Chirurg> und soll jetzt eine Blinddarmoperation machen. Wie rum muss ich das> Skalpell halten?" darfst du dir auch in einem hilfsbereiten Forum keine> grossen Hoffnungen auf sinnvolle Antwort machen.
Es wäre dennoch nett, wenn Du ihm vor der Operation sagen würdest, dass
er die scharfe Kante in Richtung des zu Operierenden halten soll bevor
er sich selber weh tut :)
@Klaus: AVR-Tutorial und GCC-Tutorial habe ich schon gelesen (eher
überflogen..), keine Antwort gefunden und daher hier gelandet.
Yannick S. schrieb:
> dass man das auch von niemandem erwarten kann. Ich schätze, dass auch Du> (K. Buchegger) am Anfang erst einmal eingelernt werden musstest.
Irrtum.
Ich stamme noch aus einer Programmierer-Generation, die ohne Web
aufgewachsen ist, sich nächtelang Handbücher reingezogen hat,
stundenlang Codevariationen durchprobiert hat und jeden Fetzen Code
studiert hat, den man nur irgendwo kriegen konnte (und das war nicht
viel).
Und in meinem Studium war das ganz normal. Da wurde von allen erwartet,
dass sie selbsttätig den Vorlesungsstoff als Anregung auffassen, die
Uni-Bibliothek heimzusuchen, sich dort weiter einzulesen und den
einzigen "Grossrechner" nächtens mit 3 Minuten Rechenzeit zu belegen
(mehr kriegte man im Batchbetrieb nicht) um das durchzuprobieren.
>Ich stamme noch aus einer Programmierer-Generation, die ohne Web>aufgewachsen ist
:)
Irgendwie beschleicht mich immer mehr der Eindruck, dass heutzutage im
Studium der E-Technik und Informatik viel zu wenig auf die Grundlagen
eingegangen wird. Bei mir war Assembler noch eine Pflichtveranstaltung,
aber auch da gab es schon jede Menge Leute, die die Meinung vertraten
das bräuchte man doch garnicht.
Bachelor? Das ist doch so ähnlich wie Vordiplom. Falls Du nicht bei
einem der Großkonzerne landen willst oder als Laborhelfer, mach den
Master hinterher, das ist dann wenigstens halbwegs wie Diplom, nur
leider ohne eingeständiges Arbeiten gelernt zu haben.
Nun aber zum Thema: Hast Du ansatzweise verstanden wie IIC funktioniert?
Wenn nicht, dann das entsprechende Kapitel im Datenblatt mal ganz genau
durchlesen und ggf. mal Tante Google fragen, die hat da auch noch mehr
zu dem Thema.
Moin Leute,
ich versuche auch den BMA020 auszulesen. Leider bis jetzt ohne Erfolg.
Ich lese für die z-Beschleunigung immer eine 0.
Vielleicht kann einer von den Profis mal ein Auge auf den Code werfen?
Danke!
Daniel schrieb:> Moin Leute,>> ich versuche auch den BMA020 auszulesen. Leider bis jetzt ohne Erfolg.> Ich lese für die z-Beschleunigung immer eine 0.
Kannst du andere Register korrekt auslesen? Wie zb die Chip Id im
Register 0
Hallo und danke für die Antwort.
Ich habe es ausprobiert und ich bekomme auch im Register 1 eine Null.
Ich denke ich hab das Ding schon kaputt gespielt.
Wenn ich aber zum Beispiel Register 2 anspreche springt er zwischen 0,
128 und 192 hin und her.
Aus dem Register 15 z.B schickt er mir konstant eine 2.
Interruptpin: unbeschaltet
MISO <-> SDO
MOSI <-> SDI
SCK <-> SCK
SS <-> CSB
Ist da noch was zu machen?
Daniel schrieb:> Interruptpin: unbeschaltet> MISO <-> SDO> MOSI <-> SDI> SCK <-> SCK> SS <-> CSB
Ich glaub das ist was falsch:
MasterInSlaveOut gehört an den SerialDataIn vom Sensor
MOSI an SDO
Glaub ich zumindest :-)
Karl heinz Buchegger schrieb:>> Mein Problem: Was muss man dem Mikrocontroller sagen, dass er mir alle>> Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem>> File)?>> Wie ich derartige Redereien hasse. Sie kommen meistens von den Leuten,> die 0 Ahnung davon haben, wie so eine CPU funktioniert oder worums beim> Programmieren überhaupt geht.
DU bist auch so ein CPU ... erstmal selber lernen, dann andere maßregeln
Lehrmann Michael schrieb:> Karl heinz Buchegger schrieb:>>> Mein Problem: Was muss man dem Mikrocontroller sagen, dass er mir alle>>> Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem>>> File)?>>>> Wie ich derartige Redereien hasse. Sie kommen meistens von den Leuten,>> die 0 Ahnung davon haben, wie so eine CPU funktioniert oder worums beim>> Programmieren überhaupt geht.>> DU bist auch so ein CPU ... erstmal selber lernen, dann andere maßregeln
Was genau willst du mir jetzt (über 1 Jahr danach) mitteilen?
Hey!
Ist zwar schon ne Weile her aber wollt auch mal was dazu sagen...
@ Daniel: Hast du das Problem gefunden? Habe ein änliches mit dem
gleichen Sensor....Meinen Code habe ich nicht gepostet, weil ich gestern
erst ngefangen hab den Sensor auszuprobieren. Und noch will ich selbst
probieren und suchen sonst wird das eh nie was, wenn ich nichtmal
versteh was ich selbst schreib.....
An den Rest von euch. Nicht alle Bachelor sind so ich hab derzeit auch
meine Thesis in dem Themengebiet (scheint irgendwie bei Konzernen recht
beliebt zu sein) und ich hatte Anfangs auch keine Ahnung.
Muss aber auch zugeben, dass ich blauäugig ran gegangen bin und nach dem
Tutorial das Forum befragt hab. Durch langes rumprobieren hab ich aber
gemerkt, dass es eher klappt wenn man sich einfach auf den A**** setzt
und das System versucht zu verstehen.
Ein Pro bin ich noch lange nicht (nicht mal ansatzweise) aber es macht
immer mehr Spaß an den Teilen zu arbeiten/programmieren.
Zum Thema Vorlesungen und Studium....
Wir hatten uC Vorlesung und haben in Assembler angefangen.
war aber nicht so der Bringer. ich hab in den letzten Wochen sehr viel
mehr gelernt als in nem halben Jahr Vorlesung.
Und nur als Klarstellung der Bachelor entspricht NICHT dem Vordiplom!
Bei mir an der Hochschule wurde lediglich das erste Praxissemester weg
gelassen und im 7. Semester eine Aufteilung gemacht: 50% Vorlesung
geblockt auf die ersten 3 Monate und 50% Abschlussarbeit.
Bin von dem ganzen Teil nicht begeistert da eine Abschlussarbeit in 3
Monaten mehr als unrealistisch ist. Denn egal welches Thema braucht man
mindestens 1-2 Monate Einarbeitung.
So und zu guter Letzt....
Mal generell Danke an die Leute die im Forum ihr fachliches Wissen zur
Verfügung stellen. Die Suche ist (durch manchmal schlecht definierte
Themen) gelegentlich umständlich aber dennoch sehr hilfreich!
Grüße Rapha
Dest schrieb:> Hey!>> Ist zwar schon ne Weile her aber wollt auch mal was dazu sagen...>> @ Daniel: Hast du das Problem gefunden? Habe ein änliches mit dem> gleichen Sensor....Meinen Code habe ich nicht gepostet, weil ich gestern> erst ngefangen hab den Sensor auszuprobieren. Und noch will ich selbst> probieren und suchen sonst wird das eh nie was, wenn ich nichtmal> versteh was ich selbst schreib.....
Ich hab jetzt den vorher geposteten Code nicht vollständig auseinander
genommen.
Aber bei SPI gibt es eine böse Falle: den /SS Pin
Aus dem Datenblatt des Mega16
1
When the SPI is configured as a Master (MSTR in SPCR is set), the user
2
can determine the direction of the SS pin.
3
4
* If SS is configured as an output, the pin is a general output pin
5
which does not affect the SPI system. Typically, the pin will be
6
driving the SS pin of the SPI Slave.
7
8
* If SS is configured as an input, it must be held high to ensure
9
Master SPI operation. If the SS pin is driven low by peripheral
10
circuitry when the SPI is configured as a Master with the SS pin
11
defined as an input, the SPI system interprets this as another
12
Master selecting the SPI as a Slave and starting to send data to it.
Mit anderen Worten
Entweder du konfigurierst den /SS Pin als Output, oder aber du stellst
sicher, dass der Pin auf High light (Pullup einschalten). Tust du das
nicht, dann arbeitet SPI nicht. Zumindest nicht als Master.
Dest schrieb:> Bin von dem ganzen Teil nicht begeistert da eine Abschlussarbeit in 3> Monaten mehr als unrealistisch ist. Denn egal welches Thema braucht man> mindestens 1-2 Monate Einarbeitung.
Dann muss man halt etwas mehr Gas geben. Ich weiß, das klingt jetzt
überheblich ist aber nicht so gemeint. Eine Abschlußarbeit ist halt mal
eine extreme Zeit.
Als ich meinen Dipl. gemacht habe war die Diplomarbeit auf exakt 3Monate
begrenzt. Und wenn du angefangen hast, dann wurde spätestens nach 1
Woche das auch offiziell gemeldet. Überziehen war nicht.
Ich habe mich damals in die Thermodramatik einew Dieselmotors
einarbeiten müssen und nebenbei in C und in ein Unixähnliches
Rechnersystem. Ich kam damals von der Turbopascal Schiene und dem PC mit
DOS.
Das ging auch aber Nachtschichten gabs durchaus auch mal.
Ach so für die Ausarbeitung habe ich auch mal schnell noch LaTeX
gelernt, und damals hat auf meinem PC-XT die 100 Seiten-Übersetzung von
Latex 5-10 Minuten gedauert.
Ach so ich war und bin KEIN Überflieger, es geht also wirklich.
So jetzt haben wir den alten Thread genug gequält.
Viel Spass und Erfolg noch allen bei Ihren Abschlussarbeiten