Forum: Mikrocontroller und Digitale Elektronik Avr Atmega16 / Pins mit Timer


von Benjamin H. (benjamin_h)


Lesenswert?

Hallo,

ich würde gerne einen Atmega 16 programmieren, im Studium habe ich 
visual basic gelernt, aber nun wirds für mich schwierig. Ich möchte den 
Abstand zwischen zwei analogen Eingangssignalen messen und zeitverzögert 
einen Ausgangspin kurzzeitig schalten. Kann mir jmd. helfen?

Mit freundlichen Grüssen

Hoowie

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Hoowie schrieb:
> Hallo,
>
> ich würde gerne einen Atmega 16 programmieren, im Studium habe ich
> visual basic gelernt, aber nun wirds für mich schwierig. Ich möchte den
> Abstand zwischen zwei analogen Eingangssignalen messen und zeitverzögert
> einen Ausgangspin kurzzeitig schalten. Kann mir jmd. helfen?


dafür gibts Tutorien

AVR-Tutorial        Assembler
AVR-GCC-Tutorial    C

Beim Roboternetz gibt es auch ein BASCOM Tutorial, welches für dich 
vielleicht angebrachter ist.

Wenn du dich für C entscheidest, dann wäre zumindest ein Reinschnuppern 
in ein allgemeineres C-Tutorial angebracht.


Wenn du dann deine ersten Schritte in der Progammierung gemacht hast, 
dann kann man sich über die konkrete Aufgabenstellung unterhalten. Aber 
im Moment macht es wenig Sinn, sich über die Probleme bei der 
Überquerung des Hindukusch zu unterhalten, wenn du erst mal Autofahren 
lernen musst.

von Benjamin H. (benjamin_h)


Lesenswert?

Also zuerst muss ich den Mikrocontroller deklarieren, danach die Anzahl 
der overflows an einem deklarierten Pin zählen, diese aus der gegebenen 
Frequenz, als prozentualen Zeitintervall interpretieren. Einen 
deklarierten Ausgangspin mit Frequenzabhängiger Anzahl von 
Ausgangssignalen einen Zeitintervall ohne Aktivität schalten. 
Anschliessend einen Zeitintervall mit "Saft" auf einen Pin legen.
Aus C werde ich im Moment noch nicht schlau, aber vlt. macht mich jmd. 
schlau?

Mit freundlichen Grüssen

B.Hoowie

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Hoowie schrieb:
> Also zuerst muss ich den Mikrocontroller deklarieren, danach die Anzahl
> der overflows an einem deklarierten Pin zählen, diese aus der gegebenen
> Frequenz, als prozentualen Zeitintervall interpretieren. Einen
> deklarierten Ausgangspin mit Frequenzabhängiger Anzahl von
> Ausgangssignalen einen Zeitintervall ohne Aktivität schalten.
> Anschliessend einen Zeitintervall mit "Saft" auf einen Pin legen.

Wenn du mich sehen könntest, würdest du mich mit großen AUgen und 
gerunzelter Stirn vor dem Monitor sitzen sehen.
Und du könntest hören, wie ich "WTF hat das alles mit 'Ich möchte den
Abstand zwischen zwei analogen Eingangssignalen messen' zu tun?"

von Benjamin H. (benjamin_h)


Lesenswert?

ich muss ja irgendwie die Anzahl der betätigten Signale und auch die 
dazwischen, als Zahl sichbar machen und zurück zur Zeit rechnen. Das 
ganze in umgekehrt für den Ausgang =)

Mit freundlichen Grüssen

B.Hoowie

von Joe S. (bubblejoe)


Lesenswert?

Benjamin Hoowie schrieb:
> Ich möchte den
> Abstand zwischen zwei analogen Eingangssignalen messen und zeitverzögert
> einen Ausgangspin kurzzeitig schalten. Kann mir jmd. helfen?

Was heißt denn Messen der analogen Signale? Du brauchst ja eine 
Schwelle, bei der du messen willst. Welchen Bereich deckt das analoge 
Signal ab?
Für Zeiten bedienst du dich mit einem Timer.

von Benjamin H. (benjamin_h)


Lesenswert?

Das Signal steigt an und fällt wieder ab, also zählen ist schöner 
formuliert. Das Signal variiert von einem Magnetschalter, also ich muss 
einen Mittelwert bilden.

Mit freundlichen Grüssen

B.Hoowie

von Karl H. (kbuchegg)


Lesenswert?

Vielleicht überlegst du es dir ja noch und fängst erst mal damit an, zu 
erzählen, was denn eigentlich die Aufgabenstellung ist anstatt zu 
erzählen, wie du sie zu lösen gedenkst.

Denn im Moment hab ich eher das Gefühl, dass du alle mit deiner Wortwahl 
auf völlig falsche Fährten lockst.

von Benjamin H. (benjamin_h)


Lesenswert?

Ich möchte einen bürstenlosen Elektromotor ansteuern.

Mit freundlichen Grüssen

B.Hoowie

von Spess53 (Gast)


Lesenswert?

Hi

>Ich möchte einen bürstenlosen Elektromotor ansteuern.

Und das hältst du für ein geeignetes Anfängerprojekt?

MfG Spess

von Benjamin H. (benjamin_h)


Lesenswert?

Joa, die Zeit muss sein =)
Ich bin vom Maschinenbau Hochschule Bremen, da muss ein bischen Schwung 
rein.

von Spess53 (Gast)


Lesenswert?

Hi

>Joa, die Zeit muss sein =)

Wenn die Zeit da ist, dann fang mal mit dem Datenblattlesen an.

MfG Spess

von Benjamin H. (benjamin_h)


Lesenswert?

Das kenne ich schon, mir fehlt der praktische Umgang. In visual basic 
habe ich nur mit Tastatureingabe programmiert, ohne Pins, aber mit 
Grafik. Im Avr Studio32 habe ich einmal ein C Testprogramm 
übertragen.Das ist für mich fremd. Kann man das in C nicht so einfach 
ausdrücken? Das ist ja eine Hochsprache, oder sollte ich das doch in 
bascom machen?

Mit freundlichen Grüssen

B.Hoowie

von Benjamin H. (benjamin_h)


Lesenswert?

Kann ich die timerbefehle aus dem Datenblatt sowie die Pins auch mit in 
ein Visual basic Programm integrieren, sodass ich nicht immer umlernen 
muss? Kann ich mit if...=True in den Registernamen speichern und ist 
nach dem lesen etwas im Speicher? Beim Löschen von Registern muss ich 
den Registernamen auch aus dem Datenblatt entnehmen, stimmts? Mir fehlt 
die Erfahrung als Bestätigung.

Mit freundlichen Grüssen

B.Hoowie

von STK500-Besitzer (Gast)


Lesenswert?

Benjamin Hoowie schrieb:
> Kann ich die timerbefehle aus dem Datenblatt sowie die Pins auch mit in
> ein Visual basic Programm integrieren, sodass ich nicht immer umlernen
> muss?
Wenn dein VB-Compiler Maschinencode für den ATmega16 erzeugen kann, dann 
geht das, ansonsten nicht.

> Kann ich mit if...=True in den Registernamen speichern und ist
> nach dem lesen etwas im Speicher?
Und das heisst im Klartext, was?

> Beim Löschen von Registern muss ich
> den Registernamen auch aus dem Datenblatt entnehmen, stimmts? Mir fehlt
> die Erfahrung als Bestätigung.

Kau das Tutorium durch, dann nimmst du deine Fragen und formulierst sie 
verständlich.

von Spess53 (Gast)


Lesenswert?

Hi

>Kann ich die timerbefehle aus dem Datenblatt sowie die Pins auch mit in
>ein Visual basic Programm integrieren, sodass ich nicht immer umlernen
>muss?

Wahrscheinlich nicht. Außerdem bezweifle ich, das dein Visual Basic ein 
Hex-File für den ATMega erzeugen kann.

Womit willst du den ATMega16 eigentlich programmieren?

MfG Spess

von praktiker (Gast)


Lesenswert?

Benjamin Hoowie schrieb:
> den Registernamen auch aus dem Datenblatt entnehmen, stimmts? Mir fehlt
> die Erfahrung als Bestätigung.

Quatsch nicht soviel. Besorg dir einen Programmer und einen µC. 
Anfängerthreads gibt es hier genug im Mikrocontroller.net in denen HW 
empfohlen wird.

Vergiss Visual Basic. BASCOM ist anders und µC programmieren sowieso 
anders als PC Programme erstellen.

Mach zu Anfang die einfachsten Übungen mit LED blinken lassen und lies 
das Datenblatt zum µC. Erfahrung kriegst du nur durch tun.

von Benjamin H. (benjamin_h)


Lesenswert?

> Kann ich mit if...=True in den Registernamen speichern und ist
> nach dem lesen etwas im Speicher?
Und das heisst im Klartext, was?


Muss ich den selber löschen? Muss ich neue Speicher Adressen angeben, 
sind die mit Index? Überschreibt sich der Flashspeicher?

Danke

B.Hoowie

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Hoowie schrieb:
>> Kann ich mit if...=True in den Registernamen speichern und ist
>> nach dem lesen etwas im Speicher?
> Und das heisst im Klartext, was?
>
>
> Muss ich den selber löschen? Muss ich neue Speicher Adressen angeben,
> sind die mit Index? Überschreibt sich der Flashspeicher?

Wie praktiker schon sagte.
Besorg dir einen Programmer, besorg dir ein Development Board und fang 
an ein Tutorial durchzukauen.

Dein VB kannst du dabei vergessen. Wenn du bei BASCOM bleibst, werden 
dir zwar die Wörter bekannt vorkommen und einiges wird gleich sein. 
Vieles ist aber auch ganz anders. De facto fängst du in dem Sinne bei 0 
an, in dem ein Spanisch-Schüler bei 0 anfängt, der schon Italienisch 
kann.


Deine Fragen ..... egeben ....... keinen ........ Sinn.
Die Wörter sind schon bekannt und auch sinnvoll. Aber die 
Zusammenstellung zum ganzen Satz macht keinen Sinn. Daher: spring ins 
kalte Wasser. Vor einem halben Jahr ab heute gerechnet wird das sowieso 
nichts mit deinem BLDC Motor. Also kannst du ruhig auch erst mal 2 
Wochen investieren, um dich mit deiner Entwicklungsumgebung vertraut zu 
machen und ein Tutorium durchzuarbeiten.

von Benjamin H. (benjamin_h)


Lesenswert?

Okay, wenn ich muss dann muss ich.

Danke vielmals

Der Benni

von Bernadette (Gast)


Lesenswert?

Wenn du die Beispiele auf dieser Seite alle durch hast, dann kannst du 
anfangen dich mit einem BLDC Motor zu beschäftigen.

http://ups.bplaced.net/AtmegaProjekt/atmega_projekte.htm

von oldmax (Gast)


Lesenswert?

Hallo Benjamin
Es ist schon ein wenig kompliziert, ein Programm zu schreiben, aber wenn 
man seine Gedanken nicht ordnen kann, dann wird's überhaupt nix. Erst im 
fünften Post schreibst du, was du willst. Was erwartest du von uns ?
Das hier ist doch keine Quizsendung. Wenn du überhaupt eine Chance beim 
Programieren haben willst, lerne erst einmal eine Aufgabenstellung zu 
beschreiben. Nur so kannst du das Gesamtkonzept in einzelne Teilaufgaben 
gliedern und eine Struktur festlegen. Die Programmiersprache ist doch 
das geringste. Alle Befehle lassen sich irgendwo nachlesen und wenn du 
bereits Erfahrungen in VB hast, dann sollte dir klar sein, wie es geht. 
Aber ich hab das Gefühl, man hat dir vielleicht mal einen Bubblesort 
abverlangt. Und vielleicht mal ein paar Objekte auf eine Form ziehen 
lassen.
Sicherlich ist "C" gewöhnungsbedürftig, aber nicht unlernbar. Doch ohne 
strukturiertes Denken wirst du in jeder Sprache große Schwierigkeiten 
haben.
Daher mein Tip:
Entweder du beginnst mit Experimenten und fragst dann gezielt nach einem 
Problem, oder du läßt es und wirst mit anderen Dingen, die dir mehr 
liegen glücklich.
Gruß oldmax

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.