mikrocontroller.net

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


Autor: Dennis S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benjamin Thaidigsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.