Hallo, hier bekam ich eine seltsame Wirkung: ---- Schaltung: Taster an PORTA0 und PORTA1 nach GND LED an PORTB0 Funktion: Taster PORTA0 > LED ein Taster PORTA1 > LED aus ------------------------------- #include <avr/io.h> #include "binary.h" //definiert die Binärdarstellung // b...... int main( void ){ //Ports initialisieren DDRB = b00000001; //PortB0 LED-Ausgang PORTB = b00000000; //PortB alle 0 DDRA = b00000000; //PortA0,1 Eingang PORTA = b00000011; //PortA0,1 Pullup ein for(;;){ // main loop if ((PINA & b00000001) == 0){ PORTB = PORTB | b00000001; }; if ((PINA & b00000010) == 0){ PORTB = PORTB & b11111110; } } return 0; Die LED an PORTB0 flackert bei Taster PORTA0, ev. längeres Drücken LED wieder aus. Auch bei der Betätigung Taster PORTA1 unbestimmter Zustand. Prellen dürfte ja hier keine Rolle spielen. Verwende ich als Eingang PORTD, funktioniert das Pgm. wie erwartet. Sind etwa alternative Funktionen von PORTA standartmäßig eingeschaltet, hab ich das im Manual nich gefunden? Viele Grüße Hans-Jürgen
Soweit ich weis sind die Alternativfunktionen von portA standartmäßig aktiv. schau dir mal das Datenblatt an. viel Erfolg beim Basteln
Wie hast du denn die Fuse-Bits des Tiny2313 programmiert? PA0 und PA1 sind auch die Pins für einen externen Quarzoszillator. Wenn du also nicht einen internen Oszillator ausgewählt hast, kann das Programm gar nicht richtig ablaufen. Gruss Andi
Ich bin mir jezt unsicher aber hat PortA überhaupt interne Pullups? Standardmäßig sind die alternativen Funktionen aus, es sei den er versucht den ResetPin zu verwenden ;)
Hallo, Die Alternativfunktionen von PORTA0 und PORTA1 als Anschluß für XTAL werden über Fuses gesetzt. Diese stehen auf internen Oszillator. - Die Sache mit dem return in int main (void) resultiert mal aus einer Compilerwarnung. Aber richtig, das return wird nie erreicht. - Laut Datenblatt hat PORTA interne Pullups. Viele Grüße Hans-Jürgen
Wo hastdu denn die abschließende '}' der main gelassen? Hat der Compiler da keine Fehler ausgespuckt, odr ist das nur ein Codeschnipsel? Ansonsten siehe oben. Eine Entprellung, bzw. Abfrage der Taste auf drücken und anschließend loslassen fehlt auch, da wird nix anderes als Flackern 'rauskommen!
Ups.. zu schnell geguckt! Sind ja verschiedene Taster! Flackert natürlich nicht.
Verwendest du ein stk500? Hatte das gleiche Problem, bei PORTB für meine Taster hat alles funktioniert und sobald ich sie an PORTA betreiben wollte ging die Abfrage nicht mehr. Das stk500 unterstützt den ATtiny2313 nicht, sondern nur den Vorgänger AT90S2313. Der hat keinen PORTA, weshalb der Sockel auf dem stk500 nur mit den Oszillatoreingängen XTAL1 und XTAL2 verbunden ist. Somit hat man an PA0 und PA1 am Controller keinen definierten Zustand. Die einzige (allerdings etwas brutale) Lösung ist es, die beiden Pins wegzubiegen und selbst mit den Tastern zu verdrahten! Hoffe ich konnte helfen!
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.