ATtiny2313 : Seltsame Wirkung

OP #452903
Lesenswert?

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
Gast #453010
Lesenswert?

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
OP #453385
Lesenswert?

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
Gast #453403
Lesenswert?

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!
Gast #657257
Lesenswert?

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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren