Forum: Mikrocontroller und Digitale Elektronik Problem mit ATTiny12...Startschwierigkeiten


von Dennis S. (Gast)


Lesenswert?

Hallo!

Ich habe ganz frisch mit den ATTinys angefangen und habe mit diesen
Startschwierigkeiten.
Nun wolle ich den Tiny12 so programmieren, daß er 2 inputs und 2
outputs hat.

PB0 und PB1 sollen Eingänge und PB3 und PB4 sollen Ausgänge sein,
jedoch packe ich es irgentwie nicht die Tinys richtig zu programmieren.
(Bei den normalen schaffe ich das).

Also wird bei PB0(PB1) masse angelegt, so soll bei PB4(PB3) 5V
rauskommen. Aber irgentwie klappt das nicht :-/ Ich vermut eich habe
das mit der Mehrfachbelegung der PINs noch nicht so richtig
verstanden...(Könnte mir bitte jemand erklären, wie ich die
Zusatzoptionen aktivieren und deaktivieren kann?)

Würde mich sehr freuen, wenn sich jemand kurz die Zeit nimmt und mir
einen kleinen entsprechenden Assemblercode schreiben würde. (wenns geht
bitte mit kleinen Erläuterungen).

Schonmal vielen dank :)

Gruß Dennis

PS: Bei google habe ich nix dazu gefunden und aus den Datenblättern
werde ich auch nicht so richtig klug :-(

von Frank Linde (Gast)


Lesenswert?

Hallo Dennis,

ich habe noch nie mit dem ATtiny12 gearbeitet, aber nach einem kurzen
Blick ins Datenblatt spricht meiner Meinung nach nichts gegen die
folgenden Ansätze (die Tiny-Freaks mögen mich ggf. korrigieren).

Gruß, Frank


Variante 1:

.include "tn12def.inc"

LDI  r16, 0b00011000  ; PortB initialisieren
OUT  DDRB, r16
Schleife:
IN  r16, PORTB  ; Eingangswerte in Register 16 einlesen
ROR  r16    ; WENN (Pin 0 = 0) DANN  Ausgang Pin 3 := 1
BRCC  Weiter1    ;                  SONST Ausgang Pin 3 := 0
CBI  PORTB, 3
RJMP  Weiter2
Weiter1:
SBI  PORTB, 3
Weiter2:
ROR  r16    ; WENN (Pin 1 = 0) DANN  Ausgang Pin 4 := 1
BRCC  Weiter3    ;                  SONST Ausgang Pin 4 := 0
CBI  PORTB, 4
RJMP  Weiter4
Weiter3:
SBI  PORTB, 4
Weiter4:
RJMP   Schleife  ; und noch einmal ...


Variante 2:

.include "tn12def.inc"

LDI  r16, 0b00011000  ; PortB initialisieren
OUT  DDRB, r16
Schleife:
IN  r16, PORTB  ; Eingangswerte in Register 16 einlesen
COM  r16    ; Register 16 negieren
ROL  r16    ; Das Ganze um drei Bits nach links
ROL  r16
ROL  r16
ANDI  r16, 0b00011000  ; die nicht interessierenden Bits löschen
OUT  PORTB, r16  ; und das Ergebnis ausgeben.
RJMP   Schleife  ; und noch einmal ...

von Frank Linde (Gast)


Lesenswert?

Grrrr! Wo ist meine Formatierung hin?

Ok, jetzt weiß ich auch endlich, warum hier Listings in der Regel als
Dateianhang erscheinen. Dennis, mußt Du Dir halt wieder nett
formatieren.  ;-)

Gruß, Frank

von Dennis S. (Gast)


Lesenswert?

Hi!

Danke für deine Mühe, doch trotzdem rührte sich der chip nicht...

Habe aber denke ich den Fehler gefunden....

Also im moment ist mein ATTiny so beschaltet:

1: nc
2: Ausgang 1
3: Ausgang 2
4: GND
5: Eingang 1
6: Eingang 2
7: nc
8: VCC

Soweit stimmt die Belegung mit dem Datenblatt überein, doch der Chip
stellt sich tot.... :-/

nun bin ich mal mit nem Finger unten an die Pins gekommen und schon
rührte sich der Chip. also habe ich nach einem gewissen Rumprobieren
herausgefunden, das ich auf Pin 1 VCC legen muß, damit der Chip
funktioniert...

Irgentwie doch merkwürdig, oder? oder bekommt der Tiny durch den nicht
belegten Reset-Pin (kein Pullup?) ein Dauer-Reset?

Gruß Dennis

von Frank Linde (Gast)


Lesenswert?

Der RESET-Pin sollte nie unbeschaltet sein. Ausnahme: Beim ATtiny12 kann
man den externen RESET durch eine Fuse abschalten. ABER VORHER GUT
ÜBERLEGEN, OB MAN DAS WIRKLICH WILL (siehe Datenblatt)!

Gruß, Frank

von Benjamin Thaidigsmann (Gast)


Lesenswert?

Ist zwar schön verjährt, aber vielleicht ließt es ja trotzdem noch
jemand...
Sollte es oben nicht
IN  r16, PINB  ; Eingangswerte in Register 16 einlesen
anstatt
IN  r16, PORTB  ; Eingangswerte in Register 16 einlesen
heißen?

Gruß,
Benni

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.