PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit ATtiny 15



humus
28.06.2006, 16:55
Hey,

ich habe ein Problem mit dem ATtiny 15 von Atmel!

Ich habe ein Programm drauf geladen und auf dem STK getestet funktioniert, habe es in meine Schaltung ein gebaut funktioniert nicht.

"Ich habe natürlich das Programm ein wenig verändert, das es in meiner Schaltung läuft, da ich nicht mit LOW signalen sondern mit High signalen schalte! "

Habe das gleiche Programm in einen ATtiny 2313 geladen funktioniert ohne Probleme...

Der Tiny15 gibt nichts raus. Habe dem dann einfach gesagt, das er mit alle PORTB auf "1" schalten soll, macht er auch nicht.

Woran könnte das liegen das er nichts nach ausen auf die Pins gibt?
Kauputt kann er auch nicht sein, habe das auch schon mit einem zweiten ATtiny15 versucht.

Vielleicht fällt euch da noch etwas ein?

Hanni
28.06.2006, 17:07
Öhm ... da meine Glaskugel defekt ist, wäre etwas Code zu deinem Problem nicht schlecht ...

ansonsten liegt der Fehler garantiert in Zeile 42.

humus
28.06.2006, 18:27
ich hatte den code nicht gepostet, da er meiner Meinung nach nicht Fehlerhaft ist, wenn der Code in einem anderen avr ohne Probleme läuft.

hier der Code:

Das ist der Testcode, mit dem ich Testen wollte, ob überhaupt etwas aus dem uC kommt.



.INCLUDE "tn15def.inc"

main:

ldi r16, 0xFF
out DDRB, r16

ldi r16, 0xFF
out PORTB, r16


Hier der Code der eigentlich funktionieren sollte(ist bisschen schlampig geschrieben)



; Prozessor definieren
.NOLIST
.INCLUDE "tn15def.inc" ; ATtiny15
.LIST

; Register definieren
.DEF temp = R16
.DEF zaehler = R17

.CSEG ; Hier beginnt das Code-Segment
.ORG 0x00 ; Die Adresse auf Null


; Hauptprogramm
main:

ldi temp, 0b11111110 ; Ein- und Ausgangspins configurieren
out DDRB, temp ; PINB0 Eingang PINB1-5 Ausgang

ldi temp, 0x00
out PORTB, temp

; loop (Endlosschleife zum Abfragen des Tasters)
loop:

sbic PINB, 0
rjmp delay

; loop2 (Zweite Abfrage des Tasters)
loop2:

sbic PINB, 0
rjmp an_aus
rjmp loop

; delay (warte Schleife zum entprellen des Tasters)
delay:

ldi zaehler, 0x10

wait:

dec zaehler
brne wait

rjmp loop2

; an_aus (Überprüfen Ausgänge Überprüfen und An- oder Ausschalten)
an_aus:

sbic PORTB, 1
rjmp aus
rjmp an

; an (schalte Ausgänge An)
an:

sbi PORTB, 1
rjmp loop

; aus (schalte Ausgänge Aus)
aus:

cbi PORTB, 1

rjmp loop


Ich habe am Eingang einen Pulldown in meiner Schaltung

Funktionsbeschreibung: Mit einem Taster Ein und Ausschalten der PortB Bits.

Hanni
28.06.2006, 19:40
Ich habe den Code mal überflogen ... so wie ich es sehe sollte er funktionieren.

Die Frage die nun noch offen ist:

Wie genau ist der Taster verdrahtet ?

humus
29.06.2006, 16:14
Der taster ist an +5V.

An dem Eingang ist auch ein Pulldown widerstand!

Die Gleiche Schaltung hatte ich auch mal in einen ATtiny2313 geladen schaltung exakt gleich und da hat es funktioniert.

Was ich komisch finde, das ich noch nicht mal bei dem Tiny15 einfach einen output bekomme wie oben in dem Test Programm.

Der Tiny15 ist auch nicht defekt, da ich das auch schon mit einem anderen Tiny15 ausprobiert habe.

JanB
29.06.2006, 23:14
Hast du Pin1 (Reset) auf +5V gelegt ?
Wenn Pin1 einfach unbeschaltet ist,
äuft der Tiny15 oft nicht richtig an.

Gruß Jan

humus
29.06.2006, 23:39
Danke für den Tip, habe es eben gleich mal ausprobiert, funktioniert ohne Probleme mit dem ATtiny 15!

Muss ich Reset bei jedem AVR auf + 5 V legen, das der Fehler frei funktioniert?

Ich habe eben extra noch mal im Datenblatt nachgeschaut, und da ist PIN1 also Reset auch als PB5 gekennzeichnet, kann ich den dann auch ganz normal beschalten, wie jeden anderen PB oder muss ich den dann immer an die +5 V legen? Dann würde ich ja quasie einen Port "verlieren".

Noch eine kurze Verständnisfrage, Reset wird zum Programmieren des AVRs auf Masse gelegt, da Reset ja negiert ist, oder?

dennisstrehl
29.06.2006, 23:47
Man kann den Reset-Pin auch abschalten, dann kann man ihn als Portpin verwenden. Allerdings funktioniert das programmieren mit dem ISP dann nicht mehr.
Es gibt auch AVRs, die nen internen Pullup am Reset-Pin haben. Der Tiny15 hat keinen und damit liegt der Reset-Pin auf Masse, wenn er unbeschaltet ist. Möglich wäre es, dass es im Datenblatt angegeben ist, ob er einen Pullup braucht, ansonsnten: Ausprobieren.

"Noch eine kurze Verständnisfrage, Reset wird zum Programmieren des AVRs auf Masse gelegt, da Reset ja negiert ist, oder?"

Ja. Aber afaik wird da noch nen bisschen mehr gemacht um in den Programmier modus zu kommen.

MfG