PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AD, rn-control mit tasten und c



Ursulor
07.11.2004, 22:06
Hallo Leute,

ich bin fröhlicher(noch :)) Anfänger und versuche auf basis des rncontrol boards (mega32@16mhz) einen robby zu bauen.
ich habe es hingekriegt mittels pwm die kiste zum fahren zu kriegen.
jetzt würde ich gerne die tasten (am analogport) auslesen.

leider kriege ich es nicht hin.

ich habe versucht die iobiblothek im downloadbereich zu benutzen.
diese bietet einige nette defines, funktioniert aber so nicht.
bits die gesetzt werden vom nächsten komando wieder gelöscht.

könnte mir vielleicht einer von euch erklären, wie ich die taster auslese und sagen wir auf die leds ausgebe? (nachmöglichkeit ohne zusätzliche biblothek)

Wäre nett, wenn mir jemand weiterhelfen könnte

Ursulor

08.11.2004, 20:16
Solche trivialen Sachen sollte man zuerst machen. Fertige Bibliotheken sind auf PC-Ebene was feines, bei MC sollte man schon sehr genau wissen, was sie wie machen. Also bleibt einem eine Einarbeitung nie erspart.
Zu deiner Frage:
http://mc-project.de/Pages/programmierung.html
Da du nicht geschrieben hast, mit was du programmierst, setze ich C voraus. Das Bits prüfen und setzen was auf der verlinkten Seite beschrieben wird, entspricht ja dem Taster auslesen bzw. LED ansteuern.

08.11.2004, 20:43
Gast, die Tasten werden bei der rn-control über analogen port abgefragt! Der Link ist daher nicht ganz optimal

Ursulor
08.11.2004, 21:00
hallo, danke für den link, aber das habe ich schon hingekriegt.
also: ich versuchs in c
die leds hängen an PORTC, die kann ich wie ich will an und ausknipsen
mein problem ist der ad.

Ursulor
08.11.2004, 21:02
ach ja, die tasten hängen an kanal A7 und liefern 0,35 0,7 1,05 1,4 und 1,75V an den port (sagt mein multimeter und stimmt mit beschreibung überein)

ich hab fleißig tutorials und threads gelesen, aber ich bin anscheinend zu blöd um die richtigen bits zu setzen

Dino Dieter
08.11.2004, 21:19
Hallo

Dann wollen wir mal schauen

ADMUX = _BV(REFS0 ) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); //einstellen auf externe Referenz 2,5 Volt und Channel 7 einstellen

ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS0);

//AD Wandler einschalten und Vorteiler setzen, hier 32 kommt auf deine Taktfrequenz an. AD Wandler sollte zwischen 50 und 200 KHz laufen

Wenn du jetzt wandeln willst kommt

ADCSRA |= _BV(ADSC); //und starten
while ( ADCSRA & _BV(ADSC) ); //Warten bis fertig

Danach steht in ADCW der Wert der Wandlung, oder halt in ADCL und ADCH.


MFG
DIeter

Ursulor
08.11.2004, 21:54
Danke Dino,
das war die sorte hilfe die ich gesucht habe.
scheint zu funktionieren.
allerdings nur direkt nach einem reset.
kann ich die beiden letzten anweisungen in eine while schleife packen?

while(1) {
ADCSRA |= _BV(ADSC); //und starten
while ( ADCSRA & _BV(ADSC) ); //Warten bis fertig
.../ADC auslesen, etwas schlaues damit tun, port ausgeben
}

oder muss ich zwischendurch irgendetwas zurücksetzen?

Ursulor
08.11.2004, 21:57
jetzt klappts auch damit, hab ein falsches register erwischt

08.11.2004, 22:05
Hallo

Schön das es klappt. Womit schreibst du deinen C Code.
Ich habe jetzt von Notepad auf MED gewechselt. Ist ganz gut.
Verwaltet schön Projekte und viele weitere nützliche Sachen.
Einbindung von WINAVR usw

http://www.med-editor.com/

MFG
Dieter

09.11.2004, 08:19
Nur mal ne Frage: Ich kenne die RN-Control nicht, aber wer fragt Tasten über einen AD-Wandler ab?
Hätte er auf der verlinkten Seite mehr als 2 min. verbracht, hätte er vielleicht auch festgestellt, dass dort diverses zum AD-Wandler steht sowie Bibliotheken verfügbar sind. Man muss nur auf die Startseite gehen.
Als Oberfläche finde ich beispielsweise die von Visual C++ sehr geeignet, mehr Features als diese bietet denke ich kein anderes Programm. Wer jedoch nicht weiter PC-Programmierung betreibt, für den ist sicherlich das aktuelle PN auch nicht schlecht.

fzehner
09.11.2004, 15:27
Nicht nur bei der RN-Control werden die Tasten analog abgefragt. Dabei hängen mehrere Tasten über eine Widerstandsdekade an einem analogen Port, wodurch für z.B. fünf Tasten nur ein Port benötigt wird. Das ist zwar umständlicher als der direkte Anschluss aber es werden dadurch auch Anschlüsse gespart.

09.11.2004, 18:10
Achso, danke für die Info.