Hallo zusammen,
ich habe Erfahrung mit C++ Programmierung aber bin absoluter Anfänger in
Sachen Mikrocontroller ich versuche ein einfaches Übungsbeispiel mit
einem Taster aufzubauen.
Im Bascom Editor wird das Programm auch richtig abgearbeitet. Aber wenn
ich das Programm auf dem Controller abarbeiten lasse dann macht der was
er will. Der PORT B1 wird auch gesetzt wenn ich den Taster (PIN D2)
nicht betätige. Was mache ich falsch? Kann es sein das die Spannung der
Akkus zu sehr schwankt?
Siehe auf Aufbau der Hardware auf dem Bild.
Vielen dank für eure Hilfe.
Hi
Du hast nicht alle Versorgungsspannungspins angeschlossen.
Abblockkondensatoren fehlen. LEDs ohne Vorwiderstände. Kein
Pull-Up-Widerstand am Taster....
MfG Spess
spess53 schrieb:> Abblockkondensatoren fehlen. LEDs ohne Vorwiderstände. Kein> Pull-Up-Widerstand am Taster....
Puul-Up am Taster brauchts auch nicht, ist intern im Atmega. Was aber
sofort auffällt ist, dass Pin 1 des Atmegas, also der Reset-Pin, nicht
über einen Kondensator an GND bzw. Widerstand an Vcc angeschlossen ist.
Der Atmega wird sich so wohl kaum entscheiden können ob er nun im Reset
sein soll oder nicht.
Abblockkondensatoren im Batteriebetrieb sind zwar nicht unbedingt
erforderlich aber sie stören auch nicht und würden eine mögliche
Störeinkopplung auf die Versorgungsspannung den Gar ausmachen.
Hi
>Puul-Up am Taster brauchts auch nicht, ist intern im Atmega.
Sollte der nicht aber auch eingeschaltet werden?
BASCOM-Hilfe:
When you need the pull up to be activated, you have to write to the PORT
register.
MfG Spess
Michael schrieb:> Puul-Up am Taster brauchts auch nicht, ist intern im Atmega.
..aber auch nur, wenn man ihn aktiviert. Das dürfte hier das Problem
sein, also einmal PORTd.2 = 1 versuchen
Hallo zusammen, vielen dank für eure rasche Antwort.
Einen Schaltplan hab ich keinen. Wie gesagt komme vom C++.
Hab von Elektrotechnik keine Ahnung aber ich möchte mich doch ein wenig
in das interessante Thema einarbeiten.
Ich hab mir ein Buch gekauft in dem die Mikrocontroller-Programmierung
erkärt wird und da sind auch einige Übungsbeispiele vorhanden aber eben
leider keine Interrupts mit der Erklärung für die Hardware.
Aber ich denke ihr habt mir schon ein wenig geholfen damit ich weiss wo
und wie ich weitersuchen soll.
Vielen dank für eure Hilfe.
Gruss Heiko
Hi
>Was aber sofort auffällt ist, dass Pin 1 des Atmegas, also der Reset-Pin,>nicht über einen Kondensator an GND bzw. Widerstand an Vcc angeschlossen>ist.
Der ist schon eingebaut (Datenblatt):
Symbol Parameter Condition Min Typ Max Units
RRST Reset Pull-up Resistor 30 80 kΩ
MfG Spess
spess53 schrieb:> RRST Reset Pull-up Resistor 30 80 kΩ
Übrigens ist dieser interne Widerstand genauso wie die Pullups an den
Port-Pins nur auf dem Labortisch brauchbar. Sobald man sich darauf
verlässt und EMV Burst-Tests mit 2kV (Industrie) in der Koppelzange
macht, hagelt es immer wieder mal Resets oder falsche Eingangspegel (=
betätigte Tasten). Bei den Tasten kann man mit einer Softwareentprellung
noch was machen, aber beim Reset... :-o
Da ist mir für industrielle Geräte ein externer Pullup mit 3k3 (und oft
auch ein Kondensator mit 10nF) für einen Eingang nicht zu teuer.
spess53 schrieb:> Hi>>>Was aber sofort auffällt ist, dass Pin 1 des Atmegas, also der Reset-Pin,>>nicht über einen Kondensator an GND bzw. Widerstand an Vcc angeschlossen>>ist.>> Der ist schon eingebaut (Datenblatt):>> Symbol Parameter Condition Min Typ Max Units> RRST Reset Pull-up Resistor 30 80 kΩ>> MfG Spess
Gleiche Frage wie beim Taster: Auch eingeschaltet? Ich hab bisher nur
mit dem 88PA gearbeitet und da gibts ohne externe Beschaltung des
Resetpins immer wieder Probleme.
spess53 schrieb:> Hi>>>Puul-Up am Taster brauchts auch nicht, ist intern im Atmega.>> Sollte der nicht aber auch eingeschaltet werden?>> BASCOM-Hilfe:>> When you need the pull up to be activated, you have to write to the PORT> register.>> MfG Spess
OK, mit Bascom kenn ich mich nicht aus. Klar muss der eingeschaltet
werden ;)
Ich schreib in C und schalte die immer automatisch ein, hab ich mir
angewöhnt.
Grüße
Hi
>Übrigens ist dieser interne Widerstand genauso wie die Pullups an den>Port-Pins nur auf dem Labortisch brauchbar.
Ist mit durchaus bekannt. Ich benutze generell externe Pull-Ups. Mir
ging es eigentlich nur um die Aussage:
>Puul-Up am Taster brauchts auch nicht, ist intern im Atmega. Was aber>sofort auffällt ist, dass Pin 1 des Atmegas, also der Reset-Pin, nicht>über einen Kondensator an GND bzw. Widerstand an Vcc angeschlossen ist.
Das stimmt, so, einfach nicht.
Außerdem würde ich Anfängern sowieso externe Pull-Ups empfehlen. Die
sind wenigstens nicht durch Softwarefehler abschaltbar.
MfG Spess
Wenn wir schon beim Empfehlen sind, sollte man eine nicht ganz
unwichtige Empfehlung auch aussprechen:
Taster werden nicht über Interrupts ausgewertet. Das gibt nur Ärger mit
der Entprellung.
Gerade in BASCOM gibt es ja ein brauchbares Debounce, mit dem man das
wunderbar in den Griff kriegen kann.
Oha, wollte hier keinen grösseren Threat starten.
Was mir aber gefällt ist das dieses Forum lebt.
Also nun zu meinen Antworten.
Wie gesagt habe ich eine vorliebe zu PC -Anwendungsprogrammierung (4gl).
Ich habe mich schon mit div. Sprachen befasst. PHP, C++ (wxWidget, Qt4),
ASP, VBScript, VB, JavaScript, Java, sogar ein wenig mit Delphi.
Und irgendwie ist mir die Irrwitzige Idee gekommen einfach mal was mit
einem Mikrocontroller zu machen. Interessant ist für mich die
Kommunikation von PC zu Controller. Und vielleicht auch mal einen
Sprinkler im Garten zu steuern. Aber das ist noch weit weg. Also um
Ehrlich zu sein war ich im Fach Elektrotechnik eine absolute Niete hätte
mir fasst den Kopf gekostet dieses Fach. Aber irgendwie finde ich die
Elektrotechnik doch faszinierend. (Nach euren Fragen und Antworten habe
ich mir jetzt noch ein Buch über Elektrotechnik bestellt.)
In Bascom habe ich das gemacht weil ich mit c nicht weitergekommen bin.
Das heisst ich habe kein Beispiel gefunden das ich mit dem AVR Studio
zum laufen gekriegt habe der Interrupt wurde einfach nicht aufgerufen.
Aber in Bascom hab ich in ca. 30 Min. was zusammen bekommen. Ist halt
schon besser dokumentiert.
Den DEBOUCE befehl werde ich mir noch genauer ansehen. Danke für die
Empfehlung.
Grüsse und danke für eure Hilfe
Heiko
Heiko Meier schrieb:> In Bascom habe ich das gemacht weil ich mit c nicht weitergekommen bin.
Mein Eindruck: du solltest nicht so viele (Programmier-)Sprachen
sprechen. Statt dessen eine davon richtig...
> Das heisst ich habe kein Beispiel gefunden das ich mit dem AVR Studio> zum laufen gekriegt habe der Interrupt wurde einfach nicht aufgerufen.
Warum fängst du gleich mit Interrupts an?
Insbesondere, wenn du noch nicht mal weißt, das du da eigentlich tust!
Mir hat am Anfang das Polling erst mal ausgereicht...
> Interessant ist für mich die Kommunikation von PC zu Controller.> Und vielleicht auch mal einen Sprinkler im Garten zu steuern.
Ich sehe für diese kleine Aufgabe noch keine Notwendigkeit für einen
Interrupt.
> Aber in Bascom hab ich in ca. 30 Min. was zusammen bekommen.> Ist halt schon besser dokumentiert.
Wie? Was?
In Bascom ist das alles eben hübsch verpackt. Wenns aber Probleme gibt
mußt du trotzdem wissen, was du da eigentlich gerade machst. Und in C
kann ich dir das bis aufs letzte Bit genau sagen, weil (und wenn) der
Sourcecode für die jeweilige Funktion vorliegt.
> Aber in Bascom hab ich in ca. 30 Min. was zusammen bekommen.
Nur tut es eben nicht, wie im
Beitrag "Interrupt INT0 Software funktioniert aber auf dem Kontroller nicht" zu lesen ist... :-/
Ok, hab's gesehen wie in jedem anderen Forum.
Es gibt immer einer der was runtermachen möchte anstatt zu helfen.
Das ich so viele sprachen nicht mehr als junior programmieren kann hat
auch mit meinem beruflichen werde gang zu tun. Wenn man mal als
Web-Programmierer (asp) gearbeitet hat und in der Schule mal was von
Vererbung gehört hat (C++) dann ist das Gott sei dank auch in PHP und
Delphi so gelöst worden.
Ich würde sagen wenn jemand Java Programmieren kann dann ist die
Einarbeitung in C++ ein klacks er muss sich halt noch mit den Pointern
rumschlagen was auch nichts besonderes ist.
Übrigens hast du gewusst das Java, Qt4, wxWidgets und C# alle mit
Layouts arbeiten. Das Grundgerüst ist das Selbe. Nur die Namen für den
Aufruf sind anders.
Interrupts war nicht mein 1. Programm wie kommst du darauf?
Und die Aufgabe ist ein Lernbeispiel. Jeder fängt ja mal klein an. Ob
sinnvoll oder nicht. Der Sinn besteht im lernen.
Bascom ist in der Tat besser Documentiert wie c. Und auch die
Entwicklungsumgebung gefällt mir besser aber AVR Studio 5 steht ja in
den Startlöchern. Aber ich möchte hier c nicht runtermachen. Ich liebe c
und benutze wenn es sein muss auch andere Sprachen denn die meisten
Sprachen haben ihre da seins Berechtigung.
Wie gesagt ich bin ein Anfänger war ja jeder mal, …oder…
Du musst mir nicht mehr antworten. Ich habe bekommen was ich wollte und
werde auf diesen Thread nicht mehr antworten.
Danke an alle die mir geholfen haben.
Gruss Heiko
Heiko Meier schrieb:> Interrupts war nicht mein 1. Programm wie kommst du darauf?
Musste ich leider annehmen, weil ich dich nicht weiter kenne, und du
nichts zu deinem bisherigen Wissensstand mitgeteilt hast ausser:
ich kenne mich nicht aus!
> Bascom ist in der Tat besser Documentiert wie c.
Du kannst nicht BASCOM und C vergleichen.
Bascom ist ein Fertiggericht.
C ist eher sowas wie "Selber kochen".
Und jetzt sag mir mal, was auf Dauer besser schmeckt. Natürlich darfst
du auf deine Fertigpizza noch selber Extra-Käse drauflegen...
> Entwicklungsumgebung gefällt mir besser aber AVR Studio 5 steht ja in> den Startlöchern. Aber ich möchte hier c nicht runtermachen. Ich liebe c> und benutze wenn es sein muss auch andere Sprachen denn die meisten> Sprachen haben ihre da seins Berechtigung.
Und ihre Tücken und Eigenheiten.
> Ich würde sagen wenn jemand Java Programmieren kann dann ist die> Einarbeitung in C++ ein klacks er muss sich halt noch mit den Pointern> rumschlagen was auch nichts besonderes ist.
Zigtausende Bugfixes sprechen da eine andere Sprache... :-o
> Es gibt immer einer der was runtermachen möchte anstatt zu helfen.> Du musst mir nicht mehr antworten.
Ich wollte dich nicht runtermachen. Das geht anders.
Ich wollte dich mit meinen Fragen nur zum DENKEN anregen.