mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster speziellen Porteingang zuweisen!


Autor: Andreas V. (wicky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe versucht einen Taster (S0) einem separaten Porteingang (PA7) 
zuzuordnen.
Im endefekt habe ich es auch hinbekommen, aber ich vermute dies ist 
nicht der korrekte Weg!,
weil ich nun keinen anderen Taster mehr einem anderen Port zuordnen 
kann!

Könnte sich dies einmal jemand anschauen der schon tiefer in der Materie 
steckt als ich(Anfänger)!

Danke.

Ich arbeite mit einem STK 600, Atmel 2650, 16 MHZ;

Code:

#include<avr/io.h>


#ifndef F_CPU
#define F_CPU 1600000000UL
#endif

#include<util/delay.h>


uint8_t mask1;

void main(){

  DDRD = 0x00;
  DDRA = 0xFF;

  mask1 = 0x7F;

  while(1){

                if(PIND){
    PORTA = PIND<<7 | mask1;
    }
  }

}

Gruß,
Andreas

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Andreas V. schrieb:
> ich habe versucht einen Taster (S0) einem separaten Porteingang (PA7)
> zuzuordnen.
Das macht man üblicherweise, indem man den Taster an den gewünschten 
Portpin anlötet...

Deine Fragestellung ist mir also etwas unklar.

> #ifndef F_CPU
> #define F_CPU 1600000000UL
Wo bekommt AVR mit 1,6GHz Takt?

> #endif

Gruß aus Berlin
Michael

Autor: Andreas V. (wicky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael U. schrieb:
> Das macht man üblicherweise, indem man den Taster an den gewünschten
> Portpin anlötet...

Ich wollte es halt simulieren um eventuell für ein späteres Projekt mit 
einem Taster verschiedene Ereignisse an verschiedenen Pins des Ports 
auszulösen.

Michael U. schrieb:
> Wo bekommt AVR mit 1,6GHz Takt?

Sorry, wie meinst Du das ?

Habe gerde gesehen das ich im ersten post einen Zahlendreher habe.

Es handelt sich definitiv um einen ATmega 2560


Andreas

Autor: Mmmh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>> Wo bekommt AVR mit 1,6GHz Takt?

>Sorry, wie meinst Du das ?
Na wie soll er das schon meinen?

???????????????????? >>>>>>>>>>>>>>>>>>>>>> #define F_CPU 1600000000UL 
<<<<<<<<<<<<<< ????????????????????

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmh schrieb:
>>>> Wo bekommt AVR mit 1,6GHz Takt?
>
>>Sorry, wie meinst Du das ?
> Na wie soll er das schon meinen?
>
> ???????????????????? >>>>>>>>>>>>>>>>>>>>>> #define F_CPU 1600000000UL
> <<<<<<<<<<<<<< ????????????????????

Was auch immer du nimmst, probier mal weniger davon.

Autor: Mmmh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehst Du? Sogar Simon K. hat es erkannt.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
booo AVR mit 1,6ghz will ich auch :)

Autor: Edi R. (edi_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas V. schrieb:
> ich habe versucht einen Taster (S0) einem separaten Porteingang (PA7)
> zuzuordnen.

Mir ist immer noch nicht klar, was Du eigentlich erreichen willst. 
Kannst Du das nochmal genau beschreiben?

Autor: Spekulator (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blick in die Glaskugel Du willst also wenn du auf einen Taster 
drückst, der irgendwie angeschlossen ist an deinem µC, dass ein 
bestimmter Pin verschiedens tut? Also z.b. Einmal ne Software PWM 
ausgeben, beim nächsten Drücken nur auf High ziehen? soetwas?

Meine Glaskugel ist auf Grund der Witterungsverhältnisse grad nicht so 
gut zu gebrauchen, sorry ;)

Aber ich glaube wenn du uns nochmal genau sagst was du vor hast, wären 
wir einen großen Schritt weiter ...

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich versteh auch nicht was er meint. diese zuweisung ist nur in hardware 
durch entsprechende verlötung zu machen. der µC kann doch nur 
mitbekommen, daß sich an einem seiner pins was ändert. wenn ich 
irgendein pin auf masse lege und der port des µC zeigt mir an, daß ein 
anderes pin auf masse liegen würde dann nehm ich den µC und schmeiß ihn 
weg... ;)

Autor: Oliver Henrichsen (olli_henri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Program ist für einen Mega 16 und ist eine Möglichkeit einen 
Taster abzufragen.

Deine Frequenz ist zu hoch eingestellt, so einen AVR gibts nicht!

/*
 * zeigt an der LED 0 den Zustand eines Tasters an PA0 an, der geöffnet 
über 10k an Masse liegt und geschlossen an Vcc
 * mit jedem Tastendruck wird ein Wanderbalken an LED 1-7 an PORTB 
weiterbewegt
 *
 *
 */

#include <avr/io.h>
#include <util/delay.h>    // definiert _delay_ms()


int main()
{
  DDRB = 0xFF;    // PORTB als Ausgang
  PORTB = 0;    // alles aus an PortB
  DDRA &= ~(1 << DDA0);  // PA0 als Eingang

  while (1)    // Endlos
  {
  if (PINA & (1 << PINA0))// wenn PA0 geschlossen (HIGH)
    PORTB |= (1 << PB7);  // PB7 LED anschalten
  else
    PORTB &= ~(1 << PB7);
  while (PINA & (1 << PINA0));// warten bis Taste los ist

  return 0;
}

Autor: Andreas V. (wicky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver Henrichsen schrieb:
> Deine Frequenz ist zu hoch eingestellt, so einen AVR gibts nicht!

Das Datenblatt sagt:

ATmega2560/ATmega2561
0-16MHZ@4.5-5.5V

wenn ich das falsch interpretiert habe OK, bin halt noch nicht so 
sattelfest wie andere.

Mmmh schrieb:
>>>> Wo bekommt AVR mit 1,6GHz Takt?
>
>>Sorry, wie meinst Du das ?
> Na wie soll er das schon meinen?
>
> ???????????????????? >>>>>>>>>>>>>>>>>>>>>> #define F_CPU 1600000000UL
> <<<<<<<<<<<<<< ????????????????????

Die Definition für die Frequenz stamt von einem Code zur Ansteuerung 
eines LCD Displays.
Hätte ich rauslöschen sollen! wenn ich gewußt hätte was das auslöst.

Die Definition steht übrigens in der lcd-routines.h, gehört hier aber 
nicht hin, hab ich verstanden.

Spekulator schrieb:
> Aber ich glaube wenn du uns nochmal genau sagst was du vor hast, wären
> wir einen großen Schritt weiter ...

Ich wollte  versuchen einen Pegel an einem Pinx abzufragen und daraufhin 
einen Portx  zu setzen.

Andreas

Autor: Oliver Henrichsen (olli_henri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann habe ich dich wohl richtig verstanden und wenn du den von mir 
geposteten Code portierst hast du einen guten Ansatz das umzusetzen was 
du möchtest.
Denke aber auch über das entprellen des Tasters nach sonst gehts nur 
sehr unzuverlässig.

Manche Kleinigkeiten lösen in so einem Forum eine menge Reaktionen 
aus...

LOL

:-))

Gruß Oliver

Autor: Andreas V. (wicky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ olli_henri

Danke für deine nette Unterstützung, werde deine Ratschläge bei der 
Umsetzung berücksichtigen.

noch einen schönen Abend

Andreas

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.