- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Problem mit ATtiny 15

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.04.2006
    Beiträge
    125

    Problem mit ATtiny 15

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Öhm ... da meine Glaskugel defekt ist, wäre etwas Code zu deinem Problem nicht schlecht ...

    ansonsten liegt der Fehler garantiert in Zeile 42.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.04.2006
    Beiträge
    125
    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.

    Code:
    .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)

    Code:
    ; 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.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    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 ?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.04.2006
    Beiträge
    125
    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.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hast du Pin1 (Reset) auf +5V gelegt ?
    Wenn Pin1 einfach unbeschaltet ist,
    äuft der Tiny15 oft nicht richtig an.

    Gruß Jan

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.04.2006
    Beiträge
    125
    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?

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.02.2006
    Alter
    54
    Beiträge
    781
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests