Der Atmel spinnt!

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 20 2 2025  10:04:09      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Der Atmel spinnt!

    







BID = 101933

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul
 

  


Hat jemand dafür eine Erklärung?

Ich habe für den At90S8515 ein Programm geschrieben.
Das Programm funtioniert!!!!!

Mein Problem:
Wenn ich Spannung anlege, macht der irgendwelchen Mist! auch ein Reset zeigt keine Wirkung!!!!!!

Aber manchmal ist alles ok wenn die Betriebsspannung angelegt wird! Auch das Reset funktioniert dann ohne Probleme.

Hab keine Ahnung wo das Problem liegt. Betriebsspannung ist OK, µC und Quarz wurde schon gewechselt, ohne Erfolg!

Hat jemand eine Idee

BID = 101934

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Ein Stray-Interrupt vielleicht ?

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 101935

Jornbyte

Moderator



Beiträge: 7211

Na da Poste mal Schaltung und Proggi. Alles andere ist suchen im Rauch.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 101936

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul

Frage zum Stray-Interrupt:

Ich hatte Probiert, alles was im µC an Interrups, Timer, Watchdog.... nach dem Start zurückzusetzen! Ich denke, das ich alles erwischt hatte. Brachte aber keinen Erfolg

Oder funktioniert das nicht?

BID = 101982

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen


Zitat :
Oder funktioniert das nicht?


Anscheinend ja nicht.

Aber wir sind alle keine Hellseher. Ohne Schaltplan und Sourcecode kann man da nichts sagen. Punkt.

BID = 102434

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul

Zur Erklärung:

Ich hatte im Urlaub angefangen das Programm zu schreiben!
Zu Hause trat dann der von mir beschriebene Fehler ein.
Also hab ich das gesamte Programm zerpflückt, weil ich zuerst auch an einen Programmfehler gedacht habe!
Wundert euch quasi nicht über den Sinn des Programms (vom Orginalprogramm ist nur noch die Einleitung übrig geblieben)!
Wie ihr sehen könnt, ist ein Test mit den Pins B6 & B7 zugefügt wurden.
Und selbst diese kleine Bearbeitung funtioniert nur bei jedem 2. oder 3. einschalten.
Meistens flackern die Ausgänge viel schneller als programmiert.
Und die sogenannte Reset-Funktion führt zu keinerlei Veränderungen.
Ich wette ihr werdet keinen Fehler finden!!!!, oder?
Blos woher kommt dann dieses Fehlverhalten des µC?
Schaltung gibt's noch keine! Alles steckt auf einem Experimentierboard.
Das sind der µC AT90S8515, Quarz 8MHz (mit 4MHz auch probiert), einen Treiber 4050, 2 Widerstände und 2 Led's!


.NOLIST
.INCLUDE "C:\8515def.inc"
.LIST

.ESEG ;EEPROM
.DB 20+96, 26+96, 30+96, 36+96, 43+96
.DB 0, 0, 0, 0, 0
.DB 0, 0, 0, 0, 0
.DB 0, 0, 0, 0, 0

;0b3xFunktion,5xTimer (Funk: 000=aus;001=dunkel;010=hell;100=an)
.DB 0x03,0x82,0x04,0x89,0x04,0x9F
.DB 0x05,0x8B,0x05,0x9F
.DB 0x0A,0x82,0x01,0x81,0x11,0x9F
.DB 0x11,0x82,0x8B,0x03,0x82,0x03,0x9F
.DB 0x18,0x9F

.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF ;Füllmaterial
.DB 0xFF ;Füllmaterial

.DB 96 ;Zufallsgenerator
.DB 1 ;Steuerung Hell/Dunkel

.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF,0xFFFF,0xFFFF ;Füllmaterial
.DW 0xFFFF,0xFFFF ;Füllmaterial

.DB 6,0,6,0,6,0,6,0,6,0 ;Taster
.DB 0,0,0,0,0 ;SpeicherpositionA1
.DB 0,0,0,0,0 ;SpeicherpositionB1
.DB 0,0,0,0,0 ;SpeicherpositionC1
.DB 0,0,0,0,0 ;SpeicherpositionD1
.DB 0,0,0,0,0 ;SpeicherpositionE1
.DB 0,0,0,0,0 ;DatenA1
.DB 0,0,0,0,0 ;DatenB1
.DB 0,0,0,0,0 ;DatenC1
.DB 0,0,0,0,0 ;DatenD1
.DB 0,0,0,0,0 ;DatenE1
.DB 31,31,31,31,31 ;TimerA1
.DB 31,31,31,31,31 ;TimerB1
.DB 31,31,31,31,31 ;TimerC1
.DB 31,31,31,31,31 ;TimerD1
.DB 31,31,31,31,31 ;TimerE1
.DB 50 ;Timer Bremse
.DB 1 ;Timer Hell/Dunkel
.CSEG

.EQU Zufall = 210 ;Zufallsgenerator
.EQU T1 = 211 ;Timer Ausgang Hell/Dunkel
;ZPointer(high) = 1
.EQU Taster = 0 ;Taster
.EQU SA1 = 10 ;SpeicherpositionA1
.EQU SB1 = 15 ;SpeicherpositionB1
.EQU SC1 = 20 ;SpeicherpositionC1
.EQU SD1 = 25 ;SpeicherpositionD1
.EQU SE1 = 30 ;SpeicherpositionE1
.EQU DA1 = 35 ;DatenA1
.EQU DB1 = 40 ;DatenB1
.EQU DC1 = 45 ;DatenC1
.EQU DD1 = 50 ;DatenD1
.EQU DE1 = 55 ;DatenE1
.EQU TA1 = 60 ;TimerA1
.EQU TB1 = 65 ;TimerB1
.EQU TC1 = 70 ;TimerC1
.EQU TD1 = 75 ;TimerD1
.EQU TE1 = 80 ;TimerE1
.EQU TA1_E1 = 85 ;Timer (Bremse = x100)

;***** Vergabe von Namen für Register *****
.def Temp1 = R16
.def Temp2 = R17
.def Temp3 = R18
.def Temp4 = R19
.def Data = R20
.def XPointer= R26
.def XPoint = R27
.def YPointer= R28
.def YPoint = R29
.def ZPointer= R30
.def ZPoint = R31

Neustart:
;***** Vorbereiten Stack *****
LDI Temp1,high(ramend)
OUT SPH,Temp1
LDI Temp1,low(ramend)
OUT SPL,Temp1


;***** Vorbereiten der PIN's *****
LDI Temp1,0b11100000
OUT DDRA,Temp1
LDI Temp1,0b11111110
OUT DDRB,Temp1
LDI Temp1,0b11111111
OUT PORTA,Temp1
OUT PORTB,Temp1
OUT DDRC,Temp1
OUT PORTC,Temp1
OUT DDRD,Temp1
OUT PORTD,Temp1


;***** Vorbereiten der Register *****
CLR R16 ;Temporär1
CLR R17 ;Temporär2
CLR R18 ;Temporär3
CLR R19 ;Temporär4
CLR R20 ;Zähler Daten
CLR R28 ;YPointer
CLR R29 ;YPointer
CLR R30 ;ZPointer
CLR R31 ;ZPointer


;***** Vorprogramm ****
;V01*** EEPROM auslesen ***
CLR Temp1
LDI ZPointer,0b01100000
CLR ZPoint
V01_1:
SBIS EECR,0
SBIC EECR,1
RJMP V01_1
OUT EEARL,Temp1
SBI EECR,0
IN Temp2,EEDR
ST Z+,Temp2
INC Temp1
CPI Temp1,0xFF
BRNE V01_1

;V02*** SRAM kontrollieren ***
CLR Temp1
LDI ZPointer,0b01100000
CLR ZPoint
V02_1:
SBIS EECR,0
SBIC EECR,1
RJMP V02_1
OUT EEARL,Temp1
SBI EECR,0
IN Temp2,EEDR
LD Temp3,Z+
CP Temp2,Temp3
BREQ V02_2
RJMP Neustart
V02_2:
INC Temp1
CPI Temp1,0xFF
BRNE V02_1

;V03*** Voreinstellungen Timer ***
LDI Temp1,3 ;Vorteiler Timer
OUT TCCR0,Temp1 ;1 Durchlauf = 2ms (500Hz)
CBI PORTA,5 ;Betriebsbereit anzeigen

;***** Hauptprogramm *****
Hauptprogramm:

;Timer
IN Temp1,TIFR ;interner Timer fertig (500Hz = 2ms)
SBRS Temp1,1
RJMP S21_1
SBI PORTB,0
LDI Temp1,0b00000010
OUT TIFR,Temp1 ;internen Timer zurücksetzen
LDI ZPointer,TA1_E1 ;ZPointer vorbereiten
LD Temp1,Z
DEC Temp1
ST Z+,Temp1
S21_1:



; Timerverzögerung
LDI YPointer,T1
LD Temp1,Y
LDI ZPointer,TA1_E1
LD Temp2,Z

SBRC Temp1,0
CPSE Temp2,XPoint
RJMP S23_1
SBR Temp1,2
CBR Temp1,1
SBI PORTB,7
CBI PORTB,6
LDI Temp2,200
ST Z,Temp2
S23_1:

SBRC Temp1,1
CPSE Temp2,XPoint
RJMP S23_2
SBR Temp1,1
CBR Temp1,2
CBI PORTB,7
SBI PORTB,6
LDI Temp2,200
ST Z,Temp2
S23_2:

ST Y,Temp1

RJMP Hauptprogramm

BID = 102441

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

Klingt stark nach Problemen mit der Versorgungsspannung. Kontrolliere mal, ob die Spannung nach dem Einschalten stabil vorhanden ist, bzw. wie lange sie braucht, um auf den Maximalwert (ich denke mal 5V) zu kommen und ob nicht irgendwelche Schwankungen vorhanden sind.
Fehler hier sind oftmals fehlende Stützkondensatorem in der Nähe der Spannungspins des IC's.
Normalerweise gibt man dem IC direkt an den Pins zwischen Masse und Vcc nen 100nF-Kondensator zum abblocken Hochfrequenter Störeinflüsse und dazu parallel nen 10µF zum puffern der Spannung.

Kann natürlich auch sein, dass der Reset nicht richtig ausgelöst wird, weil die Spannung zu langsam hochkommt.
Hier kann ein externer Resetbaustein abhilfe schaffen.

_________________
Wie immer gilt: Erst googeln, dann fragen!

(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)

BID = 102581

Condor-x

Gelegenheitsposter



Beiträge: 56

hallo

dein AVR wiß nicht wohinn er nach einem reset soll !

schau dir mal in PDF file des 8515 seite 20 an

da sind die interupt Definitionen beschriben ...........



BID = 102590

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul


Zitat :
Condor-x hat am 16 Sep 2004 16:31 geschrieben :

hallo

dein AVR wiß nicht wohinn er nach einem reset soll !

schau dir mal in PDF file des 8515 seite 20 an

da sind die interupt Definitionen beschriben ...........





Wenn du damit:

.ORG 0x00
RJMP xxx

meinst, das hab ich auch schon Probiert, ohne Erfolg!

BID = 102598

Condor-x

Gelegenheitsposter



Beiträge: 56

Ja auch

und timer interupt und und und schau dir seite 20 an...

BID = 102619

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

Richtig. Hab das Programm bis jetzt gar nicht angeschaut. Peinlich.

Im Programm sollte am Anfang etwa sowas stehen:

$000 rjmp RESET ; Reset Handler
$001 rjmp EXT_INT0 ; IRQ0 Handler
$002 rjmp EXT_INT1 ; IRQ1 Handler
$003 rjmp TIM1_CAPT ; Timer1 Capture Handler
$004 rjmp TIM1_COMPA ; Timer1 Compare A Handler
$005 rjmp TIM1_COMPB ; Timer1 Compare B Handler
$006 rjmp TIM1_OVF ; Timer1 Overflow Handler
$007 rjmp TIM0_OVF ; Timer0 Overflow Handler
$008 rjmp SPI_STC ; SPI Transfer Complete Handler
$009 rjmp USART_RXC ; USART RX Complete Handler
$00a rjmp USART_UDRE ; UDR0 Empty Handler
$00b rjmp USART_TXC ; USART TX Complete Handler
$00c rjmp ANA_COMP ; Analog Comparator Handler
$00d rjmp EXT_INT2 ; IRQ2 Handler
$00e rjmp TIM0_COMP ; Timer0 Compare Handler
$00f rjmp EE_RDY ; EEPROM Ready Handler
$010 rjmp SPM_RDY ; Store Program memory Ready Handler

$011 RESET: ldi r16,high(RAMEND); Main program start
$012 out SPH,r16 ; Set Stack Pointer to top of RAM
$013 ldi r16,low(RAMEND)
$014 out SPL,r16
$015 sei ; Enable

ACHTUNG: Das ist vom Mega8515, der hat ein paar Interruptsources mehr. Nur wenn du sowas in deinem Programm stehen hast, weiß das Programm auch, wo es bei einem Interrupt hinspringen muß.

_________________
Wie immer gilt: Erst googeln, dann fragen!

(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)

BID = 102867

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul

Ach so?

Bis jetzt hab ich immer angenommen, das man die Interrupte nur dann aufführen muss, wenn sie verwendet werden. Da ich keinen verwende, fängt mein Programm ja sowieso bei 0 an. Dort wo er bei einem Reset hinspringt. Was meiner Meinung nach der einzigste Interrupt ist, der ausgeführt wird!

BID = 103296

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Ja, RaPe, da hast Du recht. So lange Du keinen der Interrupts verwendest kannst Du ruhig ohne .org oder sonstwas mit dem Programm anfangen, der erste Befehl steht dann sowieso an Adresse 0, und die anderen Interrupt vectoren dürfen ruhig auch für normalem code benutzt werden, wenn dort nie ein Interrupt hinspringt.

BID = 103330

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

Dann verstehe ich aber nicht, warum du einen Timer benutzt.

_________________
Wie immer gilt: Erst googeln, dann fragen!

(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)

BID = 103393

RaPe

Gelegenheitsposter



Beiträge: 56
Wohnort: Radebeul


Zitat :
ERDI-Soft hat am 18 Sep 2004 19:38 geschrieben :

Dann verstehe ich aber nicht, warum du einen Timer benutzt.



Wie ich geschrieben hatte, ist vom orginal Programm nur noch die Einleitung übrig geblieben. (siehe oben)
Für das richtige Programm benötige ich ein halwegs genauen Takt. Dort kommt es nicht auf µs an. Ich arbeite dort nur im Bereich von etwa 20ms.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 24 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 183090783   Heute : 2410    Gestern : 7954    Online : 194        20.2.2025    10:04
15 Besucher in den letzten 60 Sekunden        alle 4.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0538730621338