Forum: Mikrocontroller und Digitale Elektronik Attiny13a am Kartenleser mit TTL Ausgang


von Joachim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab irgend wo ein Denkfehler und finde ihn nicht.

Mein Kartenleser-Signal ist im Bild zu sehen.
Dieses bringt er auf die TX-Leitung, wenn ich einen Tag drauflege.

Ist dies der Fall, kommt als erstes eine fallende Flanke. Somit frage 
ich PB5 auf low ab. Der Attiny soll dann, den Ausgang PB2 für 1sek auf 
High setzten.

Macht er aber nicht. Statt dessen führt er die ganze Zeit das 
geschriebene in der IF-Schleife aus und zieht beim Auflegen des Tags PB2 
für ca. 2sek. auf low.

Sorry, bin ein Neuling was das Thema angeht.

Mein Code
1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <util/delay.h>
4
5
int main(void)
6
{
7
8
9
  _delay_ms(500);
10
  _delay_ms(500);
11
  _delay_ms(500);
12
  _delay_ms(500);
13
14
  DDRB |= (1<<PB2); // Ausgang
15
16
17
18
  while (1) 
19
    {
20
    if (!( PINB & (1<<PINB5)) ) //Abfrage auf low
21
    {
22
      _delay_ms(100); //Warten biss das restliche Signal durch ist
23
      PORTB |= (1<<PB2); //LED an
24
      _delay_ms(500);
25
      _delay_ms(500);
26
      PORTB &= ~(1<<PB2);  //LED aus
27
    }
28
  }
29
30
}

Was mach ich falsch?

Danke für eure Hilfe.

von Mario M. (thelonging)


Lesenswert?

PB5 ist der Reset-Anschluss. Nimm einen anderen Pin.

von Joachim (Gast)


Lesenswert?

DANKE, ES FUNKTIONIER!
Hab jetzt den PB0 genommen.

Aber warum?
Kann ich den Reset nicht als normalen Eingang benutzten?

von Mario M. (thelonging)


Lesenswert?

Nein, weil der bei L den Controller resettet und das Programm von vorn 
startet. Man kann die Reset-Funktion per Fuse abschalten, dann kann der 
Controller aber nicht mehr mittels ISP geflasht werden.

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
Noch kein Account? Hier anmelden.