-
-
Neuer Benutzer
Öfters hier
Probleme mit AtTiny2313
Hallo,
ich habe folgendes Problem mit meinem AtTiny2313:
Sobald ein TTL Pegel an Pind.6 anliegt soll Pinb.1 auf 5V geschaltet werden.
Die Schaltung ist extrem einfach und besteht eigentlich nur aus dem AtTiny2313, der ISP Stiftleite, ein 100nF Kondensator und ein 10µF Elko zwischen der Versorgungsspannung und Ground sowie ein 10K Widerstand als Pullup am Reset.
Das Programm sieht folgendermassen aus:
$regfile = "ATtiny2313.dat"
$crystal = 4000000
$baud = 9600
$hwstack = 32
$framesize = 24
Config Pinb.1 = Output
Config Pind.6 = Input
Do
If Pind.6 = 1 Then
Pinb.1 = 1
Else
Pinb.1 = 0
End If
Loop
End
Es wird der interne Oszillator benutzt, Ckdiv ist disabled (fusebit C = 1).
Bei Pind.6 = 0 ist auch Pinb.1 = 0.
Bei Pind.6 = 1 oszilliert Pinb.1 mit einer Periode von etwa 0.2ms.
Warum bleibt Pinb.1 nicht konstant auf 5V?
Nächstes Problem:
Pinb.1 soll alternieren: ca. 2 sec auf 5V und dann ca. 1 sec auf 0V
Wie oben wird der interne Oszillator benutzt und Fusebit C = 1
$regfile = "ATtiny2313.dat"
$crystal = 4000000
$baud = 9600
$hwstack = 32
$framesize = 24
Config Pinb.1 = Output
Reset Pinb.1
Do
Set Pinb.1
Waitms 2000
Reset Pinb.1
Waitms 1000
Loop
End
Am Pinb.1 wird mit einem Multimeter nun folgendes gemessen:
Ca. 3 sec 5V,ca. 3 sec 0V usw.....
Anscheinend funktioniert der waitms Befehl nicht?
Könnt Ihr mir helfen?
Gruß,
Cybernix
-
Erfahrener Benutzer
Roboter Genie
Den Fehler hat jeder schon mindestens einmal gemacht:
Einen Ausgang setzt du Portb.1 = 1, nicht mit Pinb.1 = 1.
Pin ist nur zum Abfragen des Eingangszustands.
Gruß
Rolf
-
Neuer Benutzer
Öfters hier
Vielen, vielen Dank
Natürlich, jetzt wo Du es sagst....
Da wäre ich in der nächsten Zeit nicht von selbst drauf gekommen.
Vielen herzlichen Dank,
Cybernix
-
Erfahrener Benutzer
Roboter Experte
Damit er ohne weitere externe Beschaltung (Pullup) den Zustand erkennen kann, musst du noch den Input-Pin auf 1 setzen. Damit aktivierst du den internen Pullup.
-
Erfahrener Benutzer
Robotik Einstein
Moin,
es gibt da aber eine Sonderfunktion bei PinX.y der (neuen) AVRs,
Deswegen ist auch das verhalten von 3sec High und 3sec Low. (1sec + 2sec)
Denn wenn man den Port auf Ausgang hat, und dann den PinX.y setzt, toggelt der Ausgang, was genau zu diesem Ergebnis führt was Cybernix geschrieben hat. Das löschen von PinX.Y hat keine Funktion.
Haben ein paar das DB nicht richtig gelesen
Der Rest stimmt aber natürlich auch
ausser:
Der Pullup wird per PortX.Y gesetzt, wenn der Port Eingang ist, nicht per PinX.Y !
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen