Forum: Mikrocontroller und Digitale Elektronik Benötige Hilfe beim programmieren eines Microkontrollers!


von Phil P. (mr3)


Lesenswert?

Hallo Zusammen.
Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem 
Programmieren eines Mikrocontrollers befassen. Da ich kein Informatiker 
bin und unsere Vorkentnisse diesbezüglich sehr sperrlich sind tue ich 
mich hierbei schwer und benötige Hilfe von erfahrenen, netten Menschen 
=)

Aufgabenstellung: Drehzahlsteuerung eines DC Motors mittels PWM über 
Bluetooth. Die Einstellung soll über einen Poti erfolgen.

Wir arbeiten mit einem Atmega328 und programmieren diesen im Atmel 
Studio.

Registerprogrammierung ist hier ein großer Punkt welchen ich mir zum 
Teil aus Tutorials und Videos rausgezogen habe aber dennoch nicht 
verstehe. Ich finde einfach nichts, was mir dieses Prinzip einfach und 
auf meinem Niveau verständlich erklärt. Der Gesamtaufwand dieses 
Projektes ist vom Aufwand her zwischen Seminararbeit (6. Semester) und 
Bachelor Thesis. Um meine Verzweiflung verständlich zu machen -> wir 
sind im 3. Semester...

Wir mussten schon selbst eine Platine entwerfen und nun mit dem 
Atmega328 arbeiten. Kommentare wie "das ist doch einfach wenn man sich 
ein paar Tutorials anschaut"," ist doch nur copy and paste arbeit" 
bringen uns hier leider nicht weiter und auch wenn der Programmier Teil 
nichtmal benotet wird würde ich dennoch gerne verstehen was da passiert.

Poti wird angeschlossen an ADC6 also PIN 19, dieser muss als Eingang 
definiert werden. (Eigentlich nur aktiviert da ja automatisch Eingang?).

PD5 also PIN 9 soll als Ausgang definiert werden. An diesem hängt das 
Bluetoot Modul HC05.

Was ich bisher mühselig zusammenklamüsert habe ist:
---------------------------------------------------

#define F_CPU 8000000UL  //Taktzeit vom CPU
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#define POTI 19 //kann man so die Pins hier oben definieren ?
#define Motor 9 //-"-

int main (void)
{
  TCCR0A = (1<<WGM00) | (1<<COM0A1); //Register -> fast pwm modus
                                                         anschalten
  TCCR0B = (1<<CS02); //Register -> prescaler/256

  sei(); //Interrupts einschalten

  DDRD=0xFF; //Im Register die D- Pins einschalten
  PORTD=0b1001; //Den Pin 9 als ausgang definieren ???
  //oder PORTD=0x00; heißt D-Pins als Ausgänge definieren?
  //müsste man dann aber nicht die Pins auf 1 und nicht auf 0 setzen?


  while(1)
  {
    //Poti abfragen?
  }
}

---------------------------------------------------

Ja man sieht ich bin eine Informatikpfeiffe, das weiß ich selbst. Leider 
hab ich nicht annähernd die Zeit die ich bräuchte um mich da mühsam 
einzuarbeiten, deswegen bin ich für jeden Tipp Mega dankbar!

Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig. Das habe 
ich nur einmal bei Arduino/IDE gesehen und wer nun behauptet das wäre 
leicht übertragbar -> für mich niiiiicht.

Vielen Dank und beste Grüße

von Axel S. (a-za-z0-9)


Lesenswert?

Phil P. schrieb:
> Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem
> Programmieren eines Mikrocontrollers befassen. Da ich kein Informatiker
> bin und unsere Vorkentnisse diesbezüglich sehr sperrlich sind tue ich
> mich hierbei schwer und benötige Hilfe von erfahrenen, netten Menschen

Gegenfrage: bist du ein Soziopath?

Wenn du an einer Hochschule studierst, ist die Wahrscheinlichkeit recht 
hoch, daß es da Informatiker (oder zumindest informatisch weniger 
minderbegabte Studenten) gibt, die dir helfen könnten. Schau dich doch 
einfach mal um.

Räumliche Nähe (vulgo: die Möglichkeit, sich von Angesicht zu Angesicht 
zu treffen) ist üblicherweise ein Vorteil. Außer natürlich, wenn du ein 
Wiedergänger von Hannibal Lector (oder Freddy Krüger?) bist.

von michael_ (Gast)


Lesenswert?

Phil P. schrieb:
> Hallo Zusammen.
> Im Rahmen eines Projektes an unserer Hochschule muss ich mich mit dem
> Programmieren eines Mikrocontrollers befassen.

Phil P. schrieb:
> Wir mussten schon selbst eine Platine entwerfen

Dein Widerwille ist schon enorm!
Beiß dich mit aller Macht durch oder gib auf.

von Roland F. (rhf)


Lesenswert?

Axel S. schrieb:
> Gegenfrage: bist du ein Soziopath?

Eine solche "Gegenfrage" einer Person zu stellen, die man nicht kennt 
und von der man nichts weiß, ist eine bodenlose Unverschämtheit.

rhf

von Phil P. (mr3)


Lesenswert?

Da freut man sich über zwei schnelle Antworten und dann sowas...

Natürlich gibt es an der Hochschule informatisch begabtere Studenten, da 
diese aber in einem ausgelagerten Standort sind und nichtmal in meiner 
Fakultät gestaltet sich dies etwas schwierig ;)

Ich weiß ja nicht was Ihr so studiert hat aber da man in einem 
Ingenieurstudium aus Prinzip schon zu wenig Zeit hat und wenn sogar 
unsere Profs sagen :" fragt nette Leute die Ahnung haben" dachte ich ich 
versuche mein Glück. Leider habe ich hier bisher noch keine angetroffen.

Ob es sinnvoll ist (in einem neuen Studiengang) den Drittsemestern ein 
Projekt zuzuweisen welches beinahe an eine Bachelor Thesis heranreicht 
ist das eine aber soll ich nun auch das Rad neu erfinden?

Wenn ich nicht das Ziel hätte mich durchzubeißen, wäre ich dann hier?

von Phil P. (mr3)


Lesenswert?

Roland F. schrieb:
> Eine solche "Gegenfrage" einer Person zu stellen, die man nicht kennt
> und von der man nichts weiß, ist eine bodenlose Unverschämtheit.

Ich nehme es nichtmal persönlich, das sagt eigentlich mehr über Ihn als 
über mich aus.
Genaugenommen habe ich auch gar keine Zeit mich über sowas zu ärgern.

Sitze auch aus Spaß Freitag Abend/Nacht vorm Lappi und durchstöbere 
Foren welche Themen meines absoluten Hasskurses beinhalten

: Bearbeitet durch User
von Roland F. (rhf)


Lesenswert?

Hallo Phil,

> Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig.

Es ist schwierig dir einen Rat zu geben, der Hinweis von Axel, dich mal 
für eine Hilfestellung an der Uni umzuhören ist sicherlich sehr 
sinnvoll.
Du wirst dich aber parallel dazu auch selbst mit der "Materie" 
beschäftigen müssen. Ein guter Einstieg sind das AVR- und das 
AVR-GCC-Tutorial in diesem Forum:

https://www.mikrocontroller.net/articles/AVR-Tutorial
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Lese dich da mal ein und wenn unüberwindbare Schwierigkeiten auftreten, 
wirst du hier sicherlich Hilfe finden.

rhf

von Zeno (Gast)


Lesenswert?

@TO
Also wenn man Deine Posts liest, dann muß man schon den Eindruck 
bekommen, daß Dir Dein Studium eher Last als Freude ist.

Ich habe selbst studiert und kann mir deshalb auch nur schwer vorstellen 
das man als Student so gar keine Zeit hat. Ich für meinen Teil hatte als 
Student genügend Zeit.

Phil P. schrieb:
> Sitze auch aus Spaß Freitag Abend/Nacht vorm Lappi und durchstöbere
> Foren welche Themen meines absoluten Hasskurses beinhalten

Ich glaube Du mußt Deine Einstellung grundlegend ändern. Wenn Du mit 
dieser Einstellung an das Fach heran gehst wird das nichts. Es gibt in 
einem Studium nun auch mal Fächer die man nicht so mag, aber da muß man 
eben durch.

Das Suchen in Foren nach fehlendem Wissen ist der falsche Weg. Das 
Grundwissen muß man sich erst einmal selbst erarbeiten. Dazu kann man 
natürlich im Internet nach geeigneten Tutorials suchen und wird da 
sicher auch fündig, auch im µC.net.
Ich würde allerdings für den Anfang ein gutes Fachbuch bevorzugen. Das 
kann man nämlich neben den Laptop legen, so das man mit dem Laptop die 
Beispiele auch gleich nachvollziehen kann und wenn man das Buch sein 
eigen nennt, kann man sich dort auch noch Notizen machen. Das 
Internettutorial verleitet auch viel zu sehr zu Copy&Paste, wobei man 
nichts lernt.
Wenn man sich Grundwissen erarbeitet hat, dann sollte man sich im 
nächsten Schritt erst einmal ein eigenes kleines Projekt (nicht zu 
kompliziert) ausdenken und umsetzen. Das schult ungemein.
Wenn dann die Grundlagen sitzen, dann ist ein Forum sicher eine gute 
Quelle für den Gedankenaustausch.
In diesem Forum wird Dir keiner Deine Aufgaben lösen, das mußt Du schon 
selber tun.

Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu 
machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache 
investieren müssen.

von Phil P. (mr3)


Lesenswert?

Zeno schrieb:
> Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu
> machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache
> investieren müssen.

Genau da liegt das Problem, ich habe keine Zeit.
- Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren 
und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11.
-Je nach Studiengang wird das Studium immer umfangreicher weil es mehr 
und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor 
30 Jahren und Heute).
-Mein Studiengang (deswegen sagte ich neu) ist ein Zusammenschluss aus 
zwei verschiedenen Studiengängen die es nun nichtmehr gibt.  Gefühlt 
studieren wir zwei Studiengänge parallel (Wir sind die ersten bei denen 
das so ist) und dann habe ich definitiv nicht die Zeit noch einen 
dritten anzufangen. Im ersten Semester hatten wir regulär 50h+ 
Vorlesungen die Woche. Wir sind die Versuchskaninchen, kriegen gut auf 
den Deckel und bei unseren Nachfolgern sieht man schon einen 
deutlicheren Unterschied.

Deswegen war mein Ansatz auch nicht " schreibt mir einen vollständigen 
Code" sondern eher " gebt mir Tipps, gerne mit Verbesserungen und den 
Erklärungen wann da was passiert", da ich wenigstens grob verstehen 
möchte, was ich tue.

von Schukostecker (Gast)


Lesenswert?

Phil P. schrieb:
> Da ich kein Informatiker bin und unsere Vorkentnisse diesbezüglich sehr
> sperrlich sind tue ich mich hierbei schwer und benötige Hilfe von
> erfahrenen, netten Menschen =)

Bist du sicher, dass eine technische Ausbildung das Richtige für dich 
ist?

Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger 
Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit 
Interesse selbstständig  einzuarbeiten.

von Theor (Gast)


Lesenswert?

Phil P. schrieb:
> Zeno schrieb:
>> Löse Dich auch von dem Gedanken das Ganze mal so schnell nebenbei zu
>> machen. Du wirst bei Deinem Wissensstand sehr viel Zeit in die Sache
>> investieren müssen.
>
> Genau da liegt das Problem, ich habe keine Zeit.

Naja. Man kann mal so Deinen Code kommentieren.

> ... gebt mir Tipps, gerne mit Verbesserungen und den Erklärungen
> wann da was passiert"

Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B.
Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe 
Information nochmal wiedergeben und Du sie hier liest. Die eigentliche 
Aufgabe, dass aufzunehmen und zu verarbeiten lässt sich nicht umgehen.

Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da 
darum herum redest und das Fach nicht einfach nennst.


Gut finde ich, dass Du Code postest und Kommentare hinzufügt hast. Da 
kann man daran ansetzen: (Die folgenden Seitenzahlen beziehen sich auf 
das Datenblatt hier: 
ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with% 
20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf)


#define F_CPU 8000000UL  //Taktzeit vom CPU

Das ist nicht die "Taktzeit" sondern die "Taktfrequenz". Zwischen Zeit 
und Frequenz besteht zwar ein Zusammenhang, aber das ist nicht das 
selbe. Vielmehr bedeutet "Frequenz" ganz allgemein eine Anzahl von 
Ereignissen pro Zeiteinheit. Die Einheit ist 1/s. Die Einheit einer Zeit 
hingegen ist s.


#define POTI 19 //kann man so die Pins hier oben definieren ?

Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung 
ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler 
und der Atmel-IDE) nicht verwendet werden.


int main (void)
{
  TCCR0A = (1<<WGM00) | (1<<COM0A1); //Register -> fast pwm modus
                                                         anschalten
Und wozu?

  TCCR0B = (1<<CS02); //Register -> prescaler/256

Und wozu?

  sei(); //Interrupts einschalten
Wozu? Es sind keine Interrupt-Routinen definiert. Es sind keine 
Interruptquellen aktiviert. (Seite 84 ff.)

  DDRD=0xFF; //Im Register die D- Pins einschalten

"Eingeschaltet" d.h. mit Energie versorgt, sind die Pins immer, sobald 
der uC versorgt wird.  "DDR" bezeichnet ein Datenrichtungs-Register. 
(Seite 125) Die Bitpositionen korrespondieren mit einem Bit des Ein- 
Ausgabe-Ports. (Seiten 14, 18 und 124).
Was sind "D-" Pins? Klare Bezeichnungen verwenden.

  PORTD=0b1001; //Den Pin 9 als ausgang definieren ???

Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>.

Siehe oben, wegen der Nummerierung. Der Wert auf der rechten Seite 
entspricht der verwendeten Neun, was hier nicht anwendbar ist.
Tatsächlich werden hier die Bits Nummer 0 und Nummer 3 auf den Wert '1' 
gesetzt. Alle anderen auf '0'.

PORT ist das Datenregister. Die Bitpositionen korrespondieren mit je 
einem Bit des Ein-Ausgabeports. (Seiten 14, 18 und 124).

  //oder PORTD=0x00; heißt D-Pins als Ausgänge definieren?

Nein. Das ist oben mit dem setzen des Datenrichtungsregister DDR 
geschehen.

  //müsste man dann aber nicht die Pins auf 1 und nicht auf 0 setzen?
Diese Frage entfällt also.
PORT<x> setzt den tatsächlichen Ausgangspegel des Ports, falls er 
entsprechend mit dem DDR<x> auf Ausgang gesetzt wurde (was in Deinem 
Code der Fall ist). Das setzen von PORT<x> bei Pins die auf Eingang 
gesetzt sind, hat das eine besondere Bedeutung. (Seite 101. Insbesondere 
Tabelle 18-1).

  while(1)
  {
    //Poti abfragen?

Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe 
Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das 
im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch 
nicht sehr schwierig.

  }
}

von Cornelius (Gast)


Lesenswert?

Tja, jetzt hattest Du eine technische Frage und bekommst statt einer 
Antwort darauf eine Lebensberatung.

Ich versuch's mal technisch: Da ein Atmega328 auf der Platine ist, 
könntest Du auf einem Arduino Uno entwickeln und dann das HEX-File auf 
den Atmega328 flashen.

Je nach Bluetooth-Modul könnte es schon fertige Lösungen geben. PWM und 
Motorsteuerungsbeispiele gäbe es für den Uno genug.

Beim Verwenden des Arduino-Frameworks hast Du dann noch den Vorteil der 
riesigen Bibliotheksauswahl.

von RP6conrad (Gast)


Lesenswert?

Die Aufgabestellung ist eigentlich mehrfach :
1. Entwurfe eine Platine mit ein Atmel 328 (Rand Bedingungen ?), etwas 
ahnlich wie den Arduino  UNO ?
2. Diese Platine soll Ein Analog Eingang haben, und ein Schnittstelle 
ueber BT, den HC 05. Diese HC05 kan serielle communication ueber BT 
machen.
3. Eine Motorsteurung die ueber BT gesteuert wird, hier muss den 
letzendlich PWM verwendet werden. Platine schon vorhanden ?
4. Der SW soll dan geschrieben werden, in C (IDE = Atmel Studio ?), 
Arduino nicht zugelassen ?
Für eine Laie ist das eine sehr grosse Herausforderung, ohne gute 
Begeleitung wird das nichts !
Ich soll am ersten anfangen mit bestehende hardware : 2*Arduino UNO, 
2*BT HC05, motordriver H-brucke, eine kleine DC-motor. SW soll ich 
eigentlich auch erst mit Arduino machen, als Erfahrung mit 
programmieren. Wenn das dan klapt, können sie mal selbtst eine Platine 
entwurfen und der UNO ersetzen...
MFT, RP6conrad.

Beitrag #5658882 wurde von einem Moderator gelöscht.
von Chris M. (chris_appment)


Lesenswert?

Phil P. schrieb:
> Genau da liegt das Problem, ich habe keine Zeit.
> - Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren
> und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11.
> -Je nach Studiengang wird das Studium immer umfangreicher weil es mehr
> und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor
> 30 Jahren und Heute).
> -Mein Studiengang (deswegen sagte ich neu) ist ein Zusammenschluss aus
> zwei verschiedenen Studiengängen die es nun nichtmehr gibt.  Gefühlt
> studieren wir zwei Studiengänge parallel (Wir sind die ersten bei denen
> das so ist) und dann habe ich definitiv nicht die Zeit noch einen
> dritten anzufangen. Im ersten Semester hatten wir regulär 50h+
> Vorlesungen die Woche. Wir sind die Versuchskaninchen, kriegen gut auf
> den Deckel und bei unseren Nachfolgern sieht man schon einen
> deutlicheren Unterschied.

Da muss ich jetzt einfach meinen Senf dazugeben.
Ich studiere WIng, was ebenfalls aus 2 Studiengängen besteht. Bei den 
Wirtschaftsfächern hängen wir bei den BWLern, bei den 
Elektrotechnikfächern bei den E-Technikern. Haben also auch keine 
"abgespeckten, für die doofen WIngs-" Vorlesungen.
Deine angegebenen Prüfungsleistungen im Vergleich zu anderen 
Studiengängen ist Schwachsinn. Das was andere Studiengänge an Prüfungen 
fehlt, wird durch Hausarbeiten kompensiert. Klar sind die einen 
Studiengänge weniger, die anderen mehr komplex.
Weißt du was dein späterer Arbeitgeber macht, wenn du ihm sagst du hast 
keine Zeit ein Projekt anständig zu bearbeiten? Frag mal deinen 
Nachfolger..

Habe vor dem Studium eine Lehre absolviert, die mich ziemlich auf den 
Boden der Tatsachen geholt hat. Das merke ich auch im Vergleich zu 
meinen Kommilitonen.
Ich hab mich auch oft während dem Studium ungerecht behandelt gefühlt. 
Da kann man drauf rumschmollen, das ändert aber an der Situation nichts.
Denk immer dran. Während du dich über die Aufgabe ärgerst, versucht ein 
Anderer diese schon zu lösen.

Will dir damit nichts vermiesen.
Finde es toll, dass du wie ich, das Forum als Studienhilfe nimmst. Aber 
geh bitte etwas anders an die Aufgaben ran. Nutz die Kompetenz von den 
Mitgliedern, die oft länger im Business sind, als wir überhaupt atmen, 
hier als Hilfe und arbeite dann selbstständig weiter an der Lösung.
Wo ein Wille, da auch ein Weg.
Ich kenn die stressigen Zeiten. Schreibe zur Zeit meine Abschlussarbeit, 
bin im Unternehmen tätig und verbringe die restliche Zeit mit der 
Vorbereitung in die Selbstständigkeit. Es sind harte Zeiten, aber es 
gibt auch wieder bessere.
Kopf Hoch, Kaffee einschenken und reinhauen!
Die Belohnung ist das Gefühl, wenn etwas nach langem Probieren und 
Testen endlich funktioniert :)

Hoffe konnte dich ein wenig motivieren! Viel Erfolg weiterhin!

von Georg M. (g_m)


Lesenswert?


von Max M. (max_m250)


Lesenswert?

Eigentlich steht im Datenblatt des 328P alles drin was du brauchst. Dort 
sind Programmbeispiele in c und assembler zu allen Themen. Wie man 
welche Ports definiert, wie man einen ADC-Wert einliest, was zu beachten 
ist.
Einfach mal googeln, Datenblatt runterladen und dich in die fraglichen 
Themen einlesen. Fragen kannst du dann ja immer noch wenn was nicht 
funktioniert oder so.

Beitrag #5658917 wurde von einem Moderator gelöscht.
von Georg M. (g_m)


Lesenswert?

Phil P. schrieb:
> Wie man den Poti abfragt und verarbeitet weiß ich ebensowenig.

Beispiel mit ATtiny13:

https://adnbr.co.uk/articles/adc-and-pwm-basics

von Phil P. (mr3)


Lesenswert?

Schukostecker schrieb:
> Bist du sicher, dass eine technische Ausbildung das Richtige für dich
> ist?

Na eine Platine konnten wir auch ohne Vorkenntnisse entwerfen und 
layouten und uns das Prinzip einer Vollbrücke verstehen.

Schukostecker schrieb:
> Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger
> Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit
> Interesse selbstständig  einzuarbeiten.

Korrekt. Aber wenn es denn soweit ist hat man wenigstens die Basics 
drauf und ist nichtmehr am Anfang das Studiums.

Theor schrieb:
> Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B.
> Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe
> Information nochmal wiedergeben und Du sie hier liest

Genau, das halbwegs rauslesen welches register und welchen Port ich 
brauche ist eine Sache das habe ich zumindest zum Teil verstanden. Aber 
das Prinzip wie genau ich diese einschalte (einschalten = einfach 
versorgen und somit nutzbar machen ) nicht. Register "aktivieren", Port 
auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne 
Pins definieren?

Theor schrieb:
> Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da
> darum herum redest und das Fach nicht einfach nennst.

Das ist korrekt. Wenn hier nur gegen einen geschossen wird ist man 
natürlich vorsichtig und hat keine große Lust noch mehr Einzelheiten 
rauszuhauen da:

Cornelius schrieb:
> Tja, jetzt hattest Du eine technische Frage und bekommst statt einer
> Antwort darauf eine Lebensberatung.

Ich studiere Mechatronik und Robotik.

Theor schrieb:
> Das ist nicht die "Taktzeit" sondern die "Taktfrequenz".

Hast du natürlich Recht. Habe ich beiläufig einfach nur falsch 
bezeichnet.

Theor schrieb:
> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest.

Gut zu wissen, danke! Ich meine ich hätte das in einem Beispiel in Atmel 
Studio schon gesehen aber im Zweifelsfall liege ich falsch :D
Den PWM Modus benötige ich doch weil ich ein PWM Signal ausgeben möchte?
Wieso genau ich den Prescaler durch 256 teilen soll weiß ich auch nicht 
recht. Dadurch dass ich 8-Bit PWM habe habe ich ja eigentlich auch nur 
256 Werte. Da ich diese aber auch nichtmehr auslese oder als % anzeige 
ist es eigentlich unwichtig?

Das Programm ist ja auch noch nicht fertig vielleicht müssen ja noch 
interrupts rein?

Theor schrieb:
> PORTD=0b1001; //Den Pin 9 als ausgang definieren ???
>
> Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>.

Was gäbe es dann für einen Grund soetwas zu benutzen (Ist aus einem 
Video auf Youtube). Außer, dass ich hier halt den Pin "falsch 
angesprochen" hätte.

Wie kann ich denn dann die von mir benötigten Pins exakt so definieren 
wie ich sie brauche, wie konkret würde das aussehen ?

Theor schrieb:
> Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe
> Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das
> im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch
> nicht sehr schwierig.

Vielen Dank! Deine Kommentare haben mich schonmal weiter gebracht, genau 
so etwas habe ich mir erhoft=)

Cornelius schrieb:
> Beim Verwenden des Arduino-Frameworks hast Du dann noch den Vorteil der
> riesigen Bibliotheksauswahl.

Sehe ich genauso aber wir wurden "gebeten" Atmel Studio zu verwenden :S

RP6conrad schrieb:
> Für eine Laie ist das eine sehr grosse Herausforderung, ohne gute
> Begeleitung wird das nichts !

Sehe ich genauso.

Chris M. schrieb:
> Da muss ich jetzt einfach meinen Senf dazugeben.
> Ich studiere WIng, was ebenfalls aus 2 Studiengängen besteht.

Vielleicht versteh ich das aber mir wurde immer gesagt, dass die WINGler 
die Schnittstelle zwischen quasi "BWLern und Ingenieuren "sind. Somit 
umfangreiche Basics angelernt bekommen aber nicht so detailliert wie ein 
Ingenieur sich mit diesen befassen muss? Das Problem liegt aber 
vielleicht auch daran, dass es diese Kombination erst seit meinem 
Semester so gibt und die Organisation einfach noch drunter und drüber 
läuft.

Chris M. schrieb:
> Da kann man drauf rumschmollen, das ändert aber an der Situation nichts.

Ich möchte weder schmollen, noch bemitleidet werden oder sonstiges. Ich 
fühle mich hier leicht angegriffen und möchte nur klarstellen in welche 
Situation ich mich befinde, damit vielleicht der ein oder andere auch 
noch ein paar helfende Worte hat anstatt nur rumzupöbeln.

Chris M. schrieb:
> Es sind harte Zeiten, aber es
> gibt auch wieder bessere.

Recht hast du. Hätte ich nicht die Zeit nach dem Studium vor Augen hätte 
ich vermutlich schon längst geschmissen.

Georg M. schrieb:
> https://www.youtube.com/results?search_query=arduino+bluetooth+motor
>
> https://www.google.de/search?q=arduino+bluetooth+motor

 Über Arduino programmieren "darf" ich leider nicht =(

von MWS (Gast)


Lesenswert?

Phil P. schrieb:
> Projektes ist vom Aufwand her zwischen Seminararbeit (6. Semester) und
> Bachelor Thesis. Um meine Verzweiflung verständlich zu machen -> wir
> sind im 3. Semester...

> bringen uns hier leider nicht weiter und auch wenn der Programmier Teil
> nichtmal benotet wird

Das ist ein Kobayashi-Maru-Test.

von Dominik J. (d-r-j)


Lesenswert?

DDR legt fest welche Pins Eingang, und welche Ausgang sind.

Im Tutorial ist es gut erklärt.
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports

von M.K. B. (mkbit)


Lesenswert?

Hi Phil P., ist nicht böse gemeint, aber was wolltest du mit deinem 
letzten Post bezwecken? Du hast dich für all die Anschuldigungen 
gerechtfertigt, aber das ist den Schreibern wahrscheinlich egal. Dafür 
sind wieder mindestens 15 Minuten Zeit vergangen, in der du an deinem 
Projekt hättest weiterarbeiten können.

Damit du hier im Forum sinnvolle Hilfe bekommst, solltest du dein 
Projekt in Teilprobleme zerlegen. Wenn du dann da ein Problem hast, dann 
versuche das Handbuch zu verstehen und sonst stelle eine konkrete Frage 
bzw. suche erst mal danach.

Beispiel: Wie stelle ich einen Atmega Pin auf Ausgang?
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports

von Dussel (Gast)


Lesenswert?

Das Problem mit deiner Frage ist, dass sie auf den ersten Blick 'faul' 
(mir fällt gerade kein anderes Wort ein) erscheint. Hier wollen öfter 
mal Leute, dass hier ihre Hausaufgaben gemacht werden oder 'Künstler', 
denen hier ihre 'Kunst' erstellt werden soll (wo am Ende die einzige 
Leistung dieser 'Künstler' ist, andere ihr Zeug machen zu lassen).
Dazu dann noch der Titel, der kaum mehr aussagt als 'Brauche Hilfe'.
Das sind Alarmsignale, die manchen in den Ablehnungsmodus schalten 
lassen.
Ist halt vielleicht etwas blöd gelaufen.

Phil P. schrieb:
> Theor schrieb:
>> Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B.
>> Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe
>> Information nochmal wiedergeben und Du sie hier liest
>
> Genau, das halbwegs rauslesen welches register und welchen Port ich
> brauche ist eine Sache das habe ich zumindest zum Teil verstanden. Aber
> das Prinzip wie genau ich diese einschalte (einschalten = einfach
> versorgen und somit nutzbar machen ) nicht. Register "aktivieren", Port
> auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne
> Pins definieren?
Register sind Speicherstellen. Die kannst du beschreiben oder lesen mit 
=, zum Beispiel DDRD=0b00110110 oder Pins=PIND.
Für die Peripherie, wie PWM-Generator, ADC oder sowas geht das genauso. 
Im Datenblat steht, welches Bit oder welche Bits welche Bedeutung haben. 
Dann musst du sie nur noch entsprechend setzen.

Was sind konkret noch deine Fragen?

von Theor (Gast)


Lesenswert?

Phil P. schrieb:
> [...]
>
> Theor schrieb:
>> Diese Informationen sind ja schon vorhanden. In den Datenblättern z.B.
>> Es bleibt sich gleich, ob Du darin liest oder ob wir die selbe
>> Information nochmal wiedergeben und Du sie hier liest
>
> Genau, das halbwegs rauslesen welches register und welchen Port ich
> brauche ist eine Sache das habe ich zumindest zum Teil verstanden.
Gut. Dann hast Du ja nur noch den anderen Teil vor Dir.

> Aber
> das Prinzip wie genau ich diese einschalte (einschalten = einfach
> versorgen und somit nutzbar machen ) nicht.

Zunächst mal: Wenn Dir jemand sagt, dass Du da nichts einschaltest und 
Du in der unmittelbaren Antwort darauf wieder von "einschalten" redest, 
dann deute ich das, bei allem menschlichen Respekt, entweder als 
Unfähigkeit oder als Unwillen. Das klingt hart, aber was für andere 
Gründe gibt es dafür? Das wäre mal zu klären.
Es ist sinnlos Dir was zu erklären, wenn Du schon den ersten Schritt 
verweigerst oder aus anderen Gründen einfach nicht machst.

Dir sollte klar sein, dass jedes Gebiet seine spezifische Ontologie hat 
und lernen zum Gutteil darin besteht diese zu erfassen und zu verstehen 
und die darin enthalten Zusammenhänge nachzuvollziehen.
Das kann ich Dir nicht abnehmen.

> Register "aktivieren", Port
> auf Ein oder Ausgang "schalten" aber kann ich darin nochmal einzelne
> Pins definieren?

Das ist Dir auch von mir gesagt worden. Ich zitiere:
"Die Bitpositionen korrespondieren mit je einem Bit des 
Ein-Ausgabeports."

> Theor schrieb:
>> Welches Fach studierst Du nun eigentlich. Es fällt mir auf, dass Du da
>> darum herum redest und das Fach nicht einfach nennst.
>
> Das ist korrekt. Wenn hier nur gegen einen geschossen wird ist man
> natürlich vorsichtig und hat keine große Lust noch mehr Einzelheiten
> rauszuhauen da:

Naja. Offen gesagt, gibst Du eine gute Zielscheibe ab.

> Cornelius schrieb:
>> Tja, jetzt hattest Du eine technische Frage und bekommst statt einer
>> Antwort darauf eine Lebensberatung.
>
> Ich studiere Mechatronik und Robotik.
>
> Theor schrieb:
>> Das ist nicht die "Taktzeit" sondern die "Taktfrequenz".
>
> Hast du natürlich Recht. Habe ich beiläufig einfach nur falsch
> bezeichnet.

Sorgfalt ist in diesen Fächern erstes und oberstes Gebot!

> Theor schrieb:
>> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest.
>
> Gut zu wissen, danke! Ich meine ich hätte das in einem Beispiel in Atmel
> Studio schon gesehen aber im Zweifelsfall liege ich falsch :D

Ja. Da liegst Du definitiv falsch.

> Den PWM Modus benötige ich doch weil ich ein PWM Signal ausgeben möchte?
> Wieso genau ich den Prescaler durch 256 teilen soll weiß ich auch nicht
> recht. Dadurch dass ich 8-Bit PWM habe habe ich ja eigentlich auch nur
> 256 Werte. Da ich diese aber auch nichtmehr auslese oder als % anzeige
> ist es eigentlich unwichtig?
>
> Das Programm ist ja auch noch nicht fertig vielleicht müssen ja noch
> interrupts rein?

Nun, meine Frage wegen den PWM-Settings war etwas deplatziert. 
Zugegeben.

Der Punkt ist, dass Du, bildlich gesprochen, an einem Gerüst, erstmal so 
ein paar Einzelteile aufgehängt hast, die zwar tatsächlich irgendwie in 
das Endprodukt hineingehören. Aber das ist so, als wenn ich einen großen 
Roman schreiben will, in dem es um einen Fischer geht und dann als 
Anfang mal etwa sowas präsentiere:

"Ich ... Du  ... und  ... bei  ... also  ... Fisch  ... der  ... Boot 
...  Hafen ... bald.".

Die Worte werden wohl alle und in der Reihenfolge in dem Roman am Ende 
vorkommen, bilden aber für sich genommen nichtmal ein Teilsystem.

Oder, falls Dir das Bild mehr sagt:
Das ist, als wenn Du ein Auto entwickeln willst, damit anfängst an ein 
paar Strippen, hier mal einen Dichtungsring, dort mal eine Schraube und 
an einem anderen Platz 2 Meter Kupferkabel hin hängst, alles ungefähr 
dort, wo es am Ende wohl sein wird, und dann fragst, wie es weitergeht.

So entwirft und baut man kein System.

Vielmehr unterteilt man das Gesamtprojekt in Teilsysteme. Das hast Du ja 
irgendwie im ersten Posting auch ansatzweise getan. Drehzahlsteuerung, 
Bluetooth und ein Poti. Das allein ist aber wie Schrauben in die Luft 
hängen.
Die Frage die sich nun stellt, ist, wie hängen diese Teile zusammen, was 
fehlt noch um komplette Teilsysteme zu bekommen bzw. aus welchen 
Teilstrukturen - auch in der SW - bestehen sie.

Man kann nicht bei jedem Menschen diese Denkweise voraussetzen. Aber ein 
Mensch in dem Alter, in dem man studiert, sollte die Welt schon so gut 
kennen, dass ihm der Gedanke nicht völlig fremd ist. Selbst ein 
Hamburger besteht aus Teilen, wie dem Bun, dem Käse, der Soße, dem 
Patty, dem Salat etc. Käse wird auf eine bestimmte Weise erzeugt, hat 
Bestandteile und eine Struktur. Ebenso das Brot uswusf.
Genau genommen, solltest Du im 3. Semester mit dieser Denkweise auch 
schon mehrfach konfrontiert worden sein. Und vorher schon in der Schule.
Wo sollen wir jetzt daran mit Dir arbeiten? Das musst Du beantworten.

> Theor schrieb:
>> PORTD=0b1001; //Den Pin 9 als ausgang definieren ???
>>
>> Nein. Das geschieht mit dem Datenrichtungsregister DDR<x>.
>
> Was gäbe es dann für einen Grund soetwas zu benutzen (Ist aus einem
> Video auf Youtube). Außer, dass ich hier halt den Pin "falsch
> angesprochen" hätte.
>
> Wie kann ich denn dann die von mir benötigten Pins exakt so definieren
> wie ich sie brauche, wie konkret würde das aussehen ?

Das ist, mit Verweis auf die entsprechende Seite im Datenblatt, schon 
beantwortet worden. Du musst es mal lesen.
Niemand erwartet, dass Du das auf Anhieb verstehst. Aber formuliere 
spezifische Fragen die aus dem folgen was Du gelesen hast und wiederhole 
die globale Frage nicht einfach.

> Theor schrieb:
>> Das läuft auf die Verwendung des Analog-Digital-Wandlers hinaus. Siehe
>> Seiten 305 ff.) Die Arduino-Umgebung hat das sehr abstrahiert. Wie das
>> im Einzelnen geht, wird evtl. sehr neu für Dich sein, ist aber auch
>> nicht sehr schwierig.
>
> Vielen Dank! Deine Kommentare haben mich schonmal weiter gebracht, genau
> so etwas habe ich mir erhoft=)

Na, ob Du nach dieser Antwort immer noch so dankbar bist? :-)
Aber jedenfalls freut mich, dass Du es bisher warst.

> [...]

von Florian (Gast)


Lesenswert?

Phil P. schrieb:
> Leider hab ich nicht annähernd die Zeit die ich bräuchte um mich da
> mühsam einzuarbeiten

Studienfach bzw. Studiengang wechseln!
Hier bist du jedenfalls falsch, wenn du glaubst dass wir dir deine 
Hausaufgaben machen...

von Veit D. (devil-elec)


Lesenswert?

Hallo,

eigentlich ist das gar nicht so schwer, wenn man schon etwas 
Grundkenntnisse hat. Kann mir deine Lage aber vorstellen.

Wie man die Port Bits als Eingänge und Ausgänge konfiguriert das steht 
wunderbar erklärt hier im Tutorial. 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Das Thema Timer ist schon etwas aufwendiger aber auch machbar. Dazu kann 
man dieses Arduino Tutorial nutzen. Weil das direkt mit Register erklärt 
wird. Nur das setup und loop musste umdenken in die sonst übliche main 
und while Schreibweise.
https://www.instructables.com/id/Arduino-Timer-Interrupts/  oder 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR

Also Eingänge/Ausgänge deklarieren/initialisieren.
Timer konfigurieren. Hier würde ich gleich einen Timer-Hardwareausgang 
verwenden für die PWM. Für Timer 0 also Pin PD5. Dann haste freie 
Auswahl für TOP (OCR0A oder Fix Wert). Kannst auch die Timer ISR 
verwenden für einen x beliebigen Pin.
Welche Frequenz soll die PWM überhaupt haben?
Welcher Modi soll verwendet werden?
Mit Phase Correct Mode kommste bis ca. 16kHz, wenn du den Duty Cycle 
Spielraum gut ausnutzen möchtest.
Danach richtet sich der Prescaler und der TOP Wert die es festzulegen 
gilt.
Alles zwischen 0 und TOP wäre dann dein Duty Cycle Spielraum.
Nimm ein Oszi und bastel bis das taktet und auf Duty Cycle Änderungen 
reagiert wie gewünscht.
Beachte der Duty Cycle Wert darf niemals größer werden als TOP.

BT Modul an die Hardware USART anklemmen, USART laut Bsp. im Manual 
konfigurieren und einfach nur ein einziges Byte senden und empfangen. 
Konfiguration des BT Moduls beachten und ob es mit 5V kann oder doch nur 
3,3V.

Aber das mit BT würde ich zum Schluss machen. Erstmal muss der eine µC 
auf das Poti reagieren und das Duty Cycle ändern.

Für die ADC Konfig suchste nach "avr ADC free running". Gleichst die 
Registernamen/Bits mit den des 328P Manuals ab und es sollte laufen. 
Hier stellste gleich den 8 Bit Mode ein, musste nicht extra 
mappen/anpassen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

konfiguriere vielleicht erstmal einen x beliebigen Pin als Ausgang und 
schalte diesen ständig ein und aus mit delay dazwischen. Und schaue am 
Oszi und/oder LED ob das geht und wie es geht. Dann kommste schon mit 
der Port-Register Einstellung rein ins Thema.

von Phil P. (mr3)


Lesenswert?

Theor schrieb:
> Das klingt hart, aber was für andere
> Gründe gibt es dafür?

Der Grund dafür ist, dass ich viel mit Erstsemestern und Schülern vom 
Berufskolleg arbeite und mich versuche so auszudrücken, dass es für den 
Laien verständlich - wenn auch faktisch nicht immer ganz richtig- ist.

Theor schrieb:
> Naja. Offen gesagt, gibst Du eine gute Zielscheibe ab.

In was für einer Welt werden wir mal leben wenn jeder, der etwas nicht 
weiß, sich nicht traut zu fragen? Solchen Leuten sollte man helfen und 
sie nicht runterbuttern.

Theor schrieb:
> Der Punkt ist, dass Du, bildlich gesprochen, an einem Gerüst, erstmal so
> ein paar Einzelteile aufgehängt hast, die zwar tatsächlich irgendwie in
> das Endprodukt hineingehören.

Ist mir ebenfalls bewusst aber Informatik ist einfach ein Teil bei dem 
man sich schwer tut. Selbst wenn man ungefähr weiß was man tun müsste 
(was bei mir ja nur zum Teil der Fall ist) heißt das nicht, dass man die 
Befehle kennt oder diese auch versteht.

Theor schrieb:
> Na, ob Du nach dieser Antwort immer noch so dankbar bist? :-)
> Aber jedenfalls freut mich, dass Du es bisher warst.

Ich bin für alles Dankbar was konstruktiv und nicht rein als Beleidigung 
oder um sich selbst zu profilieren gedacht ist.

Theor schrieb:
> ber formuliere
> spezifische Fragen die aus dem folgen was Du gelesen hast und wiederhole
> die globale Frage nicht einfach.

OK.

        DDRD =0xFF; //Im Register Port D =Verwendbar
  PORTD=0b100000000; //Pin 9 = Ausgang
  DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können

Habe ich das nun richtig verstanden, dass PIN9 (PD5) als Ausgang(PWM) 
und Pin19 (PE2) als Eingang(POTI) verwendbar ist? Genau so benötige ich 
es.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Veit D. schrieb:
> konfiguriere vielleicht erstmal einen x beliebigen Pin als Ausgang und
> schalte diesen ständig ein und aus mit delay dazwischen. Und schaue am
> Oszi und/oder LED ob das geht und wie es geht. Dann kommste schon mit
> der Port-Register Einstellung rein ins Thema.

Hi,
Simulation bzw. Debuggen machts anschaulich.

von Georg G. (df2au)


Lesenswert?

Die übliche Vorgehensweise bei einem Projekt, das auf Anhieb 
unübersichtlich ist, ist, es auf kleinere Probleme herunter zu brechen, 
die schneller lösbar sind. Am Ende wird dann alles miteinander 
verheiratet.

Als Erstes mach dir klar, wie die Anforderungen genau sind. "Einen Motor 
per PWM steuern" ist Weichgummi. Welche Auflösung wird gefordert? Wie 
hoch soll die PWM-Frequenz sein? Diese Dinge sind entscheidend für den 
Aufwand.

Dann überlege dir, wie deine Platine mit dir zwecks Debugging reden 
soll. Einfach nur "geht nicht" bringt dich nicht weiter. Mit der Stange 
im Nebel fuchteln dauert ewig und frustriert. Serielle Ausgabe auf ein 
Terminal (PC) oder 8 LEDs an einem Port? Die LEDs an einem Port wären 
eine gute Fingerübung für Port-Richtung setzen, Bits togglen und 
Warteschleifen. Serielle Ausgabe ist wesentlich bequemer und als 
nächstes dann auch schnell machbar.

Als nächstes liest du das Poti ein über den ADC und gibst den Wert über 
deine Debug Schnittstelle aus.

Wenn es bis hierher funktioniert, reden wir weiter. Blauzahn und PWM 
sind etwas anspruchsvoller für einen Anfänger. Aber wenn du hier 
angekommen bist, bist du kein Anfänger mehr und die Sonne geht langsam 
auf.

von Karl B. (gustav)


Lesenswert?

Karl B. schrieb:
> Hi,
> Simulation bzw. Debuggen machts anschaulich.

Deswegen sollte der TO ja auch das Atmel Studio nehmen.
Ganz easy.

ciao
gustav

von Dussel (Gast)


Lesenswert?

Phil P. schrieb:
> DDRD =0xFF; //Im Register Port D =Verwendbar
>   PORTD=0b100000000; //Pin 9 = Ausgang
>   DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können
>
> Habe ich das nun richtig verstanden, dass PIN9 (PD5) als Ausgang(PWM)
> und Pin19 (PE2) als Eingang(POTI) verwendbar ist? Genau so benötige ich
> es.
Nein.

DDRD =0xFF;
Setzt alle Pins des Port D als Ausgang.

PORTD=0b100000000; //Pin 9 = Ausgang
Das dürfte meines Wissens nicht funktionieren, weil PORTD nur acht Bit 
breit ist. Wenn doch, setzt es Pin 8 des Port D auf high.

DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können
Das setzt alle Pins des Port E als Ausgang.

von Theor (Gast)


Lesenswert?

Phil P. schrieb:

OK. Ich bin dann raus.
Tut mir leid, aber ich halte es für zwecklos Dir irgendwas zu erklären.

von Phil P. (mr3)


Lesenswert?

Dussel schrieb:
> DDRE = 0xFF; //PE2 soll als Eingang verwendet werden können
> Das setzt alle Pins des Port E als Ausgang.

DDRE=0x00; // so muss das natürlich heißen, sorry.

Dussel schrieb:
> Das dürfte meines Wissens nicht funktionieren, weil PORTD nur acht Bit
> breit ist. Wenn doch, setzt es Pin 8 des Port D auf high.

Ergibt Sinn aber wie bekomme ich dann den Pin 9 (PE2)

Reicht dann einfach

DDRD=0xFF;
DDRE=0x00;

?

von Dussel (Gast)


Lesenswert?

Ich habe nochmal nachgesehen. Das ist im C-Tutorial nicht so gut 
erklärt, wie im Assemblertutorial.

Zuerst mal muss unterschieden werden zwischen der IC-Pinnummerierung und 
der Portnummerierung.
Die Pins des IC sind von 1 bis irgendwas aufstegend nummeriert. Diese 
Nummern sind für die Programmierung vollkommen egal.
Auf irgendwelchen Pins liegen die Portpins der Ports A, B, C,... Die 
sind durchnummeriert von 0 bis 7. Um diese Pins geht es.

Mit DDRx wird die Richtung festgelegt. Wenn das entsprechende Bit 0 ist, 
ist der Pin ein Eingang, sonst ein Ausgang.
Mit PORTx können die Ausgänge auf 1 oder auf 0 geschaltet werden.
Mit PINx kann der aktuelle Eingangswert am Pin ausgelesen werden.

Aber wenn solche Dinge schon so ausführliche Erklärung benötigen, sehe 
ich ehrlich gesagt auch Probleme kommen.

von Phil P. (mr3)


Lesenswert?

Dussel schrieb:
> Die
> sind durchnummeriert von 0 bis 7. Um diese Pins geht es.

Ergibt ebenfalls Sinn. Sowas sieht jemand ohne Erfahrung vielleicht 
nicht auf den ersten Blick

Dussel schrieb:
> Mit PINx kann der aktuelle Eingangswert am Pin ausgelesen werden.

Danke!
Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so 
setzen wie ich es benötige? oder kann man in diesem Register nur den 
gesamten Port auf Eingang oder Ausgang setzen ?

Dussel schrieb:
> Aber wenn solche Dinge schon so ausführliche Erklärung benötigen, sehe
> ich ehrlich gesagt auch Probleme kommen.

Man sollte halt das Prinzip mal verstanden haben, dann kann man sich 
stückchenweise vorarbeiten aber wie gesagt... Kaum Vorkenntnisse. Ich 
bezweifel auch stark dass das bisschen Schleifen und If Else 
Programmieren was wir gemacht haben groß relevant ist für die korrekte 
pinbenutzung eines Microkontrollers. Ich bin ja nicht hier weil ich 
schon alles weiß;)

von Dussel (Gast)


Lesenswert?

Phil P. schrieb:
> Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so
> setzen wie ich es benötige? oder kann man in diesem Register nur den
> gesamten Port auf Eingang oder Ausgang setzen ?
Pins können Ein- oder Ausgänge sein.
Erstmal muss mit DDRx gewählt werden, welcher Pin was sein soll.
DDRB=0b10000111
setzt die ersten drei und den letzten Pin von Port B auf Ausgang.

Für Eingänge wird PINx benutzt, für Ausgänge PORTx (es geht auch mehr 
oder weniger sinnvoll umgekehrt, aber so ist es erstmal der Normalfall).

Wenn an einem Ausgangspin 0 V ausgegeben werden sollen, setzt man das 
entsprechende Bit in PORTx auf 0, wenn Versorgungsspannung (z.B. 5 V) 
ausgegeben werden soll, setzt man es auf 1.

Wenn man wissen will, ob an einem Eingangspin 0 V oder 5 V anliegen, 
liest man PINx ein. Bei 0 V ist das Bit 0, bei 5 V ist es 1.

Die Bezeichnungen muss man übrigens auseinanderhalten.
PIN ist das Eingangsregister, ein Pin ist ein (metallischer) Anschluss 
eines Bauteils.
PORT ist das Ausgaberegister, ein Port ist eine Sammlung mehrerer 
bestimmter Pins des Chips.

von Stefan F. (Gast)


Lesenswert?

Welche Rolle spielt hier eigentlich das Bluetooth Modul?

Ich nehme an, dass zwischen Potentiometer und Motore eine drahtlose 
Übertragung stattfinden soll. Also zwei Bluetooth Module, richtig?

Diese Bluetooth Module haben serielle UART Schnittstellen. Zwischen 
Potentiometer und Bluetooth Sender brauchst du einen Mikrocontroller, 
der das analoge Signal des Potentiometer digitalisiert und seriellen 
sendet.

Auf der Empfänger Seite brauchst du einen weiteren Mikrocontroller, der 
die seriellen Daten empfängt und damit das OCR register eines PWM Timers 
füttert. Dann brauchst du noch einen Transistor, der den Ausgang des 
Mikrocontrollers verstärkt, um den Motor damit anzusteuern.

Nicht zu vergessen sind diverse Kleinigkeiten wie Stromversorgung, 
Spannungsregle und Freilaufdiode.

Was die Datenübertragung angeht solltest Du Dir überlegen, ob einfache 
8bit genügen oder mehr nötig ist. Wenn der Sollwert in mehr als nur 
einem Byte übertragen wird, musst Du Dir noch ein Übertragungsprotokoll 
ausdenken. Denn irgendwie muss der Empfänger ja erkennen, wo eine 
Übertragung beginnt und wo sie endet. Eine Absicherung z.B. mit 
Prüfsumme wäre auch sinnvoll, denn diese Bluetooth Module übertragen 
Daten manchmal fehlerhaft. Eine Übertragung in Text-Form (ASCII anstatt 
Binär) könnte sehr hilfreich sein, um im Fehlerfall mit einem 
Terminalprogramm zu debuggen.

Was deinen Pin PD5 angeht: Willst du dort Daten ausgeben, um sie per 
Bluetooth zu senden? Kann man machen, aber dann wird es unnötig 
kompliziert, denn der Chip hat einen richtigen UART mit dem serielle 
Ausgaben machen kann.

Die Timer des Mikrocontrollers haben viele Funktionen, deswegen lernt 
man den Umgang damit nicht in 15 Minuten. Du hast hier das Glück, dass 
du nicht alle Funktionen des Mikrocontrollers zu lernen brauchst. Für 
Dich relevant sind nur UART, ein ADC Kanal und ein Timer im PWM Modus. 
Das ist durchaus überschaubar.

Wenn du unbedingt Zeit sparen willst, kannst du mal klären, ob du das 
Arduino Framework verwenden darfst. Denn darin sind die benötigten 
Sachen in einfache Funktionen gekapselt und auch einfach dokumentiert. 
Ich fürchte aber, dass genau dies nicht zugelassen wird, weil du dich 
mit den Registern beschäftigen sollst.

Falls du einen anderen Mikrocontroller verwenden darfst, hilft Dir 
eventuell dieses Buch. Ich erkläre dort maximal komprimiert genau die 
Sachen, die du zum Programmieren brauchst. Schneller/kompakter geht es 
nur mit Frameworks wie Arduino:
http://stefanfrings.de/mikrocontroller_buch2/index.html

Ansonsten kann ich auch mit einem umfangreicheren AVR Lehrbuch dienen, 
wo es auch um die benötigte Hardware geht:
http://stefanfrings.de/mikrocontroller_buch/index.html

Ich kann Dir die Bauteile-Kiste kurzfristig zuschicken, dann hast du 
noch vor den Feiertagen alles da, was Du zum Üben mit diesem Buch 
brauchst. Ein ATmega328 ist in Form eines Moduls (mit Quarz und 
Spannungsregler) auch dabei.

Auf jeden Fall solltest Du Dich damit abfinden, dass dieses Projekt Zeit 
braucht. Deine Aussage "ich habe keine Zeit" kann sinnvollerweise nur zu 
einer Absage führen. Denn von nichts kommt nichts und kopieren ist keine 
zulässige Option.

Wenn Du jetzt zügig meine Bauteile-Kiste bestellst und Dich intensiv 
rein kniest (und zwar jeden Abend), dann kriegst du das noch dieses Jahr 
ans Laufen, da bin ich ganz sicher.

von Volker S. (vloki)


Lesenswert?

Vergiss erst mal, dass PORTE2 der Pin neun ist.
Das ist nur für den Schaltpan, bzw die Platine wichtig.
Für die Programmierung hat "Pin9" keinerlei Bedeutung.
Meist gibt es auch mehrere mögliche Gehäuseformen,
wobei dann E2 dann an ganz unterschiedlichen Pins legen kann.

Als nächstes sollte dir so langsam klar werden, dass zu einem Pin 
mehrere Bits in mehreren Registern gehören. Beschäftige mich nicht mit 
Atmega Controllern, aber auch deren Datenblatt gibt es sicher eine 
Grafik, die das veranschaulicht. Vermutlich eine der ersten, im Kapitel 
über digitale I/Os. Das hat mit Elektronik bzw Digitaltechnik zu tun und 
nichts mit Informatik.

Ein Register in diesen Bildern ist immer für die Richtung zuständig, in 
welcher man den Pin nutzen möchte. Hier heißt das deshalb auch DDR, für 
Data-Direction-Register. Ein (oder auch zwei) weiteres ist für den 
Zustand des Pins zuständig, d.h. ob dieser 0 oder 1 ist.

Bei einem 8Bit Controller sind normalerweise 8 Pins in einem PORT 
zusammen gefasst und werdne zusammen über ein Register gesteuert. Will 
man nur einen Pin benutzen, dann sollte man auch nur die Bits für diesen 
verändern. Das kann man über Operatoren verwirklichen, die eben bitweise 
arbeiten, oder man hat vordefinierte Bitfelder, die den zugriff auf 
einzelne Bits erlauben.

Soll also PORTE2 als Eingang genutzt werden setzt man dem nach nur Bit 2 
von DDR2 auf den entsprechenden Wert und lässt die anderen erst mal so, 
wie die Entwickler des Controllers wohl gedacht haben, dass es für noch 
unbekannte Umgebung am sinnvollsten ist.

Um den Pin als Eingang zu benutzen muss man wohl DDRE2 auf 0 setzen.
Das kann man z.B mit einer bitweisen UND Operation erreichen.

DDRE &= 0b11111011;   // PORTE2 als Input

Für den Anfang benutzt man dafür am besten binäre Schreibweise. Dem 
Compiler ist es eigentlich egal. Man könnte auch = 4; oder = 0x04 
schreiben. Im Controller ist später alles binär.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

mal eine grundlegende Bitte an Phil.
Was hast du denn für eine Gehäuseform vom 328P. PDIP, MLF oder TQFP?
Weil die Gehäusepinnummern sind arg verschieden an den Portregister.
Hast du ein Arduinoboard als Grundlage oder doch nicht? Welches?
Außerdem hat ein 328P kein Port-Register E. Er hat nur B, C und D.
Du musst dann schon das Wissen aus den Tutorials auf deinen µC 
adaptieren. Ohne Manual geht da nix.
http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf

Im AVR GCC Tutorial sind die Ports für mich wunderbar erklärt. Man 
schaut sich die C Bsp. Codes an und weiß Bescheid was man machen muss.
PDIP Gehäusepin 9 wäre PB.6
1
DDRB  |= (1<<DDB6);   // PB6 Ausgang, Bit setzen
2
PORTB |= (1<<PB6);    // PB6 einschalten, Bit setzen
3
PORTB &= ~(1<<PB6);   // PB6 ausschalten, Bit löschen

Eigentlich ganz simpel oder  :-)

Edit: Binärschreibweise würde ich mir nicht angewöhnen. Die Portbits 
sind in der Toolchain hinterlegt, sodass man sie direkt mit Namen 
verwenden kann. Erspart viele Fehler.

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Phil P. schrieb:
> Ich
> bezweifel auch stark dass das bisschen Schleifen und If Else
> Programmieren was wir gemacht haben groß relevant ist für die korrekte
> pinbenutzung eines Microkontrollers.

Einen Mikrocontroller sollte man sich von der Hardwareseite nähern und 
die Software zunächst als nur als Mittel begreifen diese Hardware zu 
konfigurieren. Für die Software (das bisschen Schleifen etc.) gibt es 
meist verschiedene Möglichkeiten etwas mehr oder weniger elegant zu 
lösen. Für die Hardware nur die Möglichkeit, die im Datenblatt des 
entsprechenden Controllers beschrieben ist!



Veit D. schrieb:
> Edit: Binärschreibweise würde ich mir nicht angewöhnen. Die Portbits
> sind in der Toolchain hinterlegt, sodass man sie direkt mit Namen
> verwenden kann. Erspart viele Fehler.

Ich finde

   DDREbits.DDRE2 = OUTPUT_PIN;

auch viel schöner, aber für das Verständnis am Anfang die binäre 
Notation und bitweisen Operatoren gar nicht so verkehrt.
Zumal das ja im Endeffekt genau das ist, was der Compiler aus den 
anderen Schreibweisen wieder macht.

von Veit D. (devil-elec)


Lesenswert?

Volker S. schrieb:
> Ich finde
>
>    DDREbits.DDRE2 = OUTPUT_PIN;
>
> auch viel schöner, aber für das Verständnis am Anfang die binäre
> Notation und bitweisen Operatoren gar nicht so verkehrt.
> Zumal das ja im Endeffekt genau das ist, was der Compiler aus den
> anderen Schreibweisen wieder macht.

Das mag sein und da ist auch viel Geschmacksache und eigene Vorlieben 
dabei, nur gerade das nützt dem TO beim AVR nichts, da diese 
Schreibweise nicht hinterlegt ist. Und mit Makro schreiben bzw. nutzen 
müssen hier nicht anfangen. Ich selbst habe mich an die andere gewöhnt, 
weil die gleichzeitig Datenblatt kompatibel ist. Ich sehe sofort welcher 
Port und welches Pin-Bit gemeint ist. Bei dir wird 'OUTPUT_PIN' irgendwo 
mit '1' hinterlegt sein. Beim Arduino ist HIGH mit 1 und LOW mit 0 
hinterlegt. Wie gesagt, hilft dem TO hier nicht weiter. Das Arduino 
Framework darf er leider nicht verwenden, sonst wäre er schon längst 
fertig.  :-)

von Volker S. (vloki)


Lesenswert?

Veit D. schrieb:
> Wie gesagt, hilft dem TO hier nicht weiter.

Genau darum habe ich es ja ursprünglich nicht erwähnt,
dass ich es so machen würde und versucht die meiner Meinung nach für 
einen Anfänger am einfachsten nachvollziehbare Schreibweise zu 
verwenden.

In  &= ~(1<<PINNUMMER) sind mir dafür doch einige Operatoren zu viel...

von Stefan F. (Gast)


Lesenswert?

Leute, hört bitte auf über diese Details zu diskutieren. Ihr hängt den 
TO damit nur ab, der hat gerade ganz andere Sorgen.

Er wird sich zum Setzen und Löschen von Bits an irgendeinem Tutorial 
orientieren. Wie das da gemacht wird, ist am Ende Sch*** egal, 
Hauptsache es funktioniert.

Schön machen kann er später immer noch. Wir sollten jetzt wirklich nicht 
ausdiskutieren, wer welche Variante schöner findet. Auf einen 
gemeinsamen Konsens kommen wir hier (wie immer) ohnehin nicht. Also 
lasst es besser gleich bleiben oder macht einen eigenen Thread dafür 
auch (wir schon gefühlt 100 davon).

von MWS (Gast)


Lesenswert?

Stefanus F. schrieb:
> Wir sollten jetzt wirklich nicht
> ausdiskutieren, wer welche Variante schöner findet. Auf einen
> gemeinsamen Konsens kommen wir hier (wie immer) ohnehin nicht. Also
> lasst es besser gleich bleiben oder macht einen eigenen Thread dafür
> auch (wir schon gefühlt 100 davon).

Wer hat Dich denn als Aushilfsmod angefordert, bzw. wie kommst Du dazu 
anderen Teilnehmern vorschreiben zu wollen, was sie posten? Kaspere doch 
bitte auf Deiner eigenen Webseite in diesem Ton herum, da kann man Dich 
leicht vermeiden.

Für den TE ist doch bereits bezeichnend, dass er in einem Forum mit 
Namen:

mikrocontroller.net

in der Domain

mikrocontroller.net

es noch nicht einmal schafft, Mikrocontroller richtig zu schreiben.

> Benötige Hilfe beim programmieren eines Microkontrollers!

Und nein, es ist nicht weiter tragisch, wenn sich jemand mal 
wechstabenverbuchselt, aber Sorgfalt ist das A und O bei so technischem 
Gerät wie einem Mikrocontroller, da ist eben wenig bis nichts 
fehlertolerant.

Und so schlampig wie der Anfang wird auch das Ende sein.

von Stefan F. (Gast)


Lesenswert?

MWS schrieb:
> Wer hat Dich denn als Aushilfsmod angefordert

Im Gegensatz zu Dir bemühe ich mich darum, dem TO ernsthaft zu helfen. 
Du bist hier nur ein unerwünschter Störenfried, der nichts zum Thema 
beigetragen hat.

Würdest du deine Beiträge deiner Mutter vorlesen? Wäre sie danach stolz 
auf Dich?

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
in ASM sieht das Einrichten von PortB und PortD zum Beispiel so aus.
Da die Portregister nicht direkt mit Konstanten beschrieben werden 
können, wählt man den Umweg über ein "Arbeitsrgister" früher tauchte 
hier auch einmal der veraltete Begriff "Akku" auf.
Die Ausnahme bildet das Setzen von Pullup-Widerständen.
Normalerweise sind Pullupwiderstände schon gesetzt, wenn Port zum 
Ausgang gemacht wird.
Manchmal braucht man für einen Eingang auch einen Pullupwiderstand.
Hier bekommt zur Sicherheit RXD des UART noch einen Pullupwiderstand 
verpasst.

ciao
gustav

von MWS (Gast)


Lesenswert?

Stefanus F. schrieb:
> Würdest du deine Beiträge deiner Mutter vorlesen?

Warum sollte ich?
Deine Beiträge dagegen lesen sich wie von Mutti.

von Phil P. (mr3)


Lesenswert?

Phil P. schrieb:
> Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so
> setzen wie ich es benötige? oder kann man in diesem Register nur den
> gesamten Port auf Eingang oder Ausgang setzen ?

Kann diese Frage jemand mit ja oder nein beantworten? Ausschweifendes 
Fachgedöns bringt mich hier nicht weiter.

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Kann diese Frage jemand mit ja oder nein beantworten?

Die kannst Du Dir selbst beantworten, indem Du irgendeine Anleitung 
deiner Wahl liest - vorzugsweise das Datenblatt des Herstellers.

> Ausschweifendes Fachgedöns bringt mich hier nicht weiter.

Alles vorkauen bringt Dich auch nicht weiter. Wenn du schon solche 
einfachste Fragen nicht selbst klären kannst, dann wird Thread noch sehr 
sehr lange dauern. Aber du hast ja keine Zeit. Also knie dich selber 
rein, anders kann es kein Erfolg werden.

von Dussel (Gast)


Lesenswert?

Ich habe diese einfach(st)e Grundlage so einfach wie möglich erklärt. Da 
das offensichtlich schon zu viel ist, lohnen sich weitere Antworten 
nicht. Viel Spaß noch.

von dumdum (Gast)


Lesenswert?

ja
nein

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> Die kannst Du Dir selbst beantworten, indem Du irgendeine Anleitung
> deiner Wahl liest - vorzugsweise das Datenblatt des Herstellers.

Ich bin im Moment auf den Tutorial Seiten zu Registern und I/O 
unterwegs. Die Antwort ist für mich daher nicht ersichtlich.

Benötige ich PORTx nur wenn ich den jeweiligen PIN anders benötige als 
übers DDRx initialisiert ist?
Bleibt immernoch zu klären ob man mit DDRx nicht schon alles genau so 
einstellen kann wie man möchte.

von Stefan F. (Gast)


Lesenswert?

DDRx bestimmt für alle I/O Pins, ob sie als Eingang oder Ausgang dieses 
sollen.

PORTx bestimmt für alle Ausgänge, ob sie HIGH oder LOW sein sollen. 
Spezialfunktionen (wie UART, PWM, etc) übergehen diese Bits.

PINx ermöglicht es Dir, den Status von Eingängen zu lesen.

In deiner Anwendung brauchst du vermutlich kein einziges dieser Register 
zu ändern, denn du nutzt ausschließlich Spezialfunktionen (ADC, UART, 
Timer).

Wir werden Dir jetzt ganz sicher nicht jedes Register einzeln erklären, 
denn diese sind im Datenblatt und in diversen Tutorials bereits 
beschrieben. Du musst sie nur lesen und ausprobieren.

> Ich bin im Moment auf den Tutorial Seiten zu Registern und I/O
> unterwegs. Die Antwort ist für mich daher nicht ersichtlich.

Sorry, aber das klingt so seltsam wie: Ich habe gerade eine Flasche 
Wasser getrunken, aber ich weiß nicht, was man gegen Durst tun muss.

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> PORTx bestimmt für alle Ausgänge, ob sie HIGH oder LOW sein sollen.
> Spezialfunktionen (wie UART, PWM, etc) übergehen diese Bits.

Was genau macht es für einen Unterschied ob ein Ausgang als High oder 
Low gesetzt ist ? Wenn er übers DDRx als Ausgang definiert ist, 
überträgt er dann nicht das signal einfach? Oder sind die als Ausgang 
definiert, fungieren aber tatsächlich erst als einer wenn der PORTx auf 
High gesetzt ist?

von Np R. (samweis)


Lesenswert?

Phil P. schrieb:
> Benötige ich PORTX=... überhaupt? Kann ich nicht mit DDRX= alles so
> setzen wie ich es benötige? oder kann man in diesem Register nur den
> gesamten Port auf Eingang oder Ausgang setzen ?

Man kann mit diesem Register jeden einzelnen Pin des Ports auf Eingang 
oder Ausgang setzen. Deshalb heißt das Data Direction Register (DDR).
Bit 0 ist Pin 0 usw.
Andere haben das auch DDRx geschrieben um anzuzeigen, dass "x" variabel 
ist.
Nämlich "A" für Port A usw.
In PORTx setzt jedes Bit den Zustand ("high" oder "low") eines Pins.

Wenn Du Dir mal ein paar Minuten Ruhe gönnst und in das Datenblatt 
schaust, wirst Du das genau so dort finden. Du kommst an dem Datenblatt 
nicht vorbei.

Beim Programmieren in C schreibt man das dann gerne so, weil es leicht 
lesbar ist und PBx, PORTx, DDRx usw. bereits vordefiniert sind:
Veit D. schrieb:
> DDRB  |= (1<<DDB6);   // PB6 Ausgang, Bit setzen
> PORTB |= (1<<PB6);    // PB6 einschalten, Bit setzen
> PORTB &= ~(1<<PB6);   // PB6 ausschalten, Bit löschen

Phil P. schrieb:
> möchte nur klarstellen in welche
> Situation ich mich befinde,

Ja, wir haben das verstanden. Du bist jetzt an der Uni.
OK.
Da ist es zwar nicht völlig unmöglich aber würde doch ziemlich 
schwierig, aus dieser Situation wieder heraus zu kommen, ohne etwas zu 
lernen. Also fang doch einfach damit an und sträube Dich nicht so.
Du musst das Datenblatt lesen. Ich nicht. Ich kenne es schon.

von Stefan F. (Gast)


Lesenswert?

> Wenn er übers DDRx als Ausgang definiert ist,
> überträgt er dann nicht das signal einfach?

Welches Signal könnte das denn sein, wenn nicht PORTx?

von Np R. (samweis)


Lesenswert?

Phil P. schrieb:
> Was genau macht es für einen Unterschied ob ein Ausgang als High oder
> Low gesetzt ist ?

High = Vcc, Low = 0V
Ungefähr... die genauen Potentiale und elektrischen Eigenschaften der 
Pins stehen im... na? Genau. Im Datenblatt.

von Np R. (samweis)


Lesenswert?

Hast Du mal ins Datenblatt geschaut?

Auszug:
"14.2
Ports as General Digital I/O
The ports are bi-directional I/O ports with optional internal pull-ups.
...
14.2.1 Configuring the Pin
Each port pin consists of three register bits: DDxn, PORTxn, and PINxn.
...
The DDxn bit in the DDRx Register selects the direction of this pin.
...
If PORTxn is written logic one when the pin is configured as an output 
pin, the port pin is driven high (one). If
PORTxn is written logic zero when the pin is configured as an output 
pin, the port pin is driven low (zero)."

Das hast Du alles gelesen, bevor Du schon wieder hier gefragt hast?

von Phil P. (mr3)


Lesenswert?

np r. schrieb:
> If PORTxn is written logic one when the pin is configured as an output
> pin, the port pin is driven high (one). If
> PORTxn is written logic zero when the pin is configured as an output
> pin, the port pin is driven low (zero)."

Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang 
definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des 
ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass 
spannung anliegt)?

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang
> definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des
> ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass
> spannung anliegt)?

Mache dich bitte kundig, wie eine Push-Pull Stufe arbeitet!

von Dieter F. (Gast)


Lesenswert?

Phil P. schrieb:
> Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang
> definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des
> ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass
> spannung anliegt)?

Dann lies halt das Tutorial - und laber hier nicht rum :-)

https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen

Weil Du vermutlich noch zu bequem bist, da durchzublättern (haben wir 
heute eigentlich Freitag?)

https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Zusammenfassung_der_Portregister

von Roland F. (rhf)


Lesenswert?

Hallo,
Phil P. schrieb:
> Kann diese Frage jemand mit ja oder nein beantworten? Ausschweifendes
> Fachgedöns bringt mich hier nicht weiter.


Im DDRX-Register setzt du die Datenrichtung der Portpins des 
entsprechenden Ports. Du gibst also vor ob der Portpin als Ein- oder 
Ausgang arbeiten soll. In diesem Register kannst nicht die Portpins 
selber setzen. Das DDRX-Register wird in der Regel einmal am Beginn des 
Programms konfiguriert und dann so belassen.

Im PORTX Register kannst du dagegen Portpins auf 0 oder 1 setzen. Dabei 
bedeutet eine 0 das der Portpin auf Ground gelegt wird, eine 1 auf VCC 
(Betriebsspannung, in der Regel 5 oder 3,3V).
Bei Portpins, die als Eingang konfiguriert sind, bedeutet eine 1 dagegen 
das für den entsprechenden Portpin ein Pull-Up-Widerstand eingeschaltet 
wird.

rhf

von Florian S. (sevenacids)


Lesenswert?

Bei all der Diskussion wundert es mich, dass beispielsweise noch niemand 
auf das Thema PWM eingegangen ist. Ich meine, der TO aktiviert in seinem 
Beispiel den Fast PWM Modus und setzt den Prescaler auf 256, weiß aber 
auf Nachfrage nicht so recht wie und warum er es macht.

Da läuten bei mir die Alarmglocken. Etwas, von dem man nicht verstanden 
hat, wie und warum man es macht, lässt man besser bleiben bis man es 
weiß. Wenn man etwas programmiert, sollte man stets in der Lage sein, 
jeden Schritt und den Zusammenhang auf Nachfrage erklären zu können, 
nicht nur einem Außenstehenden sondern auch sich selbst. Kann ich das 
nicht, muss ich mir das Wissen dazu erst einmal erarbeiten, Schritt für 
Schritt, und danach dort weitermachen. Hier ist der TO gefragt. 
Ansonsten ist alles, was man so erstellt, Pfusch und man macht nicht nur 
den Anderen sondern sich selbst etwas vor. "Es funktioniert, ich weiß 
zwar nicht wie und warum, aber es geht" ist in bezug auf Technik ein 
ganz gefährlicher Ansatz, denn sobald man nur eine Kleinigkeit ändert 
kann einem alles um die Ohren fliegen. Im einfachsten Fall passiert 
nicht viel, im schlimmsten Fall geht jemand dabei drauf. Außerdem: 
Gelernt hat man dabei nichts.

Konkret hätte ich jetzt erwartet, dass man ihm zunächst mal rät, sich 
mit dem Thema PWM näher auseinanderzusetzen bevor man mit Datenblättern 
daherkommt. Also erstmal das "know-why" abklären bevor man zum 
"know-how" übergeht. Hat man das Konzept PWM verstanden, kann man 
leichter ableiten was man mit dem Prescaler macht (-> teilt die 
Taktfrequenz des Mikrocontrollers durch den Faktor x und nimmt dies als 
PWM-Frequenz), was es mit den 8-bit bzw. 256 Werten auf sich hat (-> 
legt den Tastgrad fest), usw. Um das dann umzusetzen, wird er um ein 
paar Grundlagen in Programmiertechnik nicht herumkommen. Ansonsten läuft 
es auf Gefrickel heraus, wie im vorigen Absatz beschrieben. Am 
sinnvollsten hier wäre es wirklich, wie schon vorgeschlagen, die 
Tutorials durchzugehen. Am besten eines von den tausenden 
Blink-LED-Beispielen abarbeiten, denn hier versteht man ganz 
eindrücklich wie das mit den ganzen DDRx, PINx und PORTx, also Pins 
ein-/ausschalten und die Datenrichtung festlegen, programmiertechnisch 
funktioniert. Danach mal eine LED mit PWM dimmen, auch dazu gibt es 
Beispiele. Und nicht nur Copy&Paste, sondern nach der Art "learning by 
doing" damit herumspielen und schauen, ob das, was man erwartet dann am 
Ende auch herauskommt.

Ist das PWM-Problem dann gelöst und verstanden, macht man mit dem 
nächsten weiter...

von Stefan F. (Gast)


Lesenswert?

Ich hatte angenommen, dass er den Sinn von PWM verstanden hat, da er 
dazu nichts gefragt hat.

Die Grundlagen zu PWM sind notfalls Bestandteil der Tutorials und auch 
im Datenblatt des Mikrocontrollers ist beschrieben. Also wird er es bald 
erfahren.

Vorausgesetzt, er arbeitet diese Unterlagen auch tatsächlich durch, 
anstatt seine Zeit mit Diskutieren zu verplempern.

Frage an den TO:

Hast du Bauteile, um den Mikrocontroller auszuprobieren? Hast du die 
Bluetooth Module vorliegen?

Wenn nicht, warum sitzt du dann noch vor dem Computer und bist nicht 
längst unterwegs zu Conrad (oder einem anderen Elektronik Laden)? Noch 
kannst du es schaffen, gib Gas!

von Phil P. (mr3)


Lesenswert?

Das Prinzip von PWM ist mir durchaus klar.

Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt" 
oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil - 
überraschung - ich genau das tue und ich würde nicht penetrant 10 mal 
die gleiche Frage stellen, wenn das was ich dort lese nicht noch 
Unklarheiten hätte.

von Alex (Gast)


Lesenswert?

Phil P. schrieb:
> Was genau macht es für einen Unterschied ob ein Ausgang als High oder
> Low gesetzt ist ?
Der Unterschied ist, dass an dem Pin dann 0V oder Vcc liegen. Der 
Controller kann nicht erraten ob du z.B. eine LED einschalten oder 
ausschalten willst.

>Wenn er übers DDRx als Ausgang definiert ist,
> überträgt er dann nicht das signal einfach?
Welches Signal?

>Oder sind die als Ausgang
> definiert, fungieren aber tatsächlich erst als einer wenn der PORTx auf
> High gesetzt ist?

Wenn du PORTx nicht setzt, steht in dem Register trotzdem was drin. Der 
Resetwert wird vermutlich im Datenblatt stehen. Und vermutlich 0V sein.

von dumdum (Gast)


Lesenswert?

Nach einem Reset sind die Registerinhalte unbestimmt .

"Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang
definierter Pin (über DDRx) nur funktioniert.. "

Er funktioniert enthält aber nur einen Zufallswert (0 oder 1).
Das ist nicht Zielführend.

Also: du mußt dem µC schon sagen was du willst. Soll der Pin als ein 
oder Ausgang verwendet werden wird durch die Werte im DDRx bestimmt.

Wenn du Daten ausgeben willst musst du die natürlich auch schreiben 
(PORTx). Ansonsten enthält der noch den vorherigen Wert bzw. ach einem 
Reset nur einen Zufallswert (0 oder1).

Stell dir das DDRx Register als Ampel an einer Verengung vor. Der 
physikalische Pin kann natürlich nicht gleichzeitig auf 1 und 0 stehen.
Du musst die Fahrrichtung bestimmen.
Ohne Autos kein Verkehr egal was die Ampel sagt.

von Dieter F. (Gast)


Lesenswert?

Phil P. schrieb:
> ber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt"
> oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil -
> überraschung - ich genau das tue und ich würde nicht penetrant 10 mal
> die gleiche Frage stellen, wenn das was ich dort lese nicht noch
> Unklarheiten hätte.

Zusammenfassung der Portregister
Für jeden Hardwareport gibt es im Mikroprozessor insgesamt 3 Register:

Das Datenrichtungsregister DDRx. Es wird verwendet um die Richtung jedes 
einzelnen Mikroprozessor-Pins festzulegen. Eine 1 an der entsprechenden 
Bit Position steht für Ausgang, eine 0 steht für Eingang.
Das Einleseregister PINx. Es wird verwendet um von einem 
Mikroprozessor-Pin den aktuellen, extern anliegenden Zustand einzulesen. 
Dazu muss das entsprechende Datenrichtungsbit auf Eingang geschaltet 
sein.
Das Ausgangsregister PORTx. Es erfüllt 2 Funktionen, je nachdem wie das 
zugehörige Datenrichtungsbit geschaltet ist.
Steht es auf Ausgang, so wird bei einer entsprechenden Zuweisung an das 
PORTx Register der entsprechende Mikroprozessor-Pin auf den angegebenen 
Wert gesetzt.
Steht es auf Eingang, so beeinflusst das PORTx-Bit den internen 
Pullup-Widerstand an diesem Mikroprozessor-Pin. Bei einer 0 wird der 
Widerstand abgeschaltet, bei einer 1 wird der Widerstand an den 
Eingangs-Pin zugeschaltet.
Bei den neueren AVR (wie z. B. ATtiny13, ATtiny2313, ATtiny24/44/84, 
ATtiny25/45/85, ATmega48/88/168, usw.) kann man als Ausgang 
konfigurierte Pins toggeln (PORTx zwischen 0 und 1 „umschalten“), indem 
man eine 1 an die entsprechende Bit Position des PINx Register schreibt.

Was genau verstehst Du daran nicht? Was genau ist daran unklar?

Ich denke, Du willst hier nur veralbern.

von J. T. (chaoskind)


Lesenswert?

Veit D. schrieb:
> Wie gesagt, hilft dem TO hier nicht weiter. Das Arduino Framework darf
> er leider nicht verwenden, sonst wäre er schon längst fertig.  :-)

Wurde so nicht gesagt. Gesagt wurde, dass er "gebeten" wurde AS zu 
nutzen. Irgendwie fliegt mir im Kopf rum, das man das Arduino-Gefrickel 
auch im AS nutzen kann. Ich meine das hab ich mal irgendwo gelesen. Evtl 
lohnt sich ja mal Google danach zu fragen.

Phil P. schrieb:
> Benötige ich PORTx nur wenn ich den jeweiligen PIN anders benötige als

PINx oder ein bestimmter Pin vom PORTx? Die Frage macht so kein Sinn.

> übers DDRx initialisiert ist?

Wenn du den (vermutlich) Pin anders brauchst als im DDRx initialisiert 
ist, dann musst du das auch im DDRx ändern.

> Bleibt immernoch zu klären ob man mit DDRx nicht schon alles genau so
> einstellen kann wie man möchte

Das ist doch nun schon mehrfach gesagt worden. PORTx und DDRx und PINx 
sind alle mehr oder weniger unabhängig voneinander.

von Stefan F. (Gast)


Lesenswert?

Alex schrieb:
>> Was genau macht es für einen Unterschied ob ein Ausgang als High oder
>> Low gesetzt ist ?
> Der Unterschied ist, dass an dem Pin dann 0V oder Vcc liegen. Der
> Controller kann nicht erraten ob du z.B. eine LED einschalten oder
> ausschalten willst.

Er weiß noch nicht einmal, wie die LED angeschlossen ist. Je nach 
Schaltung leuchtet sie entweder bei HIGH Pegel oder bei LOW Pegel.

dumdum schrieb:
> Nach einem Reset sind die Registerinhalte unbestimmt .

Nein, definitiv nicht.
Alle Register haben einen definierten Anfangswert, der durch einen Reset 
oder Power-Up eingestellt wird. Steht im Datenblatt.
Dem Rest stimme ich zu.

Phil, kombiniere beim lesen ein Tutorial mit dem Datenblatt. Im Tutorial 
(egal welches) sind die wichtigsten Sachen leicht verständlich erklärt. 
Du solltest aber zu jeder Aussage auch im Datenblatt nachschauen, um es 
dort bestätigt zu finden. So kommst du langsam dahin, das Datenblatt zu 
verstehen. Nach einiger Erfahrung brauchst du nur noch dieses eine 
Dokument.

Mein weiter oben verlinktes Buch 
(http://stefanfrings.de/mikrocontroller_buch/index.html) verweist immer 
wieder auf konkrete Kapitel im Datenblatt, teilweise habe ich auch 
direkt daraus zitiert. Band 1 Kapitel 6.7 beschreibt die Port-Register. 
Ich würde Dir aber empfehlen, die Kapitel der Reihe nach zu lesen und zu 
experimentieren, damit Du ein Verständnis für die Materie bekommst.

von Stefan F. (Gast)


Lesenswert?

Der Post-Laden hat jetzt übrigens zu. Wenn du die Bauteile-Kiste noch 
haben willst, wird sie wahrscheinlich nicht mehr vor Weihnachten 
ankommen. Vielleicht willst du die persönlich abholen, ich wohne in 
Düsseldorf.

von Np R. (samweis)


Lesenswert?

Phil P. schrieb:
> Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt"
> oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil -
> überraschung - ich genau das tue und ich würde nicht penetrant 10 mal
> die gleiche Frage stellen, wenn das was ich dort lese nicht noch
> Unklarheiten hätte.

Nein. Es hat keine Unklarheiten.
Du hast noch Unklarheiten. Nicht das Datenblatt.
Solange Du Dein Problem externalisierst, wirst Du es nicht lösen.

Lies, was da steht. Dieter hat es Dir sogar übersetzt und 
zusammengefasst.
Wenn Du das Ding nicht liest und Dir über die einzelnen Begriffe klar 
wirst anstatt schlampig damit umzugehen, wirst Du nicht weiter kommen.

Das Lesen eines Textes verursacht manchmal - in Abhängigkeit von der 
individuell unterschiedlich ausgeprägten Fähigkeit des 
Textverständnisses - gewisse Anstrengungen. Die kann Dir niemand 
abnehmen.

von J. T. (chaoskind)


Lesenswert?

Phil P. schrieb:
> Aber jedes mal auf eine konkrete Frage zu hören : "Schau ins Datenblatt"
> oder "Schau dir Tutorials an" hilft mir nicht weiter. Weil -
> überraschung - ich genau das tue und ich würde nicht penetrant 10 mal
> die gleiche Frage stellen, wenn das was ich dort lese nicht noch
> Unklarheiten hätte

Kann ich sehr gut nachvollziehen und kenne ich gut aus meinen 
Anfangszeiten. Manchmal würd man gern durch den Monitor greifen :D.

Aber ich muss dir leider trotzdem sagen, dass mir nicht ganz klar ist, 
was dir nicht ganz klar ist. Nachdem ich den Thread hier durchgelesen 
hab, ist hier wirklich mehrfach alles gesagt worden, was zum Lösen nötig 
ist. Versuch doch nocheinmal zu beschreiben wo genau es hakt.

Ich vermute du bringst einfach die Funktionen von PINx, DDRx und PORTx 
durcheinander.

Dieter F. schrieb:
> Zusammenfassung der Portregister
> Für jeden Hardwareport gibt es im Mikroprozessor insgesamt 3 Register

Wurde hier sehr gut beschrieben....

von Norbert S. (norberts)


Lesenswert?

Dieter F. schrieb:
> Ich denke, Du willst hier nur veralbern.

Anders kann es kaum sein.
Robotik und Mechatronik und sowas hier ist ein Fach, was er nicht mag? 
Woraus besteht das Studium denn sonst?
Mechatronik und Robotik verstehe ich so, daß Informatik über Elektronik 
mit Mechanik verbunden wird. Einen µC programmieren um über BT einen 
Motor zu steuern ist ein Hassthema? Völlig absurd.
Wie ein Jurastudent, der meint, daß das mit den Gesetzen ihm nicht so 
läge.

Und sowas soll sonst fast eine Bachelorarbeit sein? Das ist eine 
Bastelei für ein WE, mehr nicht.
Ich wollte zur Fast-PWM am Anfang schreiben, daß die für sowas nicht gut 
geeignet ist, da man je nach Einstellung nie 0 oder 255 erreicht. Also 
entweder ist der Ausgang 0...254 oder 1...255.
Soweit wird Phil aber niemals kommen, wenn er nach 65 Beiträgen immer 
noch nicht kapiert hat, wie die Ports funktionieren.

Gruß,
Norbert

von Rainer V. (a_zip)


Lesenswert?

Phil P. schrieb:
> Beantwortet meine Frage halt nur begrenzt ob denn ein als Ausgang
> definierter Pin (über DDRx) nur funktioniert (wirklich seine Aufgabe des
> ausgebens verrichtet) wenn er per PORTx auf High gesetzt ist(, dass
> spannung anliegt)?

Hallo, allein diese Frage erinnert mich schmerzlich an meine 
Studienzeit, in der ich ab und an befreundeten Eltern den Gefallen getan 
habe, ihren Sprösslingen Mathenachhilfe zu geben. Da waren es aber 
Schüler...und hier...
Den Optimismus der Vielen hier, die zu Helfen versuchen, kann ich nicht 
teilen. Für mich zeigt der TO mit seinen Fragen, dass ihm jegliche 
elektrotechnischen Grundkenntnisse fehlen und die bräuchte er, wenn er 
einen Mikrocontroller auch nur ansatzweise verstehen will.
Ich zitiere nochmal extra: (wirklich seine Aufgabe des ausgebens 
verrichtet)
...Gänsehaut...
Gruß Rainer

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> Du solltest aber zu jeder Aussage auch im Datenblatt nachschauen, um es
> dort bestätigt zu finden.

ist ein guter tipp (Y)

Stefanus F. schrieb:
> Vielleicht willst du die persönlich abholen, ich wohne in
> Düsseldorf.

Am Montag kann ich ins Labor der Uni, da sollte alles benötigte 
vorhanden sein, trotzdem danke =)

J. T. schrieb:
> Wurde hier sehr gut beschrieben...

Habe ich auch schon mehrfach durchgelesen, ich glaube ich weiß woran es 
liegt..

Norbert S. schrieb:
> Woraus besteht das Studium denn sonst?

Na Am anfang vermutlich wie bei jedem aus den Basics wie Mathe, Physik, 
Chemie und diverse Grundlagen. Vorlesungen wie "wie programmiert man 
einen einen Mikrocontroller" gibt es leider nicht.  Hol dir ne Hausfrau 
von der Straße und stell die vor meine Aufgabe. Wenn die sich besser 
anstellt, gehe ich mich sofort exmatrikulieren, darauf hast du mein 
Wort.

Rainer V. schrieb:
> ...Gänsehaut...

Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen 
Laien verständlich auszudrücken , was dann auch nicht immer Fachkorrekt 
dargestellt wird. So möchte ich aber Sichergehen, dass wir nicht 
aneinander vorbeireden. Denkt gern mal an eure Anfangszeiten zurück ;)

Das Problem liegt glaube ich daran, dass wir uns missverstehen. Dass man 
übers DDRx sagt ob man einen Ein- oder Ausgang haben möchte ist klar.
Mithilfe des PORTx können wir dann den jeweiligen Ein-/Ausgang auf High 
oder Low setzen. Sprich ob er ein Signal (1) oder eben keines (0) 
ausgibt. Damit kann man eine LED an- oder ausmachen, korrekt?

Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben 
möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED 
leuchten lassen sondern die Drehzahl eines Motors über die Spannung 
regeln.

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Am Montag kann ich ins Labor der Uni, da sollte alles benötigte
> vorhanden sein

Sehr gut, nutze die Bauteile um sie auszuprobieren. Ich persönlich muss 
sie buchstäblich begreifen, damit ich gut lernen kann. Theorie ist nicht 
so mein Ding.

von Norbert S. (norberts)


Lesenswert?

Phil P. schrieb:
> Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen
> Laien verständlich auszudrücken

Wozu? Willst Du hier Hilfe von Laien, die noch weniger Ahnung haben als 
Du (wird hier schwer).

Phil P. schrieb:
> Das Problem liegt glaube ich daran, dass wir uns missverstehen. Dass man
> übers DDRx sagt ob man einen Ein- oder Ausgang haben möchte ist klar.
> Mithilfe des PORTx können wir dann den jeweiligen Ein-/Ausgang auf High
> oder Low setzen. Sprich ob er ein Signal (1) oder eben keines (0)
> ausgibt. Damit kann man eine LED an- oder ausmachen, korrekt?

Ja.
Und wenn das DDRx nicht gesetzt ist, schaltest Du mit Portx die Pullups 
ein.
PINx liefert Dir immer den aktuellen physikalischen Zustand des Pins.

PWM ist an/aus. Du regelst da erstmal keine Spannung.

Lies verdammt nochmal das gesamte Kapitel PWM im Datenblatt. Was Du dann 
nicht verstanden hast kannst Du fragen.
Manche Deiner Fragen sind einfach zu unsinnig, als daß man sie sinnvoll 
beantworten könnte.

Gruß,
Norbert

von Norbert S. (norberts)


Lesenswert?

Stefanus F. schrieb:
> Sehr gut, nutze die Bauteile um sie auszuprobieren.

Beim momentanen Kennissstand sollten es aber reichlich Bauteile sein...

Gruß,
Norbert

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben
> möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED
> leuchten lassen sondern die Drehzahl eines Motors über die Spannung
> regeln.
Oha..

von Phil P. (mr3)


Lesenswert?

Norbert S. schrieb:
> PWM ist an/aus. Du regelst da erstmal keine Spannung.

Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch? 
dann ergibt das auch Sinn.

Wisst ihr, normal teile ich eure Einstellung dass man niemandem was 
vorsagt und derjenige selbst nachlesen soll. Wenn er das aber tut und 
wiederholt die falschen Ansätze hervorbringt, dann möge man ihm einfach 
die Lösung sagen.
Löst dann des öfteren einen Domino-Effekt aus und einiges weitere wird 
auf einmal klarer (Y).
War jetzt vielleicht ein blödes Missverständnis aber ne direkte Antwort 
und man hätte sich die letzten 20 male " schau ins Datenblatt" und "Sieh 
im Tutorial nach" sparen können und ich wäre schon ein paar Stunden 
weiter. Dann mal schauen was ich mit den Kenntnissen anfangen kann.

Ich mach selbst denjenigen immer Mut zu fragen wenn sie was wissen 
möchten aber ich muss ehrlich gesagt zugeben ich traue mich hier selbst 
langsam nichtmehr. 80% der Kommentare hier sind unnötig und (wenns mich 
denn jucken würde) auch verletzend. Ist das denn Sinn eines solchen 
Forums?

von Stefan F. (Gast)


Lesenswert?

> Wenn ich ein PWM ausgeben möchte, was bringt mir dann "an" oder "aus"?

Wie ich bereits schrieb, wir der Wert im PORTx Register übergangen, wenn 
du einen Pin mit Spezialfunktion betreibt. In deinem Fall wird der Pin 
mit der Spezialfunktion "Output Compare" eines Timers verwendet.

Auch das steht im Datenblatt im Kapitel 13.3 Alternate Port Functions.

"Most port pins have alternate functions in addition to being general 
digital I/Os. Figure 13-5 shows how the port pin control signals from 
the simplified Figure 13-2 on page 76 can be overridden by alternate 
functions."

"• OC1A/PCINT1 – Port B, Bit 1
OC1A, Output Compare Match output: The PB1 pin can serve as an external 
output for the Timer/Counter1 Compare Match A. The PB1 pin has to be 
configured as an output to serve this function. The OC1A pin is also the 
output pin for the PWM mode timer function."

Ähnliches steht bei den anderen Pins, die ebenfalls als PWM Ausgang 
verwendbar sind.

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch?
> dann ergibt das auch Sinn.

Schon wieder so eine komische Frage. Was soll denn der "typischen 
PWM-An-Aus switch" sein?

Zur Frage "Was ist PWM?" liefert Google mir als erstes diesen schönen 
Artikel: 
http://digital.ni.com/public.nsf/allkb/9C90B9A416A509DD86257EF2007C1926
Das machen die PWM Ausgänge des Mikrocontrollers, wenn man ihn richtig 
programmiert.

> 80% der Kommentare hier sind unnötig

Unklare Fragen verursachen unklare/unpassende/unnötig umfangreiche 
Antworten. Du hast es in der Hand, die Diskussion dahin zu steuern, wo 
du sie haben willst.

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch?
Du hast also noch nie PWM in die Suchmaschine deiner Wahl eingegeben?

Interessant!

von Norbert S. (norberts)


Lesenswert?

Phil P. schrieb:
> Ah also macht der PIN am PWM ausgang den typischen PWM-An-Aus switch?
> dann ergibt das auch Sinn.

NEIN!
Lies noch mal. PIN ist der Zustand den Du auslesen kannst.
Wenn Du den Pin meinst, das Beinchen am µC, dann schreib das auch 
so.Dann wäre es richtig.

Du musst konkrete Fragen stellen, dann gibt es auch Antworten.
Schwammiges "Wie geht das" kann man nur mit "lies das Datenblatt!" 
beantworten.

Gruß,
Norbert

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> Wie ich bereits schrieb, wir der Wert im PORTx Register übergangen, wenn
> du einen Pin mit Spezialfunktion betreibt. In deinem Fall wird der Pin
> mit der Spezialfunktion "Output Compare" eines Timers verwendet.

Muss ich dann überhaupt einen Wert reinschreiben?

Ich hab gelesen dass es bei kleineren mikrocontrollern aus 
platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt 
sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen? (Nein 
ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen, 
bis ich da eine aussagekräftige Aussage machen kann)

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> (Nein
> ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen,
> bis ich da eine aussagekräftige Aussage machen kann)

Is klar.

von Volker S. (vloki)


Lesenswert?

Phil P. schrieb:
> Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen
> Laien verständlich auszudrücken , was dann auch nicht immer Fachkorrekt
> dargestellt wird. So möchte ich aber Sichergehen, dass wir nicht
> aneinander vorbeireden.

Lass das! Wir sind keine Laien, sondern Fachidioten ;-)


Phil P. schrieb:
> Was ich aber die ganze Zeit mein Problem war: Wenn ich ein PWM ausgeben
> möchte, was bringt mir dann "an" oder "aus"? Ich möchte ja keine LED
> leuchten lassen sondern die Drehzahl eines Motors über die Spannung
> regeln.

Ok, das ist nicht ganz unberechtigt. Du musst genaugenommen im Kapitel 
PWM des Datenblattes nachschauen, wie du den Pin zu konfigurieren hast.
Bei den von mir meistens benutzten Controllern muss man beispielsweise 
den Transmitter (Sender/Ausgang) Pin vom USART als digitalen Eingang 
definieren, damit die digitale Output Stufe des Ports und die Sender 
Output Stufe des USART nicht in die Quere kommen ;-)

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> (Nein
> ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen,
> bis ich da eine aussagekräftige Aussage machen kann)

Is klar.
Wenn es so sein muss...

von Phil P. (mr3)


Lesenswert?

Norbert S. schrieb:
> Dann wäre es richtig.

Entschuldigt die gelegentliche, der Übermüdung geschuldete, verwechselte 
Konvention Mister Allwissend.
Genau das meinte ich ja.

Norbert S. schrieb:
> Du musst konkrete Fragen stellen, dann gibt es auch Antworten

Ich bin der Meinung ich habe die Frage klar genug gestellt und auch 10 
mal anders formuliert (Ja-Nein-Frage) und wurde immer nur aufs 
Datenblatt oder Tutorial verwiesen

von Chris M. (chris_appment)


Lesenswert?

Bis wann muss das Projekt fertig sein?
Ein von Student zu Student ernstgemeinter und auf keinen Fall böser 
Tipp.
Sei so ehrlich zu dir selbst wie es geht und schiebe im Notfall das 
Modul um mehr Zeit zum Lernen zu bekommen.
Wenn du dir das mit Müh und Not auf den Controller programmierst und den 
Sinn dahinter nicht ganz verstanden hast, wird dich die Lücke später im 
Studium noch mehr ins Gesicht hauen.
Lieber von Anfang an richtig, als nur halb und später richtig auf die 
Schnauze fallen.
Wenn das Projekt bis Ende Sommer 19 fertig sein soll, wovon ich eher 
weniger ausgehe, habe ich nichts gesagt.

von Phil P. (mr3)


Lesenswert?

Volker S. schrieb:
> Lass das! Wir sind keine Laien, sondern Fachidioten ;-)

Ich meine nicht euch, sondern mich bzw hab da im Hinterkopf dass ich 
normalerweise derjenige bin, der wenigerwissenden was beibringt :D

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Muss ich dann überhaupt einen Wert reinschreiben?

Denk doch mal logisch mit. Wenn der Wert im Portx Register keine Rolle 
spielt, weil er durch die Spezialfunktion übergangen wird, dann ist es 
folglich scheiß egal, was da drin steht.

Aber das DDRx Register musst du richtig einstellen. Das steht so in dem 
von mir zitierten text aus dem Datenblatt.

> Ich hab gelesen dass es bei kleineren mikrocontrollern aus
> platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt
> sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen?

Du hast Dir ja nicht einmal die Pinbelegung auf Seite 2 angeschaut, 
geschweige denn verstanden, as wir Dir hier in 70 Beiträgen geschrieben 
haben!

Ich bin jetzt echt Fassungslos, du verarschst uns doch! Verarsche Dich 
selber!

Ich bin raus.

von Phil P. (mr3)


Lesenswert?

Chris M. schrieb:
> Ein von Student zu Student ernstgemeinter und auf keinen Fall böser
> Tipp.

Da hast du vollkommen Recht.Bin ich auch nebenher am überlegen aber ich 
bin eigentlich nicht der Typ der schnell aufgibt. Ich sollte halt in den 
nächsten Tagen einen Überblick über die noch zu bewältigende Menge 
bekommen damit ich das nämlich abschätzen kann.

Problematik: In 6 Wochen schreibe ich die erste Prüfung und bis dahin 
muss auch das Projekt fertig sein.

von Norbert S. (norberts)


Lesenswert?

Phil P. schrieb:
> Muss ich dann überhaupt einen Wert reinschreiben?

Jein. Du musst den Pin (NICHT PIN!) im DDR als Output definieren.

Phil P. schrieb:
> Ich hab gelesen dass es bei kleineren mikrocontrollern aus
> platztechnischen gründen so sein kann, dass ein PIN mehrfach besetzt
> sein kann. Gilt dies dann nicht für PINS mit Spezialfunktionen? (Nein
> ich werde mir jetzt bestimmt nicht ewig viele Datenblätter anschauen,
> bis ich da eine aussagekräftige Aussage machen kann)

Lies das fucking Datenblatt des 328. Da steht das alles. Sogar die 
Seiten wurden Dir schon genannt.
Deine Aussage ist komplett falsch. Eher ist es so, daß bei 
leistungsfähigeren µC viele Pins mit beliebigen Funktionen belegt werden 
können.

Gruß,
Norbert

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Problematik: In 6 Wochen schreibe ich die erste Prüfung und bis dahin
> muss auch das Projekt fertig sein.

Wenn Du so weiter machst, wirst du nie fertig. Du zeigst ja Null 
Bereitschaft, die Anleitungen zu lesen. Von nichts kommt nichts.

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> Denk doch mal logisch mit. Wenn der Wert im Portx Register keine Rolle
> spielt, weil er durch die Spezialfunktion übergangen wird, dann ist es
> folglich scheiß egal, was da drin steht.

Genau diese Frage hab ich schon vor 50 Beiträgen gestellt. Es war zu der 
Zeit keiner in der Lage ja oder nein zu sagen.

Stefanus F. schrieb:
> Du hast Dir ja nicht einmal die Pinbelegung auf Seite 2 angeschaut,
> geschweige denn verstanden, as wir Dir hier in 70 Beiträgen geschrieben
> haben!

Die letzten Posts gingen durchs Missverständnis ins Leere. Da habt ihr 
mich wohl genauso wenig verstanden wie ich euch.

Aber hey, ich bin leider nicht allwissend geboren worden wie so mancher 
hier.

von Stefan F. (Gast)


Lesenswert?

Dann ist jetzt deine erste Aufgabe, zu lernen, wie man Fragen stellt.

Oder du fragst halt nicht mehr - geht auch.

von Phil P. (mr3)


Lesenswert?

Stefanus F. schrieb:
> Wenn Du so weiter machst, wirst du nie fertig. Du zeigst ja Null
> Bereitschaft, die Anleitungen zu lesen. Von nichts kommt nichts.

Lesen heißt nicht verstehen. Wenn es unklarheiten gibt und ich nur Dumm 
angemacht werde wenn ich dazu etwas frage, frage ich irgendwann 
nichtsmehr und werde es auch nie verstehen.

Ich verarsche hier niemanden und weise gerne nochmal auf den 
Domino-Effekt hin.

Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen, quasi 
Materie von der man keine Ahnung hat, in einer anderen Sprache wo auch 
nochmal Probleme diesbezüglich auftauchen können ist alles andere als 
etwas, das man mal "locker nebenher macht".

von Alex (Gast)


Lesenswert?

Phil P. schrieb:
> Ich bin der Meinung ich habe die Frage klar genug gestellt und auch 10
> mal anders formuliert (Ja-Nein-Frage) und wurde immer nur aufs
> Datenblatt oder Tutorial verwiesen

Ich bin der Meinung dass die Antworten (ohne die Beleidigungen) klar 
genug waren auf deine Fragen. Doch leider gehst du nicht darauf an 
sondern stellst die gleiche Frage nochmal. Das frustiert hier offenbar 
einige

von Norbert S. (norberts)


Lesenswert?

Phil P. schrieb:
> Entschuldigt die gelegentliche, der Übermüdung geschuldete, verwechselte
> Konvention Mister Allwissend.
> Genau das meinte ich ja.

Du hast aber schon kapiert, daß das ein Unterschied ist? Bei Dir kann 
man sich leider nicht sicher sein. Da ist eine genaue Sprache umso 
wichtiger.

Mein Tip: Schau Dich mal in der Gegend um, wo man eine Lehre zum Imker 
machen kann.

Gruß,
Norbert

von Chris M. (chris_appment)


Lesenswert?

Wenn du parallel noch für andere Prüfungen lernen musst schieb das 
Modul. Gerade jetzt in den Basics ist es wichtig alles zu verstehen. Das 
Ende vom Lied ist schlimmstenfalls, dass du dir durch die Hektik vom 
Projekt, das Lernen der anderen Module versaust und das Semester war für 
die Katz

von Phil P. (mr3)


Lesenswert?

Alex schrieb:
> Ich bin der Meinung dass die Antworten (ohne die Beleidigungen) klar
> genug waren auf deine Fragen.

Wenn man halt aneinander vorbeiredet, dann nicht zwingend.

Norbert S. schrieb:
> Mein Tip: Schau Dich mal in der Gegend um, wo man eine Lehre zum Imker
> machen kann.

Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der 
ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen 
umgeht ;)

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen

Das Datenblatt ist nicht riesig.

Die entsprechende Dokumentation von STM32 Controllern ist 10x so 
umfangreich und trotzdem weniger ausführlich. Sei froh, dass du einen 
AVR verwenden darfst, und dann auch so ein 08/15 Modell. Für keinen 
anderen Mikrocontroller wirst du so viele Anleitungen und Beispiele 
finden, wie für den ATmega328.

> Vielleicht hab ich ja auch Glück und kann eine Ausbildung
> machen in der ich später Leuten zeigen kann, wie man richtig
> mit seinen Mitmenschen umgeht ;)

Ich kann Dir beibringen, Graubrot zu backen ..... oder lieber doch 
nicht, könnte zeitaufwändiger werden, als gedacht.

von Stefan F. (Gast)


Lesenswert?

Nicht mehr lange, und dieser Thread wird umfangreicher, als mein Buch.

von Dieter F. (Gast)


Lesenswert?

Phil P. schrieb:
> Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der
> ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen
> umgeht ;)

Lasst euch nur verarschen - ihn freut es :-)

von Rainer V. (a_zip)


Lesenswert?

Norbert S. schrieb:
>> Wie du dann vermutlich auch gelesen hast, versuche ich mich für einen
>> Laien verständlich auszudrücken
>
> Wozu? Willst Du hier Hilfe von Laien, die noch weniger Ahnung haben als
> Du (wird hier schwer).

Jau, hab' ich auch erst so verstanden! Der TO meint aber, dass er sich 
als Laie bemüht, gegenüber Fachleuten (also quasi gegenüber der 
Obrigkeit :-) Verständliches zu äußern... Erzähl deinem Prof. in der 
mündlichen Prüfung mal, nachdem du einen Haufen Unsinn abgesondert hast, 
dass du zwar keine Ahnung hast, das aber möglichst verständlich 
rüberbringen wolltest. Mindestens der Beisitzer wird in die Tischkante 
beißen...
Aber immerhin, die erste Hürde ist genommen und wir sind doch schon bei 
PWM! Auch wenn der Sprung von LED zu Motor noch mal ein ganz gehöriger 
werden wird...
Gruß und viel Erfolg weiterhin, Rainer

von Norbert S. (norberts)


Lesenswert?

Moin,

Phil P. schrieb:
> Sich dann mit einem riesigen Datenblatt beschäftigen zu müssen

Wie Stefanus schrieb, das ist vollkommen harmlos im Vergleich.
Es gibt die einzelnen Kapitel, in den Kapiteln Verweise.
Du sollst ja nur erstmal die relevanten Kapitel lesen aber selbst da 
verweigerst Du Dich ja. Das kann man an den Fragen ablesen.
Kollegen haben vor einiger Zeit mit STM32 angefangen. Das will man nicht 
mehr als pdf, also steht da ein halber Meter Dokubücher.

Vorschlag zur Güte: Lass erstmal eine LED blinken. Zuerst mit delay und 
dann vielleicht mit PWM. Dann stellst Du konkrete Fragen wenn es nicht 
läuft.

Gruß,
Norbert

von Rainer V. (a_zip)


Lesenswert?

Norbert S. schrieb:
> Vorschlag zur Güte: Lass erstmal eine LED blinken. Zuerst mit delay und
> dann vielleicht mit PWM. Dann stellst Du konkrete Fragen wenn es nicht
> läuft.

...und auf jeden Fall fragen, ob man den Widerstand an der LED weglassen 
kann! Sorry, aber der mußte jetzt sein...
Gruß Rainer

von J. T. (chaoskind)


Lesenswert?

Ich muss auch sagen, dass die Atmeldatenblätter ein Traum sind, im 
Vergleich zu anderen. Klar strukturiert, es lässt sich alles schnell 
finden was man  braucht.

Ein anderer Tip wäre noch, dir bei Conrad das "Mikrocontroller lernen 
und verstehen"-Kit besorgst oder schaust, dass du das Handbuch dazu 
findest. Das fand ich als Einsteiger (Elektronikkentnisse aber weder 
programmier- noch uC-Erfahrung) sehr verständlich aufbereitet. Ist zwar 
alles in asm, aber auch das ist eigentlich ein Vorteil, da man so den 
Controller sehr gut kennenlernt.

Damit hab ich von wie gesagt 0 angefangen und konnte nach der ersten 
Hälfte eines Wochenendes eine LED per PWM dimmen. Der Sprung auf den 
Motor war dann das Tauschen der LED gehen einen FET und Motor. Ab und an 
starb der FET und ich lernte die Vorzüge einer Freilaufdiode zu schätzen 
;-)

P.S. es gibt da 2 Kits. Bei dem einen ist ein uC dabei, in den dein 
Programm eintasten musst, ich meine das andere. Wenn ich mich recht 
entsinne ist bei dem anderen ein Atmega8 und ein 
simpelst-Programmieradapter bei,  für den brauchst du noch einen 
USB-rs232 umsetzer, falls dein Rechner nicht noch eine native haben 
sollte.

: Bearbeitet durch User
von Phil P. (mr3)


Lesenswert?

Rainer V. schrieb:
> ...und auf jeden Fall fragen, ob man den Widerstand an der LED weglassen
> kann! Sorry, aber der mußte jetzt sein...

Wenn man nicht möchte, dass es die LED zerfetzt sollte man den wohl 
einbauen ;) Heißt zwar "Vor"-widerstand aber ist eigentlich egal ob man 
den vor oder nach der LED einbaut.

J. T. schrieb:
> Das fand ich als Einsteiger (Elektronikkentnisse aber weder
> programmier- noch uC-Erfahrung) sehr verständlich aufbereitet.

Danke für diesen Tipp. Ich werde es mir mal durch den Kopf gehen lassen. 
Aber für heute lass ich das Projekt ruhen.

Vielen Dank an alle die ernsthaft bemüht waren mir zu helfen und die 
nötige Geduld hatten. Gute Nacht und vielleicht bis Morgen =)

Beitrag #5659750 wurde von einem Moderator gelöscht.
von Herbert (Gast)


Lesenswert?

@Phil P.

Was ist denn mit dir nicht richtig?
Das ist absolut das falsche Studienfach!

Du kannst kein Poti auslesen, wie willst du die Prüfungen schaffen? Es 
endet wie im 1. Semester, du versagst in alles 11 Klasuren.

von Rainer V. (a_zip)


Lesenswert?

Dieter F. schrieb:
> Phil P. schrieb:
>> Vielleicht hab ich ja auch Glück und kann eine Ausbildung machen in der
>> ich später Leuten zeigen kann, wie man richtig mit seinen Mitmenschen
>> umgeht ;)
>
> Lasst euch nur verarschen - ihn freut es :-)

...hoffentlich hast du bis dahin nicht nur Zeigen gelernt, sondern auch 
Sagen...

von Zeno (Gast)


Lesenswert?

Phil P. schrieb:
> - Während Bekannte von mir die BWL, Wirtschaftsinformatik usw studieren
> und 3-5 Prüfungen pro Semester schreiben, habe ich im Schnitt 9-11.
> -Je nach Studiengang wird das Studium immer umfangreicher weil es mehr
> und komplexere Technik gibt (Vergleich Maschinenbau, Elektrotechnik vor
> 30 Jahren und Heute).

Die Studenten heutzutage sind schon bedauernswert.
Die Ursachen sind nicht das umfangreiche Studium. Das Problem beginnt 
schon viel früher, nämlich in den Gymnasien und Realschulen. Das 
durchschnittliche Leistungsniveau der Schulabgänger wird immer 
niedriger. Aber lassen wir das jegliche Diskussion über das Thema ist 
müßig.

von Theor (Gast)


Lesenswert?

@ Phil P.

Ich will Dir noch ein paar abschliessende Worte sagen.

Die Situation muss für Dich frustrierend sein. Du stellst Fragen und 
wirst auf Dich selbst zurückgeworfen und kritisiert. Eine Lösung hast Du 
nicht.

Bei Kritik ist naturgemäß immer die Frage, ob sie zutrifft. Oft sind die 
Motive für Kritik nicht genannt. Manchmal muss man vermuten, dass jemand 
einfach Lust an der Kritik hat. Das musst, oder solltest Du jetzt einmal 
gründlich überlegen. Ist die Kritik berechtigt oder nicht?

Ich kann Dir nur versichern, dass ich mich nicht lediglich damit 
vergnüge, Leute hier abzukanzeln. Du hast selbst gesagt, dass ich Dir an 
anderer Stelle (leider erinnere ich mich nicht mehr, an welcher) 
tatsächlich geholfen habe. Lies doch bitte nochmal meine Beiträge hier 
und prüfe auch die anderen noch einmal und gehe mit Dir selbst zu Rate, 
wie Du Deine Herangehensweise und vor allem Deine Einstellung ändern 
kannst und ob Du das überhaupt willst und - was am schwersten sein wird 
- , ob Du für dieses Studium die Eignung hast. Oft denkt man, dass man 
nur etwas wert ist, wenn man dieses oder jenes tut oder kann und irrt 
sich dabei. Jeder Mensch ist ein Wert an sich. Und jeder ist in 
irgendwas gut.

Was immer Du im Leben erreichen willst, ob es nun dieses Studium ist 
oder ob Du Dich für etwas anderes entscheidest, wünsche ich Dir ein 
gutes Leben und viele schöne Momente.

von Zeno (Gast)


Lesenswert?

Phil P. schrieb:
> Was genau macht es für einen Unterschied ob ein Ausgang als High oder
> Low gesetzt ist ?

Laß es sein Dir fehlen jegliche Basics. Es hilft auch nicht Dir es zu 
erklären. Das hat z.B. Dussel schon versucht und ich meine er hat es so 
getan, das es auch ein Anfänger versteht. Ich behaupte mal Du hast Dir 
seine Posts nur oberflächlich durchgelesen und deshalb nicht verstanden.

von Schukostecker (Gast)


Lesenswert?

Phil P. schrieb:
> Schukostecker schrieb:
>> Bist du sicher, dass eine technische Ausbildung das Richtige für dich
>> ist?
>
> Na eine Platine konnten wir auch ohne Vorkenntnisse entwerfen und
> layouten und uns das Prinzip einer Vollbrücke verstehen.
>

Wer ist "wir"? Hast du dafür etwa auch Hilfe gebraucht?

> Schukostecker schrieb:
>> Die Aufgabenstellung entspricht in etwa dem, was ein zukünftiger
>> Arbeitgeber erwarten wird: Sich in neue Themenbereiche schnell und mit
>> Interesse selbstständig  einzuarbeiten.
>
> Korrekt. Aber wenn es denn soweit ist hat man wenigstens die Basics
> drauf und ist nichtmehr am Anfang das Studiums

Nein, das hat mit der richtigen Herangehensweise zu tun (Dokumentation 
lesen, verstehen und anwenden,..).

von Np R. (samweis)


Lesenswert?

Phil P. schrieb:
> Genau das meinte ich ja.
Wenn Du nicht schreibst, was Du meinst, woher sollen wir das dann 
wissen?
Phil P. schrieb:
> Ich bin der Meinung ich habe die Frage klar genug gestellt
Merkst Du etwas?
Wenn 30 Leute Dir das Gegenteil sagen, dann wird es Zeit, dass Du Deine 
Selbsteinschätzung überprüfst.
Und Dein Verhalten signifikant änderst.

Phil P. schrieb:
> Lesen heißt nicht verstehen.
Wenn das bei Dir so ist, ist das tatsächlich ein großes Problem, um 
das Du Dich vorrangig kümmern solltest.
Es könnte sein, dass

- Du für das Lesen und den damit verbundenen Denkprozess nicht die durch 
Deine individuellen Fähigkeiten bestimmte notwendige Zeit aufwendest. 
Oberflächlich "lesen" bringt Dich aber nicht weiter und ist 
verschwendete Zeit.

- Dir die Voraussetzungen fehlen, Dir das Verständnis von in Textform 
vorliegenden Beschreibungen komplexer Zusammenhänge selbständig zu 
erarbeiten. Das wäre schade. Denn das ist Voraussetzung für ein Studium.

- Du alle Hinweise verschiedener hilfsbereiter. fachkundiger 
Mitmenschen, dass Du am Studium des Datenblatts nicht vorbei kommst, 
ignoriert hast und das Ding tatsächlich nicht vollständig und im 
Zusammenhang gelesen hast.
Das wäre der schlimmste aller anzunehmenden Fälle.
Beratungsresistenz wirkt auf die Hilfsbereitschaft der meisten Menschen 
stark dämpfend.

Phil P. schrieb:
> ist alles andere als
> etwas, das man mal "locker nebenher macht".
Gibt es unter den Menschen, die Dich besser kennen, viele, die glauben, 
dass Du das Studium mal so locker nebenher machen wirst?


Was bringt Dir das alles?
Lies es, bis du es verstanden hast.
Antworte nicht darauf, kommentiere es nicht. Halte alle Deine schwachen 
Rechtfertigungen aus diesem Thread heraus.
Stelle sachliche, konkrete Fragen in klaren Worten unter korrekter 
Verwendung der richtigen Terminologie.
Nur dann kann Dir geholfen werden.

von Phil P. (mr3)


Lesenswert?

Zeno schrieb:
> Die Ursachen sind nicht das umfangreiche Studium.

Also ich sehe das definitiv als Problem. Ergibt ja auch irgendwo Sinn 
was ich sagte oder nicht ?...

Zeno schrieb:
> Das
> durchschnittliche Leistungsniveau der Schulabgänger wird immer
> niedriger.

Mag sein, kann ich jetzt weder bestätigen noch leugnen.

Herbert schrieb:
> Was ist denn mit dir nicht richtig?
> Das ist absolut das falsche Studienfach!

Und mit dir so? Weil mir ein Kurs nicht liegt und ich gewisse Inhalte 
darin nicht mag soll ich das Studium wechseln oder abbrechen ?

Herbert schrieb:
> Du kannst kein Poti auslesen, wie willst du die Prüfungen schaffen?

Wie jetzt du kannst keine Raketentechnik entwickeln? Wie willst du 
durchs Leben kommen O.ó
Ahh.. lass mich raten.. sowas hast du nie gelernt ? ;)

Herbert schrieb:
> Es
> endet wie im 1. Semester, du versagst in alles 11 Klasuren.

Netter Versuch aber im ersten Semester ging nur eine Prüfung in die Hose 
:P

Theor schrieb:
> ob Du für dieses Studium die Eignung hast

Ich bin kein Genie. Dafür bin ich fleißig. Wenn mal jemand bei etwas 
länger braucht (jeder hat irgendetwas das ihm nicht liegt) ist das kein 
Weltuntergang.

Zeno schrieb:
> Laß es sein Dir fehlen jegliche Basics.

Dachte das wäre geklärt? Ich hatte die ganze Zeit PWM im Kopf und da 
bringt mir ein fester Wert auf 1 oder 0 eben nichts.

Schukostecker schrieb:
> Wer ist "wir"? Hast du dafür etwa auch Hilfe gebraucht?

Zum einen bedeutet "wir", mein Projektpartner und ich. Zum anderen: Ähh 
ja? Wieviele Menschen auf diesem Planeten können eine Platine entwerfen 
ohne jegliche Vorkenntnisse? Inklusive Bauteildimensionierung, layouten, 
richtiges verschalten usw. Ich weiß nicht ob du vielleicht mal die 
nachliest was ein Studium ist aber dort geht man nicht hin, weil man 
schon alles kann und weiß ;)

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
nochmal,
wenn ich einen Port bitweise einrichten möchte sowohl als Ausgang als 
auch als Eingang, geht das so:
Hier ist die andere Default Pinpelegung des UART genommen worden und 
zwar die für den Mega32U2 und nicht ATiny2313.

ciao
gustav

von Max M. (max_m250)


Lesenswert?

Ich frag mich wie man eine uC-Platine entwirft wenn man noch nicht mal 
weiß was high oder low bedeutet. Und das im 3. Semester. Da kann ich 
schon verstehen dass einige an deiner Eignung für das Studium zweifeln. 
Der Vergleich mit der Raketentechnik hinkt. Jmd der in einem Studium in 
dem es größtenteils um Digitale Elektronik geht, im 3. Semester fragt 
was high oder low bedeutet wäre eher vergleichbar mit einem 
Bäckerlehrling, der im 2. Jahr fragt was ein Teig ist.
Sei es drum, befolge die Tipps die du bekommen hast und wenn es noch 
einzelne spezielle Fragen geben sollte bekommst du sicher eine Antwort.

von Stefan F. (Gast)


Lesenswert?

Phil P. schrieb:
> Weil mir ein Kurs nicht liegt und ich gewisse Inhalte
> darin nicht mag soll ich das Studium wechseln oder abbrechen ?

Ja, so sehe ich das auch.

Aus diesem Grund habe ich mein Studium nach 5 Monaten abgebrochen. Ich 
habe erkannt, dass es mir zu anstrengend wurde. Trotzdem bin ich 
inzwischen Senior Developer, damit stehe ich in der kleinen Firma über 
allen anderen Entwicklern.

Ich habe die nötigen Kenntnisse und Erfahrung ohne Studium gelernt. Das 
dauer nur länger und bringt weniger Geld ein, was keine Schande ist.

Nun halte ich einen Tag aber auch als zu kurze Zeitspanne, um Deine 
Fähigkeiten und Lernbereitschaft einzuschätzen. Du hast hartes Feedback 
bekommen, dass von den meisten hier sicher nicht böse gemeint war. Es 
mangelt hier leider am angemessenen Umgangston.

Kannst du mit meinem Buch etwas anfangen?
Die Experimente darin werden zwar fast alle mit dem ATtiny13 gemacht, 
aber du kannst sie ebenso mit dem größeren ATmega328 durchführen.

Bitte benutze "PIN" nur noch, wenn du damit ein PINx Register meinst. 
Den Anschluss am Chip nennen wir "Pin". In diesem Fall ist die 
Rechtschreibung keine unwichtige Nebensache, sondern sehr wichtig, um 
Missverständnisse zu vermeiden.

Wenn du solche Detailfragen hast, wie die Funktion des PORTx Registers 
bei PWM, dann probiere es besser einfach aus, bevor Du hier Fragen 
stellt. In diesem Fall hättest du gemerkt, dass es scheinbar irrelevant 
ist. Dann hättest du hier fragen können, ob dein Rückschluss korrekt ist 
und ob Dir jemand ein Stichwort nennen kann, nach dem du im Datenblatt 
suchen kannst.

Wir sind hier nämlich fast alle Datenblatt-Fetischisten (du wirst 
lernen, warum) und sehen es gerne, wenn ein Fragender mit einer gewissen 
Vorleistung voran geht. Dann wirst du automatisch auch wesentlich 
höflicher formulierte Antworten erhalten, da bin ich ganz sicher.

Ohne erkennbare Vorleistung ist der erste Reflex im Kopf des Lesers 
"Faule sau" und entsprechend zickig sind dann die Antworten. Bedenke, 
dass die meisten hier das Fach mühsam im Laufe vieler Jahre gelernt 
haben und permanent weiter lernen müssen. Wenn dann jemand kommt, der 
augenscheinlich meint, er könne mal eben das Wissen abgreifen um sich 
damit ein bequemes Leben zu schaffen, der wird nicht freundlich 
aufgenommen.

Nächste Woche hast du Zugang zu Bauteilen. Bastle damit herum, und lese 
die relevanten Kapitel im Datenblatt. Heute und an den Abenden empfehle 
ich Dir nochmal wärmstens mein Buch. Lies es wenigstens, denn es ist 
vollgestopft mit Erklärungen für Anfänger. Danach wirst du bestimmt die 
Fachliteratur (Datenblatt, etc) besser verstehen.

Beitrag #5660011 wurde von einem Moderator gelöscht.
von Karl B. (gustav)


Lesenswert?

np r. schrieb:
> Du am Studium des Datenblatts nicht vorbei kommst

Hi, zum Beispiel konnte das Proggi nicht portiert werden.
Nur durch Ansehen des Datenblatts auf Seite 2 konnte ich den Unterschied 
feststellen.

http://ww1.microchip.com/downloads/en/DeviceDoc/7799S.pdf

Denn: USART RXD und TXD sind auf andere Pinne geführt und auch anders 
definiert.

http://ww1.microchip.com/downloads/en/DeviceDoc/8246S.pdf

Mittlerweile gibt es Kurzfassungen "summaries" der Datenblätter.
Das sind solche.

ciao
gustav

: Bearbeitet durch User
von Phil P. (mr3)


Lesenswert?

Theor schrieb:
> #define POTI 19 //kann man so die Pins hier oben definieren ?
>
> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung
> ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler
> und der Atmel-IDE) nicht verwendet werden.

In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand 
aufklären? 
https://www.youtube.com/watch?v=2VPM2Q0JtxI&index=3&list=PL3SU2_dQ2eTYaQtEVKnCfZ0rysiFmbPQb


Ich hätte da mal ne Frage, die ich vermutlich nicht so leicht nur mit 
Datenblatt lösen kann. Vielleicht spielt es auch keine Rolle  aber wenn 
doch, gerne mit Begründung.

Da ich ja mit Bluetooth arbeite stellt sich mir die Frage ob ich das 
Signal in der Sendeplatine in PWM umwandeln soll und dann auf die 
Empfängerplatine schicken soll oder die eigentliche PWM Umwandlung erst 
in der Empfängerplatine stattfinden sollte

von Max M. (max_m250)


Lesenswert?

Die Umwandlung in pwm passiert erst im Empfänger

: Bearbeitet durch User
von Phil P. (mr3)


Lesenswert?

Max M. schrieb:
> Die Umwandlung in pwm passiert war im Empfänger

Kurze, ausreichende Antwort, danke!
Aber kann noch einer erklären warum genau?

von Max M. (max_m250)


Lesenswert?

Phil P. schrieb:
> Theor schrieb:
>> #define POTI 19 //kann man so die Pins hier oben definieren ?
>>
>> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest. Diese Nummerierung
>> ist eine Besonderheit bei Arduino und kann hier (mit dem GCC-Compiler
>> und der Atmel-IDE) nicht verwendet werden.
>
> In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand
> aufklären?
> 
https://www.youtube.com/watch?v=2VPM2Q0JtxI&index=3&list=PL3SU2_dQ2eTYaQtEVKnCfZ0rysiFmbPQb
>
>

In dem Video wird erstmal nur eine Zahl in eine Konstante gepackt. Das 
geht so natürlich. Wenn du aber den Poti auslesen willst musst du eine 
AD-Wandlung durchführen u.v.a.das geht prinzipiell anders als nur PINx 
einzulesen. Wie, verrät dir das Kapitel ADC im Datenblatt.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Phil P. schrieb:
>> #define POTI 19 //kann man so die Pins hier oben definieren ?
>> Nicht wenn Du ausserhalb der Arduino-Welt arbeitest.
> In diesem Tutorial wird das aber gemacht ( bei 15:50) kann das jemand
> aufklären?

Nein, das wird dort nicht gemacht. Es wird nur die Bitnummer innerhalb 
des Ports (für die LED) definiert.

"19" wäre keine gültige Bitnummer. Bei Arduino ist der Zugriff auf I/O 
Pins durch abstrahierende Funktionen gekapselt, wo die Ports und Pins 
einfach durchnummeriert sind.

Das angehängte Bild zeigt diese Zuordnung. Ganz außen in Pink stehen die 
Arduino Pin Nummern. In beige stehen die "echten" Bezeichnungen, die der 
Chiphersteller vergeben hat.

Der pinke Arduino Pin 19 ist in Wirklichkeit PC5 (Port C bit 5).
In Arduino kann man anstelle der Nummer 19 auch den Alias A5 verwenden.

Hier muss man echt aufpassen: Was Arduino A5 nennt, ist in Wirklichkeit 
PC5!

Die Arduino Bezeichnungen gelten nur, wenn man mit Arduino Funktionen 
auf die Pins zugreift. Wenn du hingegen direkt zugreifst, gelten die 
"echten" Bezeichnungen.

> pinMode(A5,OUTPUT)
> pinMode(19,OUTPUT)
> DDRC |= (1<<5)

> digitalWrite(D10,HIGH)
> digitalWrite(10,HIGH)
> PORTB |= (1<<2)

> digitalWrite(D5,LOW)
> digitalWrite(5,LOW)
> PORTD &= ~(1<<5)

von Max M. (max_m250)


Lesenswert?

Phil P. schrieb:
> Max M. schrieb:
>> Die Umwandlung in pwm passiert war im Empfänger
>
> Kurze, ausreichende Antwort, danke!
> Aber kann noch einer erklären warum genau?

Das machst du ja mit dem Timer und den kannst du direkt so konfigurieren 
dass er den Pin korrekt toggelt. Wenn du das schon im Sender machst 
müsstest du das PWM Signal in Echtzeit übertragen und auswerten, was 
deutlich komplizierter ist als einfach alle paar ms einen Poti Wert zu 
übertragen und in das Timer-Register zu schreiben

von Stefan F. (Gast)


Lesenswert?

Die Bluetooth Schnittstelle wäre gar nicht geeignet, PWM in Echtzeit zu 
übertragen. Denn sie sammelt Daten und überträgt Paketweise, ggf. auch 
mit mehrfachen Wiederholungen, wenn eine Störung auftrat.

Das Übertragungsprotokoll würde Dir dein Timing versauen.

von René H. (Gast)


Lesenswert?

Phil P. schrieb:
> Aufgabenstellung: Drehzahlsteuerung eines DC Motors mittels PWM über
> Bluetooth. Die Einstellung soll über einen Poti erfolgen.

Muss es ein Analog Poti sein? Mit einem Digitalpoti könntest Du Dir 
zumindest das ganze ADC geraffel sparen.

PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth 
schon eher.

Grüsse,
René

von Phil P. (mr3)


Lesenswert?

Danke Stefanus und Max!

René H. schrieb:
> PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth
> schon eher.

Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft 
man kann den Pin an dem das jeweilige Bluetooth Modul hängt als 
Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt 
das automatisch das Signal?

von Einer K. (Gast)


Lesenswert?

Phil P. schrieb:
> Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft
> man kann den Pin an dem das jeweilige Bluetooth Modul hängt als
> Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt
> das automatisch das Signal?

Ein Irrtum!

Siehe: 
https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter

von Roland F. (rhf)


Lesenswert?

Hallo,
Phil P. schrieb:
> Aber kann noch einer erklären warum genau?

Weil das PWM-Signal erst mittels der im Empfänger befindlichen Hardware 
erzeugt wird. Das ist viel einfacher als vorher ein PWM-Signal per 
Bluetooth zum Empfänger zu "transportieren" um es dann dort mit 
Software, die dafür eigens geschrieben werden muss, auszugeben. Die 
"PWM-Empfängerhardware" nimmt dir das viel ab.

rhf

von René H. (Gast)


Lesenswert?

Phil P. schrieb:
> Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft
> man kann den Pin an dem das jeweilige Bluetooth Modul hängt als
> Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt
> das automatisch das Signal?

Klingt simpel. Im Code wirds  dann etwas komplizierter. Ich würde wie 
folgt vorgehen:

1. ein Programm mit PWM schreiben und mit LA oder Oszi prüfen.
2. Programm für Analog Poti und ADC schreiben. Prüfen wie oben.
3. Bluetooth Programm schreiben. Prüfen wie oben.

Teile aller Programme in einzelne Files auslagern und in einem main() 
zusammenfügen.

Starten würde ich mit Bluetooth.

Grüsse,
René

von Hannes J. (hannes_j)


Lesenswert?

Du kannst das Bluetooth Modul nicht einfach über einen als Ein/Ausgang 
definierten Pin anschließen. Du musst richtig damit kommunizieren. Dafür 
benutzt du UART. Auch dazu gibt es ein Kapitel im Datenblatt. ;-)

von Stefan F. (Gast)


Lesenswert?

> ich habe gehofft man kann den Pin an dem das jeweilige
> Bluetooth Modul hängt als Eingang/Ausgang definieren
> und wenn die Module gepairt sind überträgt
> das automatisch das Signal?

Die spannende Frage ist erneut: Was ist "das Signal"? Wo kommt es her, 
wie sieht es aus. Welche Anforderungen stellt das Bluetooth Modul an 
"das Signal"?

Ich habe Dir weiter oben geschrieben, dass du dich mit der UART 
Schnittstelle und eventuell einem Übertragungsprotokoll beschäftigen 
musst.

von Hannes J. (hannes_j)


Lesenswert?

René H. schrieb:
>
> Starten würde ich mit Bluetooth.

Würde ich eher als letztes machen. Warum mit dem schwersten anfangen??

von Stefan F. (Gast)


Lesenswert?


von Volker S. (vloki)


Lesenswert?

Phil P. schrieb:
> Tatsache? soweit bin ich zwar noch nicht wirklich aber ich habe gehofft
> man kann den Pin an dem das jeweilige Bluetooth Modul hängt als
> Eingang/Ausgang definieren und wenn die Module gepairt sind überträgt
> das automatisch das Signal?

Falls du damit meinst, es überträgt die Daten, welche du vom Sender über 
den USART ausgibst, dann ja.
Sender und Empfänger Controller müssen nichts* davon wissen, dass es 
sich um eine BT Verbindung handelt. Da könnte genauso gut ein RS232 
Kabel oder ein virtueller ComPort über USB dran hängen.

*(wenn sie nicht für den Verbindungsaufbau und das Pairing der Module 
zuständig sind)

von Hannes J. (hannes_j)


Lesenswert?

Stefanus F. schrieb:
> Lies das: http://stefanfrings.de/bluetooth/index.html

Ey auf deiner Seite gibts ja wirklich ne Menge zu finden. Sehr cool! 
Werd mich da mal umschauen. ;-)

von René H. (Gast)


Lesenswert?

Hannes J. schrieb:
> Würde ich eher als letztes machen. Warum mit dem schwersten anfangen??

Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon 
rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren 
Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen. 
Erfahrungen aus meinem Studium (liegt allerdings etwas zurück).

Grüsse,
René

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

@Phil P.

Ich denke schon, das du die grundsätzlichen Voraussetzungen mitbringst. 
Deine durchaus reflektiere Antwort auf manche Fragen zeigt mir das.

Das Problem scheint zu sein, das du möglicherweise in ähnlicher 
Situation bist wie ein Blinder, dem man Farben erklären möchte. 
Möglicherweise gar das schöne Farbspiel eines Sonnenuntergangs über dem 
Wasserspiegel an einer Südsee-Insel.

Vielleicht ist der von dir gewählte Kommunikations-Kanal einfach 
problematisch? Vermutlich liesse sich in einer Stunde "über die Tonspur" 
deutlich mehr erreichen als hier eine STunde zu tippen.

: Bearbeitet durch User
von Phil P. (mr3)


Lesenswert?

Volker S. schrieb:
> Falls du damit meinst, es überträgt die Daten, welche du vom Sender über
> den USART ausgibst, dann ja.

Das war der Plan (Y)

Stefanus F. schrieb:
> Lies das: http://stefanfrings.de/bluetooth/index.html

Das habe ich schon vor ner weile mal gelesen als es um die Recherche 
nach einem geeigneten BT Modul ging=)

Der Mikrocontroller unterstützt das ja soweit alles. RX/TX war bei uns 
auch genau dafür vorgesehen. Dementsprechend wird auch der jeweilige Pin 
als ein oder Ausgang benutzt.

Falls da noch mehr Problematiken auftauchen werden, werde ich das wohl 
merken wenn ich im Projekt soweit bin :D

von Hannes J. (hannes_j)


Lesenswert?

René H. schrieb:
> Hannes J. schrieb:
>> Würde ich eher als letztes machen. Warum mit dem schwersten anfangen??
>
> Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon
> rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren
> Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen.
> Erfahrungen aus meinem Studium (liegt allerdings etwas zurück).
>
> Grüsse,
> René

Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt 
sagst er soll mal als erstes ne UART-Verbindung mit einem 
Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk..

von Phil P. (mr3)


Lesenswert?

Wegstaben V. schrieb:
> Vermutlich liesse sich in einer Stunde "über die Tonspur"
> deutlich mehr erreichen als hier eine STunde zu tippen.

Interessanter Vergleich ;) Da magst du Recht haben, aber am Wochenende 
schwer an jemanden heranzukommen, der dafür Zeit und Lust hat.Vor allem 
wenn dann auch langsam die Weihnachtsfeiertage vor der Tür stehen. Am 
Dienstag sehe ich den zuständigen Prof wieder, das wird vermutlich auch 
aufschlussreich.

von Phil P. (mr3)


Lesenswert?

Hannes J. schrieb:
> Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt
> sagst er soll mal als erstes ne UART-Verbindung mit einem
> Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk..

Ich weiß was das bedeutet. Immernoch nicht klar, dass es sich um ein 
Missverständnis handelte?

von Volker S. (vloki)


Lesenswert?

René H. schrieb:
> Hannes J. schrieb:
>> Würde ich eher als letztes machen. Warum mit dem schwersten anfangen??
>
> Weil es eben das schwerste ist und einem die Zeit am Ende nicht davon
> rennt. Man kann die verbleibende Zeit besser einteilen. Die leichteren
> Dinge sind unter Zeitdruck (Freinacht) einfacher zu erledigen.

Im vorliegenden Fall würde ich BT auf jeden Fall mal ganz hinten 
anstellen und zunächst das "Poti" einfach an der "Empfängerplatine 
anschließen.

So kann man ein grundsätzlich funktionsfähiges System bekommen, bei dem 
zwei Module (ADC und PWM) bearbeitet werden können und dem vorerst 
lediglich die Funkverbindung fehlt. NACHDEM das funktioniert, macht man 
weiter mit BT und verschiebt ADC in den Sender.

von Stefan F. (Gast)


Lesenswert?

Beim seriellen Port brauchst du die I/O Pins nicht zu konfigurieren (ist 
ein Sonderfall). Wenn du den Sender der UART Schnittstelle einschaltest 
(Bit TXEN0 im Register UCSR0B) wird der Pin automatisch zum Ausgang. Der 
andere (RxD) Pin ist sowieso schon per Default ein Eingang.

von Np R. (samweis)


Lesenswert?

Phil P. schrieb:
> überträgt
> das automatisch das Signal?

Du gehst sehr ungenau mit dem Begriff "Signal" um.

So ein µC ist keine magische Black Box, die mit irgendeinem Voodoo 
Zauber ein beliebiges (analoges, digitales, Funk-, Flaggen-...) Signal 
"überträgt".

Du musst erst einmal definieren, was genau Dein Signal ist. Ein Pegel 
high/low? Eine analoge Spannung? Taktflanken? PWM mit Frequenz x?
Dann kannst Du im Datenblatt nachschauen, was die Eingänge des µC 
eigentlich wahrnehmen können und wie.

Um das Signal dann zu "übertragen" muss der µC es verarbeiten und wieder 
ausgeben, am besten in einer Form, die von der Gegenseite verstanden 
wird.

Bildlich gesprochen kannst Du nicht in ein Bluetooth-Modul hineinpusten 
und erwarten, dass beim Empfänger durch "automatische Übertragung" Wind 
herauskommt.

von René H. (Gast)


Lesenswert?

Phil P. schrieb:
> Interessanter Vergleich ;) Da magst du Recht haben, aber am Wochenende
> schwer an jemanden heranzukommen, der dafür Zeit und Lust hat

Wo bist Du denn in etwa zuhause? Evtl. lässt sich da über 
Weihnachten/Neujahr was machen.

Grüsse,
René

von Hannes J. (hannes_j)


Lesenswert?

Phil P. schrieb:
> Hannes J. schrieb:
>> Der TO hat oben gefragt was high bzw low bedeutet. Wenn du ihm jetzt
>> sagst er soll mal als erstes ne UART-Verbindung mit einem
>> Bluetooth-Modul herstellen, sitzt er da wie ein Schwein vorm Uhrwerk..
>
> Ich weiß was das bedeutet. Immernoch nicht klar, dass es sich um ein
> Missverständnis handelte?

Na ich hoffe doch, dass es nur ein Missverständnis war. Und trzd hast du 
gefragt. Die Tatsache, dass es dieses Missverständnis gab sagt mir, du 
solltest dich eher auf das lernen konzentrieren und daher von einfach 
nach schwer gehen und nicht auf die Zeiteinteilung achten und das 
schwerste als erstes machen. ;)

von René H. (Gast)


Lesenswert?

Volker S. schrieb:
> Im vorliegenden Fall würde ich BT auf jeden Fall mal ganz hinten
> anstellen und zunächst das "Poti" einfach an der "Empfängerplatine
> anschließen.

Wenn ich nicht unter Zeitdruck/definierte Terminierung stehe, ja, 
definitiv. Da das aber kein Hobby Projekt ist, ist der Faktor Zeit 
elementar und mit einzubeziehen.


Mit BT zuerst, lernt man ohne Stress am schnellsten und bewältigt die 
restlichen Aufgaben ohne grössere Probleme. Meiner Meinung nach, muss 
nicht so sein.

Grüsse,
René

von Volker S. (vloki)


Lesenswert?

René H. schrieb:
> Mit BT zuerst, lernt man ohne Stress am schnellsten

Oder gar nicht, dann steht man am Ende mit leeren Händen da.
Im anderen Fall kann man eventuell 2 von 3 Modulen als gelöst abhaken.
Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu 
übertragende "Signal" ist.

Geschmackssache ;-)

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

René H. schrieb:
> Muss es ein Analog Poti sein? Mit einem Digitalpoti könntest Du Dir
> zumindest das ganze ADC geraffel sparen.
>
> PWM sollte auch als Anfänger nicht die Herausforderung sein. Bluetooth
> schon eher.

Wo ist der AVR-ADC denn problematisch?
Das ganze "Projekt" ist doch nichts weiter als ein etwas umfänglicheres 
Anfänger-Projekt.
Die Gesamtaufgabe l#sst sich problemlos in einzelne Teile ("Probleme") 
zerlegen. Daa hilft es ungemein, erst mal eine LED blinken zu lassen, 
dann einen Taster und dann ein Poti einzulesen. Die Potiwerte lässt man 
sich dann an einem seriellen Terminal ausgeben, und steuert die LED per 
Terminal.
Irgendwann kann man dann auch mal gucken, wie man die PWM hinbekommt.

von René H. (Gast)


Lesenswert?

Volker S. schrieb:
> Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu
> übertragende "Signal" ist.

Stimmt, da gebe ich Dir recht. Wenn man mit BT beginnt lernt man 
allerdings sehr schnell zwischen Signal, Daten und Protokoll zu 
unterscheiden ;-).

Grüsse,
René

von Hannes J. (hannes_j)


Lesenswert?

René H. schrieb:
> Mit BT zuerst, lernt man ohne Stress am schnellsten und bewältigt die
> restlichen Aufgaben ohne grössere Probleme. Meiner Meinung nach, muss
> nicht so sein.
>
> Grüsse,
> René

Du hast dir den Thread-Verlauf nicht durchgelesen oder?

von Volker S. (vloki)


Lesenswert?

Volker S. schrieb:
> Ein weiteere Vorteil wäre, dass man danach genau weiß, was das per BT zu
> übertragende "Signal" ist.

Wenn dafür ein Byte genügt, weil das als Auflösung für die PWM 
ausreicht, dann muss man auch nicht unbedingt noch ein irgendein 
Übertragungsprotokoll implementieren...

von René H. (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Wo ist der AVR-ADC denn problematisch?

Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital 
im Code.

Grüsse,
René

von René H. (Gast)


Lesenswert?

Hannes J. schrieb:
> Du hast dir den Thread-Verlauf nicht durchgelesen oder?

Doch, eigentlich schon, aber nicht jeden Beitrag.

Grüsse,
René

von STK500-Besitzer (Gast)


Lesenswert?

René H. schrieb:
> Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital
> im Code.

Du schlägst ein Digitalpoti vor. Das lässt darauf schließn, dass es 
schwierig sei, den ADC zu bereiben.

von Hannes J. (hannes_j)


Lesenswert?

René H. schrieb:
> Doch, eigentlich schon, aber nicht jeden Beitrag.

Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich 
direkt UART anschauen zu lassen? Ich würde eher tendieren zu: Lass eine 
LED blinken. Du hast vermutlich mehr Ahnung als ich. Bin ja noch im 
Master. Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif 
sicher min 1 ganzen Tag. Poti und PWM beides in 1 Std. Bei dem Stand des 
TO würde ich definitiv sagen, er soll UART gaaanz hinten anstellen, 
sonst ist die Wahrscheinlichkeit groß, dass er zum Schluss mit nichts 
dasteht.

von Max M. (max_m250)


Lesenswert?

Ich würde auch sagen UART zum Schluss. Poti digital macht alles nur 
unnötig noch komplizierter. Außerdem ist die Platine doch eh schon 
fertig. Wäre auch ganz interessant die mal zu sehen. Dann erübrigt sich 
die Frage nach der Art des Poti wohl.

von Stefan F. (Gast)


Lesenswert?

Das Bluetooth Modul würde ich erstmal ohne Mikrocontroller an einem PC 
evaluieren. Du kannst es mit Hilfe eines USB-UART Kabels anschließen und 
mit Hammer Terminal ansteuern.

Für die Gegenseite würde ich einen Laptop mit integriertem Bluetooth 
Adapter verwenden, oder ein Android Smartphone mit einer entsprechenden 
App.

Mach Dich damit vertraut, wie man die Verbindungspartner konfiguriert 
und den Verbindungsaufbau auslöst. Lerne, zwischen Befehls-Modus und 
Daten-Modus zu unterscheiden und zu wechseln. Mach Dich damit vertraut, 
wo die Baudrate eine Rolle spielt, und wo nicht.

Danach solltest du die serielle Schnittstelle des Mikrocontrollers ohne 
Bluetooth evaluieren. Verbinde den Mikrocontroller mittel USB-UART Kabel 
mit deinem PC und tausche Texte in beide Richtungen aus.

Erst wenn du sowohl mit dem Bluetooth Modul als auch mit der UART 
Schnittstelle des Mikrocontrollers als auch mit der USB-UART 
Schnittstelle des PC vertraut bist, solltest du die Komponenten 
zusammenfügen.

Immer schön Eins nach dem Anderen, sonst hast du zu viele Baustellen mit 
Un bekannten gleichzeitig. Andernfalls wirst du nicht imstande sein, 
Probleme strukturiert zu analysieren.

von Theor (Gast)


Lesenswert?

@ Phil P.

OK. Ich versuchs nochmal von vorne: :-)

Ist Deine Frage, so richtig formuliert?

1. Es gibt drei Einheiten:
a) Den Port (DDR, PIN, PORT)
b) Timer mit PWM und
c) AD-Wandler

2. Ohne Näheres zu wissen, könnte man sich widersprüchliche 
Konfigurationen denken:
a) Port steht auf Ausgang (wegen einer 1 im DDR), es soll aber eine 
AD-Wandlung stattfinden was eigentlich einen Eingang erfordert.
b) Port steht auf Eingang (wegen einer 0 im DDR), es soll aber ein 
PWM-Signal ausgegeben werden, was eigentlich einen Ausgang erfordert.

Wo kann ich nachlesen, wie dieser Widerspruch aufgelöst wird?
Evtl. noch: Kann jemand kurz zusammenfassen, wie das geschieht, bevor 
ich nachlese?

---- Falls das Deine Frage war ---

Was die PWM betrifft, ist auf Seite 133, Abschnitt 19.6 ein 
Blockschaltplan und ein Text vorhanden.
Sinngemäss wird durch die Aktivierung der PWM-Erzeugung zwar das 
Ausgangssignal durch die Timerlogik selbstständig produziert. Dass 
Datenrichtungsregister aber muss per Programm auf Ausgang gesetzt 
werden; damit ist der Hauptwiderspruch aufgelöst. Aus Blockschaltplan 
und Text geht hervor, dass jedweder Wert in dem PORTx-Register durch 
die Timerlogik überschrieben wird, solange die PWM aktiviert ist.


Mit der AD-Wandlung ist das sinngemäss eben so.
Das Datenrichtungsregister muss per Programm auf Eingang gestellt 
werden; damit ist der Hauptwiderspruch aufgelöst.

Tatsächlich verteilen sich die Informationen dazu über mehrere 
Textstellen.
Darüber hinaus erfordern manche Informationen Transferleistungen, weil 
die hier gefragte negative Aussage nicht explizit da steht.

Zunächst sind die Erklärung, das Blockschaltbild zu den Ports allgemein 
wichtig. Seite 100, Abschnitt 18.2 Ports as General Digital I/O
Dann Blockschaltbild, Erklärung und Tabellen zu den Alternate-Functions. 
Seite 103. Die Tabellen im Zshg. mit dem Blockschaltbild sind von 
besonderer Bedeutung. Siehe etwa die Tabelle 18-2 und die Tabelle 18-8.
Blockschaltbild und Tabellen erfordern insbesondere gute Grundkenntnisse 
der Digitaltechnik. Gatter, Flip-Flops und digital gesteuerte Schalter 
sollten klar sein.

Im Zusammenhang mit letzterem sind noch die Erklärungen zum AD-Wandler 
wichtig. Seite 324 Abschnitt 28.9.6 Digital Input Disable Register

Die Verständnisschwierigkeit bzw. die Forderung nach Transferleistungen 
besteht hier darin, dass die Steuersignale von Seite 104, Bild 18-5 zum 
grossen Teil keinem Kontrollregister ausdrücklich zugeordnet sind. Man 
sieht in Tabelle 18-8 und im Vergleich zu der Tabelle 18-5 das gewisse 
Peripherieeinheiten wie der AD-Wandler nur teilweise die 
Portkonfiguration beeinflussen während andere, wie die SPI-Schnittstelle 
ziemlich viel beeinflussen. Solltest Du Fragen danach haben, werden wir 
hier sicher versuchen sie zu beantworten.


Aber: Wie gesagt: Stelle klare Fragen, bitte. Stelle, wie ich es oben 
getan habe, die Ausgangsvoraussetzungen dar. Stelle dann den Widerspruch 
klar, falls es um einen solchen geht. Gib die Quellen an (mit 
Seitenzahl) und zitiere gegebenenfalls.
Das kann, wie zu sehen ist, durchaus mit einfachen Worten und 
Basisbegriffen geschehen. Aber es muss inhaltlich fokussiert sein, sonst 
gibt es Kuddelmuddel.

So gesehen ist der Mangel an Deiner Frage, dass Du zu lakonisch 
formuliert hast. Denke daran, dass unklare Fragen neben dem 
ursprünglichen Widerspruch meist weitere Widersprüche aufwerfen. Oft, - 
und in diesem Fall -, sind sie offensichtlicher und elementarer als der 
eigentlich gemeinte Widerspruch. Das führte in Deinem Fall dazu, dass 
diese zusätzlichen Widersprüche als eigentliches Problem aufgefasst 
wurden.

Also: Viel Erfolg.

von René H. (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> René H. schrieb:
>> Wer sprach von problematisch? Es ist lediglich aufwändiger als Digital
>> im Code.
>
> Du schlägst ein Digitalpoti vor. Das lässt darauf schließn, dass es
> schwierig sei, den ADC zu bereiben.

Du interpretierst und machst es zu meiner Aussage. Nicht korrekt!

Grüsse,
René

von René H. (Gast)


Lesenswert?

Hannes J. schrieb:
> Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich
> direkt UART anschauen zu lassen?

Hannes J. schrieb:
> Lass eine
> LED blinken.

So gross unterscheidet sich das nicht. Hat er ersteres hinter sich 
gebracht, kennt er das Datenblatt. Macht er Zweiteres, kennt er Google.

Meine Meinung.

Grüsse,
René

PS: jemandem der ein PCB erstellt und selbst layoutet traue ich diese 
Aufgabe mit Datenblatt und Internet zu.

Beitrag #5660462 wurde von einem Moderator gelöscht.
von STK500-Besitzer (Gast)


Lesenswert?

René H. schrieb:
> Du interpretierst und machst es zu meiner Aussage.

Da liegst du richtig.
Da die L;sung mit einem Poti schon von vorneherein festgelegt war, frage 
ich (mich) halt, warum auf einmal ein digitales Poti eingesetzt werden 
soll.
Das ist doch voll am Thema vorbei.

von Roland F. (rhf)


Lesenswert?

Hallo,
Hannes J. schrieb:
> Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif
> sicher min 1 ganzen Tag.

Im AVR-GCC-Tutorial in diesem Forum findet man für die serielle 
Schnittstelle ein paar einfache Beispiele in C. Das geht von der 
Initialisierung der Schnittstelle über das Senden von Zeichen und 
Zeichenketten bis zum Empfangen einzelner Zeichen.
Im einfachsten Fall braucht man nur einfach kopieren, im schlimmsten 
Fall muss man die Bezeichnungen von ein paar Registerbits anpassen.

rhf

von Norbert S. (norberts)


Lesenswert?

Moin,

Ich würde BT auch ganz hintenan stellen.
Es soll ja funktionieren.
Also erstmal LED blinken lassen, Board in Betrieb nehmen.
Da kann schon genug schief gehen. Wir dürfen Schaltplan und Layout ja 
auch nicht sehen, wenn das fehlerfrei ist fresse ich einen Besen.
Dann PWM, LED dynamisch dimmen.
Dann Motor mit FET anschliessen. Soll das bidirektional sein? Richtig 
Leistung oder einfach nur Drehzahl eines kleinen Motors?
"Motor regeln (stellen)" kann von banal bis höchst anspruchsvoll alles 
sein.
Dann Poti einlesen. Das ist mit ADC auch nicht komplizierter als z.B. 
mit einem Inkrementalgeber.
Wenn das alles auf einem Board läuft, kann man das Zweite in Betrieb 
nehmen und per UART verbinden.

Phil, bis hierhin machen das min. 20 Leute die hier geschrieben haben an 
max. einem Tag auf dem Steckbrett, eher schneller. Wenn Du das mit 
Deinem Kenntnisstand in 6 Wochen schaffst ist das ok.

Erst dann würde ich BT angehen. Die verbinden sich nämlich nicht von 
alleine.
Das eine Modul muss Master sein, die müssen sich pairen - das musst Du 
alles mit AT-Befehlen konfigurieren.
Wer schon gut Ahnung hat aber mit diesem Modul noch nie gearbeitet hat, 
plant dafür nicht nur einen Tag ein.
Ohne Vorkenntnisse eher Wochen.

Wenn es zeitlich aber nicht mehr passt, kannst Du das weglassen. Dann 
läuft das ganze Moped eben per Kabel nur über Uart. Das ist dann Plan B.

Mach das schrittweise, so daß es wenigstens teilweise funktioniert.
Nicht, daß Du am Ende dastehst mit "BT geht manschmal, PWM macht noch 
Blödsinn aber das mit dem Poti funktioniert im Prinzip". Dann läuft da 
nämlich gar nichts und Du hättest bewiesen, daß Du nicht systematisch an 
sowas herangehen kannst.

Gruß,
Norbert

von Max M. (max_m250)


Lesenswert?

René H. schrieb:
> PS: jemandem der ein PCB erstellt und selbst layoutet traue ich diese
> Aufgabe mit Datenblatt und Internet zu.

Dem Thread-Verlauf ist eindeutig zu entnehmen, dass ihm das eben nicht 
zuzutrauen ist. Ich denke da sind sich hier abgesehen von dir alle 
einig.

von Hannes J. (hannes_j)


Lesenswert?

Roland F. schrieb:
> Hallo,
> Hannes J. schrieb:
>> Aber für ein UART-Programm bräuchte ich jetzt aus dem Stehgreif
>> sicher min 1 ganzen Tag.
>
> Im AVR-GCC-Tutorial in diesem Forum findet man für die serielle
> Schnittstelle ein paar einfache Beispiele in C. Das geht von der
> Initialisierung der Schnittstelle über das Senden von Zeichen und
> Zeichenketten bis zum Empfangen einzelner Zeichen.
> Im einfachsten Fall braucht man nur einfach kopieren, im schlimmsten
> Fall muss man die Bezeichnungen von ein paar Registerbits anpassen.
>
> rhf

Mag sein. Ich mach das lieber direkt mit dem Datenblatt und vergleiche 
hinterher im Zweifel mit Tutorials. Ich will es ja können und nicht 
kopieren. Außerdem haben Tutorials auch gerne mal Fehler.


René H. schrieb:
> Hannes J. schrieb:
>> Ok. Und du hast tatsächlich den Eindruck es ist zielführend TO sich
>> direkt UART anschauen zu lassen?
>
> Hannes J. schrieb:
>> Lass eine
>> LED blinken.
>
> So gross unterscheidet sich das nicht. Hat er ersteres hinter sich
> gebracht, kennt er das Datenblatt. Macht er Zweiteres, kennt er Google.
>
> Meine Meinung.

Trollst du??

von René H. (Gast)


Lesenswert?

Hannes J. schrieb:
> Trollst du??

Nein, aber Danke.

Grüsse,
René

von René H. (Gast)


Lesenswert?

Phil P. schrieb:
> Wir mussten schon selbst eine Platine entwerfen und nun mit dem
> Atmega328 arbeiten.

Max M. schrieb:
> Dem Thread-Verlauf ist eindeutig zu entnehmen, dass ihm das eben nicht
> zuzutrauen ist. Ich denke da sind sich hier abgesehen von dir alle
> einig.

Tja, dann erzählte er falsch. Es steht zumindest im Eröffnungspost so. 
Ich unterstelle ihm nichts. Du aber schon.

Grüsse,
René

von MWS (Gast)


Lesenswert?

René H. schrieb:
> Es steht zumindest im Eröffnungspost so.

Wie wär's mit lesen lernen?

René H. schrieb:
> Phil P. schrieb:
>> Wir mussten schon selbst eine Platine entwerfen

Das kann bedeuten, dass mit "wir" eine Gruppe gemeinsam eine Platine 
entwickelte. In diesem Fall war der TE - nach dessen Selbstdarstellung 
zu urteilen - bestenfalls Komparse.

"Wir" kann auch bedeuten, dass jeder in der Gruppe seine eigene Platine 
zu entwickeln hatte, das ist möglich, aber in diesem Fall 
unwahrscheinlich. Selbst eine Platine zu entwickeln führt zwangweise zu 
intensiverer Beschäftigung mit der zu verbauenden Hardware, davon ist 
hier nichts zu bemerken.

> Ich unterstelle ihm nichts.

Du unterstellst Möglichkeit zwei.

von Norbert S. (norberts)


Lesenswert?

Hannes J. schrieb:
> Mag sein. Ich mach das lieber direkt mit dem Datenblatt und vergleiche
> hinterher im Zweifel mit Tutorials. Ich will es ja können und nicht
> kopieren.

Es kommt immer darauf an, was man bezweckt.
Ich arbeite mit Bascom, da hat man die Wahl. Bei Uart kann man es sich 
supereinfach machen.
$baud = 57600
Print "Hello World"
Das wars. Man muss aber wissen, daß Bascom dann einfach wartet, bis 
alles gesendet ist. Wenn ich nur schnell etwas debuggen will oder das 
Ganze ohnehin zeitunkritisch ist, kann man das so machen.
Was da im Hintergrund genau passiert, ist mir ansonsten wurscht. Daß mir 
das alles Timing versauen kann, muß man aber im Hinterkopf haben.
Ebenso bei einem Tutorial oder einer Lib, bei der man nicht wirklich 
weiß was sie macht (die Komfortbefehle in Bascom sind ja nichts 
Anderes).
Geht es um die Wurst, kramt man eben das Datenblatt raus und macht alles 
zu Fuß. Dann hat man auch bei Bascom alles voll im Griff.

Der T.O. muß zum Ziel kommen. Da könnte es legitim sein, den einfachen 
Weg zu gehen. Ich wollte schon fragen, ob Bascom eine Alternative wäre.
Zumindest Poti einlesen und per Uart den Wert senden wäre damit ein 
Witz.
----------------------
$baud = 115200 '(meist Standard für BT)
Config Adc = Single, Prescaler = Auto
Dim Poti As Word

Do
   Poti = Getadc(0) '(Oder welcher ADC auch immer)
   Printbin Poti
   Wait 1
Loop
----------------------
Das sendet den Wert vom Poti (0...1023) binär per Uart, also 2 Byte. 
Etwa jede Sekunde plus die Zeit vom Senden der Bytes und büschn ADC (da 
wird auch gewartet).
Für die PWM taugt der Komfort von Bascom aber nicht wirklich. Dafür gibt 
es mittlerweile zu viele Modi und die Doku ist grottig. Das war auf die 
ersten AT908515 o.Ä. zugeschnitten und wurde dann nicht großartig 
erweitert. Allerdings ist das auch ziemlich umfangreich. Wenn es nur um 
eine einfache PWM geht, könnte man das auch machen, bevor er sich mit 
seiner Datenblattallergie durch die Timer-PWM kämpft. Aber auch das ist 
im Datenblatt eigentlich gut beschrieben.

Alles komplett von Grund auf sauber in C nach Datenblatt mit allen 
Registern zu Fuß - das kriegt er in 6 Wochen nicht hin.
Ich stelle mir gerade die Fragen vor: "Kann mir mal einer die 
verschiedenen PWM-Modi von Timer1 erklären und wie die genau 
funktionieren? Das Datenblatt verstehe ich nicht."
Wenn das mit den Ports jetzt verstanden wurde, wieviel % sind das? Keine 
5%, eher deutlich weniger.

Gruß,
Norbert

von René H. (Gast)


Lesenswert?

MWS schrieb:
> Das kann bedeuten, dass mit "wir" eine Gruppe gemeinsam eine Platine
> entwickelte. In diesem Fall war der TE - nach dessen Selbstdarstellung
> zu urteilen - bestenfalls Komparse.

Mag sein, dann ist aber zu erwarten dass das „wir“ gemeinsam an der 
Software arbeitet.

MWS schrieb:
> "Wir" kann auch bedeuten, dass jeder in der Gruppe seine eigene Platine
> zu entwickeln hatte, das ist möglich, aber in diesem Fall
> unwahrscheinlich. Selbst eine Platine zu entwickeln führt zwangweise zu
> intensiverer Beschäftigung mit der zu verbauenden Hardware, davon ist
> hier nichts zu bemerken.

Eben. Welches lesen muss ich jetzt genau lernen ;-).

Grüsse,
René

von Max M. (max_m250)


Lesenswert?

René H. schrieb:
> Ich unterstelle ihm nichts. Du aber schon.
>
> Grüsse,
> René

Also sorry aber wenn das kein trollen ist, was denn dann? Natürlich 
unterstellst du genauso, und zwar dass er nur das geringste Verständnis 
von der Materie hätte. Seltsamer Weise sieht das jeder einzelne hier 
anders als du und das sind so einige. Was ist los mit dir? Sagst du 
deinem Sohn auch er soll mit dem Fahrrad am besten direkt mal über eine 
Sprungschanze fahren, weil er ja mal gesehen hat wie sich ein Rad dreht, 
obwohl 30 Leute daneben stehen und drauf hinweisen dass er wohl erstmal 
einfach versuchen sollte geradeaus zu fahren?

von Volker S. (vloki)


Lesenswert?

Mehr als 180 Post und die meisten eher überflüssig und spekulativ.

@Phil
Das wird nichts mehr. Ich würde nochmal neu starten und die Erfahrung in 
diesem Thread dazu nutzen in einem (oder nacheinander auch mehreren) 
neuen Thread, anständig vorbereitete Fragen zu eng abgegrenzten 
Teil-Problemen neu zu stellen.
Das heißt nicht, dass in den jeweiligen Threads kein Überblick auf das 
Gesamtsystem gegeben werden sollte.
Den "nächsten" Thread zum nächsten Problem dann auch erst starten, wenn 
das vorhergehende erfolgreich gelöst ist.

von MWS (Gast)


Lesenswert?

René H. schrieb:
> Mag sein, dann ist aber zu erwarten dass das „wir“ gemeinsam an der
> Software arbeitet.

Nein. Wenn man den Eröffnungspost betrachtet, kann man lediglich 
annehmen, dass das vorher erstellte Board für genanntes Projekt 
Verwendung findet.

Es ergibt Sinn gemeinsam eine Platine zu entwickeln, um damit 
sicherzustellen, dass jeder Teilnehmer zum Schluss eine funktionierende 
Hardware vorliegen hat. Gleichfalls ist es sinnvoll, wenn jeder 
Teilnehmer sein Projekt selbst abarbeitet, damit sein Wissenstand 
fetgestellt werden kann. Natürlich kann Euch  der TE auch noch anlügen 
und es ist eine Gruppenaufgabe, wobei es sein Job ist, ein Tränchen 
auszudrücken um damit externe Helferlein zu mobilisieren.

Weitere Schlüsse können nicht gezogen werden.

Ergo: Du unterstellst erneut.

> Eben. Welches lesen muss ich jetzt genau lernen ;-).

Wo Du schon dabei bist, lern' auch ein wenig logisch zu denken.
Hilft im Umgang mit Mikrocontrollern ungemein.

von René H. (Gast)


Lesenswert?

Max M. schrieb:
> Also sorry aber wenn das kein trollen ist, was denn dann

Ist ok, wenn meine Absicht Trollen wäre, mache ich das sicher nicht mit 
meinem Rufzeichen.

MWS schrieb:
> Wo Du schon dabei bist, lern' auch ein wenig logisch zu denken.

Ich nehm mir den Rat zu Herzen, Danke.

Es Grüsst,
René

von Rainer V. (a_zip)


Lesenswert?

nachdem man sich die letzten 20 Beiträge mal wieder mit sich selbst 
beschäftigt hat, wäre es an der Zeit, mal wieder auf einen Beitrag des 
TO zu warten! Vielleicht hat er es ja mittlerweile geschafft, einen 
Pin/PIN "an zu machen" und ist nun für weitere Untaten bereit...
Gruß Rainer

von Stefan F. (Gast)


Lesenswert?

Rainer V. schrieb:
> wäre es an der Zeit, mal wieder auf einen Beitrag des
> TO zu warten

Das tun wir ja auch seit etwa 21 Stunden, nur du hast die Ruhe gestört.

von Rainer V. (a_zip)


Lesenswert?

Uups, sorry...aber leider nur eure :-)

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.