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 :-(
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 ...
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.