mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Codeschloss-Wie umsetzen?


Autor: oZe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community!
Vorneweg: ich bin absoluter Anfänger in Sachen Mikrocontroller ;-)

Ich würde gerne mit einem ATtiny2313 ein Codeschloss realisieren. Dazu 
würde ich gernen einen Code wie z.b. "lang-kurz-kurz-lang-lang" nutzen. 
Das heißt ich würde beispielsweise an PB0 einen Taster anklemmen der 
diesen auf 5V high setzt für eine bestimmte Zeit (Kurz = kürzer als 1 
sekunde, lang= min. 1 Sekunde).

Wenn der Code richtig eingegeben wurde würde ich gerne z.b. PB1 von low 
auf High setzen und somit über einen Transistor ein Relais anziehen 
lassen.

Mein eigentliches Problem ist die Umsetzung in Software. Ich kenne mich 
mit Assembler absolut nicht aus dafür aber mit C. Ich wäre euch sehr 
dankbar wenn mir jemand ein Codebeispiel senden könnte wie man sowas 
umsetzen kann.
Danke schon mal ;-)

Mfg

oZe

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bau ne Schrittkette mit swich-case auf.

So. nu gib dir Mühe ;-)

Autor: oZe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Als kurzer Nachtrag hier noch mal ein Schaltplan wie ich mir das 
vorstelle. Anstelle des Relais hab ich jetzt einfach mal kurz eine LED 
genommen weil ich kein passendes Relais in meiner Bauteileliste gefunden 
habe.

Autor: oZe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das ist mir schon klar. Nur wie mess ich die Zeit die PB0 auf high 
steht? Ich hab einfach zu wenig erfahrung mit den Microcontrollern...

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und hier kann dir keiner die Erfahrung geben, die muss man immer selbst 
sammeln.

Nimm nen Timer zum Messen...

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
sry aber so geht das nit mit den taster einfach an den uC pin.
du musst dem pin schon einen definierten pegel geben, ansonsten zappelt 
der vor sich her.
z.B. nen wiederstand vom pin auf GND.
genauso wie bei der LED da solltest auch den strom mittels wiederstand 
begrenzen.
gruss

Autor: Tipper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein paar Tips:

-Nimm nen ATTiny oder ATMega, dann kannst du Dir den Quarz und die 
beiden Kondensatoren sparen.
-Mach die LED nicht an den Emitter sondern an den Kollektor gegen +Vcc. 
So kannst du auch dann z.B. mal ein 12V Relais schalten (mit 
Freilaufdiode!)
-Das Schaltbild sieht nach Target aus. Auch darin gibt es sicher ein 
Symbol für GND, den man an jede Stelle wo GND gebraucht wird hinsetzen 
kann, so wird der Schaltplan wesentlich übersichtlicher

.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entprellen + Lang/Kurz-Erkennung:

Beitrag "Universelle Tastenabfrage"


Peter

Autor: oZe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow das hilft mir ja schon mal wesentlich mehr weiter. Danke Jungs!

Die Beiden Kondensatoren am Quarz werde ich dann entfernen und nen 
ATTiny2313 nehmen. Den uC Pin für den Eingang werde ich dann mit 10 kOhm 
an Masse hängen und und per Taster dann auf Vcc ziehen.

Und "Ja" ich benutze Target ;-) Danke für den Tipp mit GND.

Mfg


oZe

Autor: Markus L. (lucky79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@oZe: bei dem Taster kannst du dir den Widerstand auch komplett sparen 
indem du den intrnen PullUp vom Port benutzt und den dann mittels Taster 
nach GND ziehst - is ja wurscht ob du nun 0 oder 1 wertest...

Wenn du ein exaktes Timing brauchst, kommst um den Quarz nicht herum, 
aber für deine Zwecke gehts auch ohne.

Grüße
Markus

Autor: oZe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz ohne Quarz? Ich dachte eigentlich das der AtTiny2313 das quarz 
benötigt um einen Takt zu bekommen oder kann der controller selber einen 
Takt erzeugen und benötigt keinen externen Taktgeber?

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ATtiny2313 hat einen eingebauten Oszillator, brauchst also keinen 
Quarz.

Das steht aber auch alles im Datenblatt.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch ein wunderschönes und überschaubares Anfängerprojekt. 
Wünsch dir viel Erfolg. Setz dich auf jeden Fall erstmal ein paar 
Stunden hin und studier das Datenblatt, ein paar Tutorials und ein 
Programme von anderen.

Tipp: Bau dir eine Art Soft-Timer. Im Timerinterrrupt zählst du z.B. 
alle 10ms ein Register eins höher. Dieses Register setzt du bei 
Tastendruck in der Hauptroutine auf 0 und fragst den Wert ab, wenn der 
Taster losgelassen wurde. Der Wert gibt die Zeit in n * 10ms an. In 
deiner Interrupt-Routine musst du natürlich dafür sorgen, dass das 
Register nicht überläuft, also beim Wert 0xFF nicht weiter incrementiert 
wird.

Hier mal ein Simple-Programme mit etwas Beschreibung, wovon du bestimmt 
ein wenig kopieren kannst:

http://www.wikidorf.de/reintechnisch/Inhalt/AVRPro...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.