Spannung an VCC und GND oder???

GreenArrow

Neues Mitglied
26. Aug. 2008
23
0
0
Sprachen
Hey Leute,bei dem schlechten Wetter quält mich die langeweile und da dachte ich mir ich steig mal in die Welt der Microcontroller ein mit dem hochgesteckten Ziel mir irgendwann nen kleinen Roboter zu basteln. Nun habe ich mir vom Franzis Verlag das "Microcontroller Lernpaket" gekauft. Da ist ne kleine Platine bei, die ich an den Seriellen Port des PC´s anschließe um den Controller zu programmieren. Außerdem war das AVR Studio dabei. Ich habe jetzt ein Beispiel Programm in den Controller geladen wo abwechselnd am Ausgang PB3 und PB4 für kurze Zeit spannung anliegt. So das LED´s die man anschließt abwechselnd blinken. Solange der Attiny13 auf der Platine ist funzt das auch super. Jetzt hab ich den Attiny13 auf ne Seperate Platine gesteckt um das ganze mal getrennt vom PC zu testen. Leider klappt das nur bedingt. Es klappt nämlich nur wenn ich Minus an RES anlege. Aber normalerweise gehört Minus doch an GND oder hab ich da was falsch verstanden? Da GND und RES bei Attiny13 gegenüber liegen,liegt ne Verwechslung nah,das hab ich aber schon kontrolliert. Der IC steckt richtig rum im Sockel. Angeschlossen ist auch alles richtig. Vielleicht hat ja jemand ne Idee. Vielen Dank im Vorraus, GreenArrow

Ps: habe gerade bemerkt das es nicht nur funktioniert wenn ich Minus an RES anlege sondern auch wenn ich es an PB0, PB1 oder PB2 anlege ...
 
...habe gerade bemerkt das es nicht nur funktioniert wenn ich Minus an RES anlege sondern auch wenn ich es an PB0, PB1 oder PB2 anlege ...

Hallo,

wenn du GND oder VCC an einen Portpin anschließt, kann dies den Mikrocontroller zerstören, wenn der entsprechende Portpin als Ausgangspin konfiguriert ist!

Der Mikrocontroller benötigt ein Reset-Signal. Nach dem Reset wird der Mikrocontroller initialisiert, es werde alle I/O-Register in einen definierten Zustand gebracht. Wichtig ist, dass nach einem Reset die Betriebsspannung stabil in den zulässigen Spannungsbereichen liegt.

Jetzt gibt es beim ATtiny die Möglichkeit mittels Fusebit den externen Reset zu deaktivieren, damit man einen weiteren I/O-pin zur Verfügung hat. Ich weiss nicht, ob der externe Reset bei dir deaktiviert ist, ich vermute aber mal nicht. Vom Werk aus ist der externe Reset aktiviert. Der Reset-Pin ist intern mit einem Pullup-Widerstand nach VCC beschaltet. Legst du an den Reset-Pin (RESET\) kurz einen Low-Pegel an, wird ein Reset ausgeführt.

Wenn du Betriebsspannung an deine Platine anlegst und das Programm erst dann richtig läuft, wenn du manuell einen Reset auslöst, indem du kurz GND an den Reset-Pin anlegst, wird der Mikrocontroller anscheinend zuvor nicht richtig resettet.

Schau vielleicht einmal in das Datenblatt des ATtiny13, Kapitel "System Control and Reset".

Es gibt mehrere Möglichkeiten, um den Mikrocontroller "sauber" zu resetten:
  • Unterspannungssensor an den Reset-Pin anschließen
  • den Brown-out-detector aktivieren (Fusebits BODLEVEL0, BODLEVEL1)
  • den internen Watchdogtimer per Fuse aktivieren (Fusebit WDTON), im Programm dann durch Befehl wdr immer rechtzeitig zurücksetzen.
Grüße,
Dirk
 
Hey Dirk,
als erstes vielen Dank für deine Mühe. Bei dem Lernpaket war ne Software dabei um das Programm auf den Attiny zu laden. Bevor ich das hochlade muss ich den mit dem Programm Initialisieren in dem ich auf nen Button klicke wo "Bootloader und Fuses" draufsteht. Dann hab ich das Blink-Programm in den Attiny geladen,die Software geschlossen. Denn Attiny aus der Programmier-Platine gezogen und ihn in meine gesteckt. Aber selbst wenn ich Spannung an GND und VCC anlege und dann kurz RST mit GND verbinde fängt es leider immer noch nicht an zu blinken. Das Programm sieht wie folgt aus:
;Blink2.asm Blinker mit Unterprogramm

.include "tn13def.inc"

rjmp Anfang
Anfang:
ldi r16,0x18 ;PB3 und PB4
out ddrb,r16 ;Datenrichtung
Schleife:
ldi r16,8 ;8 = 0x08
out portb,r16 ;PB3 = 1, PB4 = 0
rcall Warten ;Unterprogrammaufruf
ldi r16,16 ;16 = 0x10
out portb,r16 ;PB3 = 0, PB4 = 1
rcall Warten ;Unterprogrammaufruf
rjmp Schleife

Warten:
Ldi r16,250
Warten1: ;äußere Schleife
Ldi r17,250
Warten2: ;innere Schleife
dec r17
brne Warten2
dec r16
brne Warten1
ret ;Rücksprung

In dem Buch stand,das das rjmp Anfang wichtig für die Software wäre. Muss ich das vielleicht entfernen wenn ich den Attiny auf ne "normale" Platine mache?

Naja,schonmal vielen Dank im vorraus für eure Mühe
Mfg GreenArrow
 
Hi,

üi da fehlen glaub ich noch ein paar Grundkentnisse.

Gut du schreibst ja in Assembler ist zum Anfangen nicht schlecht (hast du damit schon mal was gemacht?) Falls nein Empfehle ich dir nimm ein Tutorial (findest du bei Google) wenn nichts findest einfach nochmal sagen.

http://www.avr-asm-tutorial.net/

Hast du die Fuses bearbeitet ?

//hört sich blöd an aber nach deinem Fehlerbild kann es an der BODLEVEL1 liegen

ist die Programmiert ? deine Beschreibung sieht arg danach aus ^^

Welche Fuses hast du denn gesetzt ?
 
Hallo,

dieses rjmp zu Begin des Programms macht hier eigentlich keinen Sinn, es sei denn, man nutzt Interrupts, ich möchte dich aber jetzt nicht verwirren.

So wie ich es verstanden habe, ist bei diesem Lernpaket eine Programmierplatine dabei, die man an den PC anschließt und über die man den Mikrocontroller programmieren kann?! Kann man den ATtiny13 denn auf dieser Platine laufen lassen, wenn ja, läuft das Programm darauf?

Anscheinend wird ja ein Bootloader programmiert und die FuseBits werden geändert. Kannst du denn sehen, welche Werte die FuseBits haben (FuseBitsLow, FuseBitsHigh)?

Grüße,
Dirk
 
Ja, auf der Programmierplatine läuft alles wie geschmiert. Das ist ja das was ich nicht verstehe.
Die Werte der Fusebits kann ich leider nicht sehen. Ich lade einfach das obige Programm als .hex datei in den uC und wenn ich dann ne LED an PB3 und GND halte, blinkt sie. Wenn ich den uC aber von der Platine nehme und auf meine Stecke dann blinkt es nicht.
Habe das rjmp Anfang und Anfang: aus dem Programm entfernt. Aber jetzt läuft es nicht mal mehr auf der Programmierplatine. In dem Buch vom Franzis Verlag steht:
... dieses setzt beim hochladen einen Sprung auf das Bootprogramm und vermekt den wriklichen Anfang des Programms an anderer Stelle ...
Von ASM hab ich nur absolute Grundkenntnisse. Überwiegend aus dem Buch was dabei war. Aber eigentlich brauch ich auch keine großen, denn ich möchte für den Anfang mit dem uC nur bestimmte Ports ansteuern und LED´s blinken lassen. Wie gesagt auf der Programmierplatine läuft alles super. Sogar das dimmen mittels PWM an PB0, aber sobald ich den uC von der Programmierplatine nehme tut er nicht mehr was er soll


Falls das weiterhilft kopier ich euch hier mal die tn13def rein
;***************************************************************************
;* A P P L I C A T I O N N O T E F O R T H E A V R F A M I L Y
;*
;* Number :AVR000
;* File Name :"tn13def.inc"
;* Title :Register/Bit Definitions for the ATtiny13
;* Date :02.07.05
;* Version :1.00
;* Support telephone :+47 72 88 43 88 (ATMEL Norway)
;* Support fax :+47 72 88 43 99 (ATMEL Norway)
;* Support E-mail :support@atmel.no
;* Target MCU :ATtiny13
;*
;* DESCRIPTION
;* When including this file in the assembly program file, all I/O register
;* names and I/O register bit names appearing in the data book can be used.
;* In addition, the two registers forming the data pointer Z have been
;* assigned names ZL - ZH.
;*
;* The Register names are represented by their hexadecimal address.
;*
;* The Register Bit names are represented by their bit number (0-7).
;*
;* Please observe the difference in using the bit names with instructions
;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc"
;* (skip if bit in register set/cleared). The following example illustrates
;* this:
;*
;* in r16,PORTB ;read PORTB latch
;* sbr r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
;* out PORTB,r16 ;output to PORTB
;*
;* in r16,TIFR ;read the Timer Interrupt Flag Register
;* sbrc r16,TOV0 ;test the overflow flag (use bit#)
;* rjmp TOV0_is_set ;jump if set
;* ... ;otherwise do something else
;
;***************************************************************************

;***** Specify Device
.device ATtiny13


;*****************************************************************************
; I/O Register Definitions
;*****************************************************************************

.equ SREG =$3F
.equ SPL =$3D
.equ GIMSK =$3B
.equ GICR =$3B ; for verification program compatibility
.equ GIFR =$3A
.equ TIMSK0 =$39
.equ TIFR0 =$38
.equ SPMCSR =$37
.equ OCR0A =$36
.equ MCUCR =$35
.equ MCUSR =$34
.equ TCCR0B =$33
.equ TCNT0 =$32
.equ OSCCAL =$31
.equ TCCR0A =$2F
.equ DWDR =$2E
.equ OCR0B =$29
.equ GTCCR =$28
.equ CLKPR =$26
.equ WDTCR =$21
.equ EEAR =$1E
.equ EEARL =$1E
.equ EEDR =$1D
.equ EECR =$1C
.equ PORTB =$18
.equ DDRB =$17
.equ PINB =$16
.equ PCMSK =$15
.equ DIDR0 =$14
.equ ACSR =$08
.equ ADMUX =$07
.equ ADCSRA =$06
.equ ADCH =$05
.equ ADCL =$04
.equ ADCSRB =$03




;*****************************************************************************
; Bit Definitions
;*****************************************************************************

.equ SP7 = 7
.equ SP6 = 6 ;SPL
.equ SP5 = 5
.equ SP4 = 4
.equ SP3 = 3
.equ SP2 = 2
.equ SP1 = 1
.equ SP0 = 0

.equ INT0 = 6 ;GIMSK
.equ PCIE = 5

.equ INTF0 = 6 ;GIFR
.equ PCIF = 5

.equ OCIE0B = 3 ;TIMSK
.equ OCIE0A = 2
.equ TOIE0 = 1

.equ OCF0B = 3 ;TIFR
.equ OCF0A = 2
.equ TOV0 = 1

.equ TSM = 7 ; GTCCR
.equ PSR10 = 0

.equ PUD = 6 ;MCUCR
.equ SE = 5
.equ SM1 = 4
.equ SM0 = 3
.equ ISC01 = 1
.equ ISC00 = 0

.equ WDRF = 3 ;MCUCSR
.equ BORF = 2
.equ EXTRF = 1
.equ PORF = 0

.equ CTPB = 4 ;SPMCSR
.equ RFLB = 3
.equ PGWRT = 2
.equ PGERS = 1
.equ SPMEN = 0

.equ COM0A1 = 7 ;TCCR0A
.equ COM0A0 = 6
.equ COM0B1 = 5
.equ COM0B0 = 4
.equ WGM01 = 1
.equ WGM00 = 0

.equ FOC0A = 7 ;TCCR0B
.equ FOC0B = 6
.equ WGM02 = 3
.equ CS02 = 2
.equ CS01 = 1
.equ CS00 = 0

.equ CLKPCE = 7 ;CLKPR
.equ CLKPS3 = 3
.equ CLKPS2 = 2
.equ CLKPS1 = 1
.equ CLKPS0 = 0

.equ WDTIF = 7 ;WDTCR
.equ WDTIE = 6
.equ WDP3 = 5
.equ WDCE = 4
.equ WDE = 3
.equ WDP2 = 2
.equ WDP1 = 1
.equ WDP0 = 0

.equ EEPM1 = 5 ;EECR
.equ EEPM0 = 4
.equ EERIE = 3
.equ EEMPE = 2
.equ EEPE = 1
.equ EERE = 0

; Kept for backward compatibility
.equ EEMWE = 2
.equ EEWE = 1



.equ PORTB5 = 5 ;PORTB
.equ PORTB4 = 4
.equ PORTB3 = 3
.equ PORTB2 = 2
.equ PORTB1 = 1
.equ PORTB0 = 0

.equ DDB5 = 5 ;DDRB
.equ DDB4 = 4
.equ DDB3 = 3
.equ DDB2 = 2
.equ DDB1 = 1
.equ DDB0 = 0

.equ PINB5 = 5 ;PINB
.equ PINB4 = 4
.equ PINB3 = 3
.equ PINB2 = 2
.equ PINB1 = 1
.equ PINB0 = 0

.equ PCINT5 = 5 ;PCMSK
.equ PCINT4 = 4
.equ PCINT3 = 3
.equ PCINT2 = 2
.equ PCINT1 = 1
.equ PCINT0 = 0

.equ ADC0D = 5 ;DIDR0
.equ ADC2D = 4
.equ ADC3D = 3
.equ ADC1D = 2
.equ AIN1D = 1
.equ AIN0D = 0

.equ ACD = 7 ;ACSR
.equ ACBG = 6
.equ AINBG = 6 ;kept for compatibility
.equ ACO = 5
.equ ACI = 4
.equ ACIE = 3
.equ ACIS1 = 1
.equ ACIS0 = 0


.equ REFS0 = 6 ;ADMUX
.equ ADLAR = 5
.equ MUX1 = 1
.equ MUX0 = 0

.equ ADEN = 7 ;ADCSRA
.equ ADSC = 6
.equ ADATE = 5
.equ ADIF = 4
.equ ADIE = 3
.equ ADPS2 = 2
.equ ADPS1 = 1
.equ ADPS0 = 0

.equ ACME = 6
.equ ADTS2 = 2
.equ ADTS1 = 1
.equ ADTS0 = 0


;*****************************************************************************
; CPU Register Declarations
;*****************************************************************************

.def XL = r26 ; X pointer low
.def XH = r27 ; X pointer high
.def YL = r28 ; Y pointer low
.def YH = r29 ; Y pointer high
.def ZL = r30 ; Z pointer low
.def ZH = r31 ; Z pointer high


;*****************************************************************************
; Data Memory Declarations
;*****************************************************************************

.equ RAMEND = 0x9f ; Highest internal data memory (SRAM) address.
;(64 Bytes RAM + IO + REG)
.equ EEPROMEND = 0x3f ; Highest EEPROM address.
;(64 Bytes)
.equ EEADRBITS = 6 ; no. of bits in EEPROM address register


;*****************************************************************************
; Program Memory Declarations
;*****************************************************************************

.equ FLASHEND = 0x1FF ; Highest program memory (flash) address
; (When addressed as 16 bit words)
; ( 512 words , 1k byte )


;**** Page Size ****
.equ PAGESIZE =16 ;number of WORDS in a Flash page
.equ EEPAGESIZE = 2 ;number of WORDS in an EEPROM page

;**** Interrupt Vectors ****
.equ INT0addr =$001 ;External Interrupt0
.equ PCINT0addr =$002 ;Pin Change Interrupt0
.equ TIM0_OVF0addr =$003 ;Overflow0 Interrupt
.equ EE_RDYaddr =$004 ;EEPROM write complete
.equ ANA_COMPaddr =$005 ;Analog Comparator Interrupt
.equ TIM0_COMPAaddr =$006 ;Timer/Counter0 Compare Match A
.equ TIM0_COMPBaddr =$007 ;Timer/Counter0 Compare Match B
.equ WDTaddr =$008 ;Watchdog Timeout
.equ ADCaddr =$009 ;ADC Conversion Complete Handle
 
Hab das Problem glaub ich gefunden. Und ehrlich gesagt sollte ich mich dafür schämen. Ich denke es lag an der Spannungsversorgung. Ich hab kein Netzgerät also hab ich Batterien genommen. Und zwar ne 9V Blockbatterie. Ich dachte so´n bißchen Spannung mehr schadet nix. 9V Batterie gegen ne 3V Batterie getauscht und das Ding läuft. Sollte mich schämen.
Tut mir leid das ich eure Zeit verschwendet habe. Wenn ich das nächste mal Probleme habe,werde ich alles nochmal genauer durchtesten eh ich mich an euch wende. Sorry, GreenArrow
 
Hallo,

ist nicht schlimm :D Du solltest aber schon mal in das Datenblatt sehen. Mich wundert, dass der ATtiny13 die 9V überlebt hat, ab 6V Betriebsspannung wird es kritisch (siehe absolute maximum ratings im Datenblatt)

Speed Grade
– ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V


Auch solltest du die maximale Strombelastbarkeit der Portpins beachten.
  • 20mA je Pin bei 5V VCC, 10mA je Pin bei 3V VCC (source oder sink current)
  • Summe source pins <= 60mA
  • Summe sink pins <= 60mA.
LEDs nur mit Vorwiderstand anschließen.

Viel Spass noch beim Basteln :D

Grüße,
Dirk
 
hmmm
*grübel* ok stimmt wenn ich so das von dir Lese so einen Fehler hatte ich auch schon das die Spannung zu hoch war und er dann wirr war...

@Dirk die Tinys & Megas der Älteren generation sind sehr robust ;) habe auch schon einen Mega128 auf 8V laufen lassen (ohne Probleme) bei 12V ging er dann in den Lachtup und hat sich selbst Entlötet (Zinn war flüssig) nach Akühlung war der Prozessor voll Funktionsfähig. (War in einem VDE Test was wir gemacht hatten) haben wir alle etwas komisch geschaut.. aber sie sind Robust ^^.

@GreenArrow und nichts dabei Denken, dabei Lernst du am meisten ;) (der Fehler passiert dir vermutlich nie mehr) ^^
 
... habe auch schon einen Mega128 auf 8V laufen lassen (ohne Probleme) bei 12V ging er dann in den Lachtup und hat sich selbst Entlötet (Zinn war flüssig) nach Akühlung war der Prozessor voll Funktionsfähig. (War in einem VDE Test was wir gemacht hatten) haben wir alle etwas komisch geschaut...

Hallo bluelight,

:D das sind ja komische Tests. Was wird denn da geprüft, die Entflammbarkeitsklasse? ;) Also allem was einmal ausserhalb der Spezifikationen betrieben wurde traue nicht mehr, da das Beuteil ja nachhaltig beschädigt sein kann. Das Gerät läuft dann noch einige Zeit lang und fällt irgendwann aus.

Was ich auch schon gesehen habe, ein Gerät mit einem ATmega128-16AU, läuft mit 16MHz mit unter 3V Betriebsspannung. Nach Spezifikation wird hier eine Betriebsspannung von mindestens 4,5V benötigt. Das Gerät habe ich hier. Es ist entweder ein Designfehler oder Absicht, ich tippe mal auf zweiteres :rolleyes:

Grüße,
Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)