mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster durch AVR ersetzen


Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte mir bei meinem Monitor das lästige Umschalten zwischen den 
Eingängen vereinfachen (ist tief in den Menüs versteckt) und habe daher 
versucht, einen ATmega48 (lag grad rum) so zu programmieren, das er die 
Taster incl. Pullups ersetzt. Die Platine mit den Schaltern habe ich 
dazu entfernt und die Kabel direkt an den Pin des AVRs gehängt. 
Funktioniert aber leider nicht so wie erwartet. Wen ich den Pin als 
Eingang mit Pullup konfiguriere kan ich durch verbinden des Pins mit 
Masse einen Schaltvorgang im Monitor auslösen, aber wenn ich den Pin als 
Ausgang konfiguriere und HIGH - LOW - HIGH ausgeben lasse reagiert der 
Monitor nicht drauf. Ich habe verschiedene Zeiten ausprobiert aber es 
passiert einfach nix... Leider ist mein Oszi PC-basiert und ich kann es 
nicht so einfach zum Monitor tragen oder umgekehrt. Ohne dranhängenden 
Monitor verhält sich der AVR korrekt.
Hat jemand eine Ahnung was ich falsch mache?
DDRD = (1 << DDD6);
PORTD |= (1<<PD6);
[...]
for (i=0; i<anz;i++) {
  PORTD &= ~(1<<PD6); //low
    delay_ms(TLOW);  
  PORTD |= (1<<PD6); //high
    delay_ms(THIGH);
}

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin vielleicht nicht der hellste, aber kapier wirklich nicht was du 
damit miteilen willst...

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Monitor hat normalerweise Taster und externe Pullups auf 3,3V.
Ich will nun das der AVR die Taster ersetzt und Tastenkombinationen 
eingibt. Also Taster + Pullups weg und angeschlossen. Avr schaltet pin 
als eingang mit internem Pullup -> läuft prima wen ich den Pin per Kabel 
auf GND ziehe.
Wen der AVR aber den Pin als Ausgang schaltet (normalweiese HIGH) und 
ihn dann für verschieden lange Zeiten auf LOW schaltet reagiert der 
Monitor nicht auf diesen simulierten Klick.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDRD = (1 << DDD6);

Äh... sorry, aber was ist DDD6 ?!?

Schreib doch mal
DDRD = (1 << PD6);

Ausserdem: Welche Werte haben THIGH und TLOW? Dir ist bekannt, dass die 
Funktion "delay_ms" nur Werte von 0 bis 255 zulässt?

Gruß,
Magnetus

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>DDD6
= Data Direction (Port)D (Pin)6

Ansosnten mach das mal so:
Mach nen externen Pullup dran, Pullup am AVR aus.
Dann aknnst du schalten, indem du den Pin auf Ausgang schaltest = LOW 
und danach wieder auf Ausgang = HIGH.
Das simuliert einen Taster eher als ein aktiv PUSH/PULL

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das Problem jetzt gelöst: Die Leitungen waren gemultiplext. Ein 
10k Vorwiderstand hat das Problem behoben. Mit dem Oszi hätte ich das 
gleich gesehen...
Danke für die Hilfe.

Autor: Udo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Magnus Müller schrieb:
> Dir ist bekannt, dass die
> Funktion "delay_ms" nur Werte von 0 bis 255 zulässt?


Sorry, aber das stimmt nicht mehr.

Auszug aus der Lib:

"When the user request delay which exceed the maximum possible one, 
_delay_ms() provides a decreased resolution functionality. In this mode 
_delay_ms() will work with a resolution of 1/10 ms, providing delays up 
to 6.5535 seconds (independent from CPU frequency). "

Gruß
Udo

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.