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
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
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
>>> Wo bekommt AVR mit 1,6GHz Takt? >Sorry, wie meinst Du das ? Na wie soll er das schon meinen? ???????????????????? >>>>>>>>>>>>>>>>>>>>>> #define F_CPU 1600000000UL <<<<<<<<<<<<<< ????????????????????
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.
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?
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 ...
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... ;)
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; }
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
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
@ olli_henri Danke für deine nette Unterstützung, werde deine Ratschläge bei der Umsetzung berücksichtigen. noch einen schönen Abend Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.