PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage zum Tiny2313 (auf) STK500 (bzgl. PORTA)



_matze
12.06.2007, 12:30
Hallo!

Ich steige momentan in die AVR-Programmierung ein, bin in der Hinsicht aber noch ziemlich grün (in Sachen LED-Spielchen macht mir allerdings keiner mehr was vor!). Deshalb hoffe ich, in diesem großartigen Forum (das mir bislang schon sehr geholfen hat) eine Lösung zu finden, da meine Internet-Recherche seit Stunden erfolglos ist.

Mein Problem:

Ich versuche mich gerade am Programmieren des USART und kann ein "Hello World" auf einem Terminal (bei mir HTerm) ausgeben. Dazu musste ich allerdings die Standard-Verkabelung des STK500 ändern. PORTB ist, wie gehabt, mit den LEDs verbunden. An PORTD waren eigentlich die Taster. Die USART-Ausgabe habe ich nur hingekriegt, indem ich die RS232-Pins (TXD, RXD) mit PORTD verbunden habe, so dass die Taster und deren Funktionalität erstmal weggefallen sind.

Meine logische Schlussfolgerung war, die Taster einfach über einen anderen Port anzusprechen (auf dem STK500 gibt es ja die Ports A-E). So musste ich erstmal lernen, dass mein Tiny2313 keinen Port C bzw. E besitzt.

Mein Ziel ist es, Ein- und Ausgabe in einem Programm unterzubringen. Z.B. könnte man per Terminal solange Zeichen eingeben, bis ein Taster gedrückt wird und die Zeichen wieder zurück an das Terminal gesendet werden.

Wäre es denn möglich, den PORTA zu diesem Zweck zu nutzen? Laut Datenblatt ist dies ja nur ein 3-Bit-Port. Für ein, zwei Taster würde es ja locker reichen, aber meine Versuche in der Richtung sind bislang gescheitert.

Aus mehreren Anweisung der Marke

while( !(PIND & (1<<PIND0)) ) { ... }
habe ich entsprechend

while( !(PINA & (1<<PINA0)) ) { ... }
gemacht. DDRA habe ich auf 0x00 (alle Pins als Eingänge) gestellt.

Oder wäre es andersrum möglich, den PORTA für die USART-Ein-/Ausgabe zu nutzen? Ich bin nicht sicher, ob USART vielleicht auf PORTD festgelegt ist o.ä. .

Ein anderer Mikocontroller kommt übrigens nicht in Frage, da die Tiny2313's hier im Betrieb eingesetzt werden.

Dirk
12.06.2007, 13:59
Hallo _matze,


Wäre es denn möglich, den PORTA zu diesem Zweck zu nutzen?
Port A besitzt der 2313 auch nicht. :(

Also: Der 2313 hat nur Port B (8 Bit) und Port D (7 Bit).

Belegung RS232 (z.B.):
PD0 -> RXD
PD1 -> TXD

Gruß Dirk

_matze
12.06.2007, 14:23
Hi Dirk!

Danke für den Tipp, ich hab's jedoch vor 5 Minuten selbst rausgefunden. Ich war der Ansicht, der 2313 hätte einen Port A, da im AVR-GCC für diesen Typ die entsprechenden Konstanten (PORTA, DDRA, etc.) definiert sind. Aber eigentlich ist aus dem Datenblatt zu ersehen, dass es sich dabei nur um Reset (PA2) bzw. Quarz (PA0, PA1) handelt.

Trotzdem vielen Dank für die Hilfe!

Im Übrigen habe ich nicht weit genug gedacht (hab halt keine Ahnung von Elektrotechnik). Anstatt den Port D mit dem mitgelieferten Kabel komplett zu belegen, nur um die 2 Pins für den USART zu verbinden, werde ich nun versuchen, ein Kabel auseinander zu rupfen und somit sowohl USART als auch ein paar Taster auf Port D zu legen. Das dürfte doch klappen, oder?

Gruß Matze

Dirk
12.06.2007, 14:35
... werde ich nun versuchen, ein Kabel auseinander zu rupfen und somit sowohl USART als auch ein paar Taster auf Port D zu legen. Das dürfte doch klappen, oder?
Jo, klappt! 5 Taster sind da noch drin (PD2..6)!

Gruß Dirk

_matze
12.06.2007, 15:54
So, habs geschafft! Meine LED-Lichtershow wird weiterhin betrieben und ist über Taster steuerbar, und in der Schleife werden USART-Ein- und Ausgaben abgewickelt.

Herzlichen Dank nochmal, Dirk! Ich denke, das wird nicht meine letzte Frage hier im Forum gewesen sein. Schön zu wissen, dass hier fachkundige Hilfe zu finden ist.

Gruß Matze