PullUp verzögert?

OP #4962456
Lesenswert?

Hallo Leute,

ich habe einen Tiny13A dem ich via Knopfdruck einen Ausgang schalten 
möchte.
Hier der Code:
1
;-----------------------------------
2
;- Interrupts                      -
3
;-----------------------------------
4
    rjmp  RESET           ; Reset Handler
5
    rjmp  PPM             ; IRQ0 Handler
6
    RETI                 ; PCINT0 Handler
7
    RETI                 ; Timer0 Overflow Handler
8
    RETI                 ; EEPROM Ready Handler
9
    RETI                 ; Analog Comparator Handler
10
    RETI                 ; Timer0 CompareA Handler
11
    RETI                 ; Timer0 CompareB Handler
12
    RETI                 ; Watchdog Interrupt Handler
13
    RETI                 ; ADC Conversion Handler
14

15
;-----------------------------------
16
;- Reset Interrupts                -
17
;-----------------------------------
18
RESET:
19
    SBIC EECR,EEPE       ; Prüfe Zugriff auf EEPROM
20
    RJMP RESET         ; Versuh nochmal, wenn nicht bereit
21
    LDI R24, 0x00        ; Definiere Adresse
22
    OUT EEARL,R24        ; Setze Adresse
23
    SBI EECR,EERE        ; Definiere Leden
24
    IN  R16,EEDR         ; Lese Adresse in Register
25
    CPI R16, 0xFF        ; Vergleiche Werte
26
    BREQ JumpOsccal
27
    OUT OSCCAL, R16      ; Setze Calibrierung
28
    RJMP JumpSave
29

30
JumpOsccal:
31
   SBIC EECR,EEPE        ; Ist EEPROM bereit
32
   RJMP JumpOsccal       ; Wenn nein, dann wiederholen
33
   LDI R24, 0x00         ; Definiere Adresse 0
34
   OUT EEARL, R24        ; Setzte Adresse
35
   IN R16, OSCCAL
36
   OUT EEDR, R16         ; Übergebe Wert
37
   SBI EECR,EEMPE        ; Aktiviere Schreiben
38
   SBI EECR,EEPE         ; Schreibe
39
JumpSave:
40
    LDI R16, low (RAMEND)
41
    OUT SPL, R16         ; Setzt sen StackPointer auf Anfang
42
    LDI R16, 0b00011000
43
    OUT DDRB, R16        ; Setzt Pin6->Input, Pin2->Output, Pin3->Output
44
    LDI R16, 0b00000001
45
    OUT PORTB, R16       ; PullUp
46
    LDI XH, 0x00
47
    LDI XL, 0x00
48
    LDI R16, 0b01000000
49
    OUT GIMSK, R16       ; Aktiviert Interupt INT0
50
    LDI R16, 0b00000011
51
    OUT MCUCR, R16       ; Interupt nur bei Steigender Flanke & Sleep erlauben
52
    SEI
53

54
;-----------------------------------
55
;- Main-Loop                       -
56
;-----------------------------------
57
Loop:
58
    ;IN R20, PORTB
59
    ;ANDI R20, 0x01
60
    ;BREQ Loop
61
    IN R20, PINB           ; Lese Pins in R20
62
    ANDI R20, 0b00000001   ; Isoliere PB0
63
    BREQ InitialiseCal     ; Calibriere
64
    CBI PORTB, 0x03
65
    CBI PORTB, 0x04
66
    rjmp Loop
67

68
;-----------------------------------
69
; Int0 Interrupt (PPM Interpreter) -
70
;-----------------------------------
71
PPM:
72
reti
73

74
;----------------------------------
75
;- Calibrierung                   -
76
;----------------------------------
77
InitialiseCal:
78
    CLI                    ; Interrupts abschalten
79

80
    IN R19, PINB           ; Lese Pins
81
    SBI PORTB, 0x03
82
    CBI PORTB, 0x04
83
    SEI
84
    rjmp Loop

Wenn ich auf VCC jetzt saft gebe, dann Blizt die LED an PB3 ganz kurz 
auf.
Wenn ich in dem Loop die 3 auskommentierten Zeilen wieder aktiviere, 
dann hab ich das nicht. Braucht der PullUp ein wenig Zeit, bis der 
richtig arbeitet?
#4962525
Lesenswert?

Armin A. schrieb:
> Braucht der PullUp ein wenig Zeit, bis der
> richtig arbeitet?
Wenn du einen kleinen Entprellkondensator an deinem Pin hast, muss der 
erst über den Pullup geladen werden. Folglich kann es sein, dass du 
während des ersten Schleifendurchlaufs ein Low liest. Völlig normal, 
sucht man sich aber erstmal n Wolf bis man diese Erkenntnis hat ;)
#4962610
Lesenswert?

Armin A. schrieb:
> Hm... ich versteh nur bahnhof.

OK dann sollte man besser nichts an Ports anschalten,

Armin A. schrieb:
> wenn ich unterschiedliche
> sachen an dem Port schalte?

Armin A. schrieb:
> Tau?
> Heist dass, dass diese Zeit variieren kann

klar variiert sie, woher sonst kommen die schönen Errungenschaften wie 
Schallgeschwindigkeit in verschiedenen Medien oder Laufzeiten im Kabel.

Warum gibt es HF oder NF Filter, wie funktioniert ein EQ.
Was ist Frequenz?
Was ist Frequenzabhängigkeit?
#4962756
Lesenswert?

Joachim B. schrieb:
> 1. kann ich die Zeiten und Ströme bestimmen
Vom Anwendungsfall abhängig. Für einen Taster genügt der interne, für 
einen Incrementalgaber nehme ich auch externe

> 2. kann der nicht "aus Versehen" von Software abgeschaltet werden.
Solange man sich nicht im Weltraum befindet sollte "aus Versehen" 
sowieso nichts abschalten ;)

Joachim B. schrieb:
> 3. begrenzt der die Ströme nach Bedarf
nochmal 1?

Wenn du Stückzahlen produzierst und es auch jeden 0,1Ct ankommt freut 
man sich über interne Pull-ups, im Bastellkeller spielt sowas meist nur 
layouttechnisch eine Geige.
#4963507
Lesenswert?

Ingo L. schrieb:
> Joachim B. schrieb:
>> 1. kann ich die Zeiten und Ströme bestimmen
> Vom Anwendungsfall abhängig.

klar und mit langen Leitungen ist manchmal mehr Strom uder weniger R 
nötig.

>> 2. kann der nicht "aus Versehen" von Software abgeschaltet werden.
> Solange man sich nicht im Weltraum befindet sollte "aus Versehen"
> sowieso nichts abschalten ;)

Es gibt hier jede Menge Hobbyprogger die schon mal den internen pullup 
vergessen bei C&P oder der "aus Versehen" wegoptimieren.

> Wenn du Stückzahlen produzierst und es auch jeden 0,1Ct ankommt freut
> man sich über interne Pull-ups, im Bastellkeller spielt sowas meist nur
> layouttechnisch eine Geige.

Ich habe kein Verständnis wenn bei 1000,-€ und mehr geknausert wird, 
mein smartTV hat zu wenig RAM mediathek schauen geht nicht.

Auch hochpreisige Geräte sind vor unschöner Knauserei nicht geschützt, 
schlecht für den Kunden gut für die Boni.....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren