Forum: Mikrocontroller und Digitale Elektronik Bootloader von PeDa für Attiny45 über Infrarot


von Electric S. (electricsheep)


Lesenswert?

Hallo an alle,
im Moment versuche ich, den Bootloader von Peter Dannegger aus diesem 
Beitrag (Beitrag "Re: ATtiny45 Bootloader") mit 
Infrarotverbindung zu verwenden.
Am µC sind eine IR-Diode (vom Pin nach Masse) und einen IR-Receiver (SFH 
5110-36) angeschlossen (beide funktionieren ohne Bootloader gut), am PC 
hängt der USB-IR-Adapter vom Asuro.
Um ein 36khz-Infrarotsignal zu erzeugen, habe ich in die TINYLOAD.INC 
einen 72khz-Timer-Interrupt programmiert, der die Richtung des Sendepins 
toggeln soll (Takt sind 8Mhz):
1
.include "tinyload.h"
2
.listmac
3
.list
4
.org  0x0000
5
  #ifdef  USE_JMP
6
  jmp  init
7
  #else
8
  rjmp  init
9
  #endif
10
11
.org OC0Aaddr
12
TIMER0_COMPA_vect:
13
  in     R16, STX_DDR   ; Daten lesen
14
  ldi    R17, (1<<STX)  ; Bitmaske laden, hier Bit #2
15
  eor    R16, R17       ; Exklusiv ODER
16
  out    STX_DDR, R16   ; Daten zurückschreiben 
17
  reti
18
19
.org  BootStart
20
init:
21
  cli
22
  ldi  a0, low (RamEnd)
23
  out  SPL, a0
24
#ifdef USE_SPH
25
  ldi  a0, high(RamEnd)
26
  out  SPH, a0
27
#endif
28
  clr  zerol
29
  clr  zeroh
30
  clr  Flags
31
  sbi  SRX_PORT, SRX
32
  sbi  STX_PORT, STX
33
  sbi  STX_DDR, STX
34
 
35
  in  r16, TCCR0A       ;freies register benutzen
36
    ori r16, (1<<WGM01)   ;rein ins register, verändern und raus
37
    out TCCR0A, r16
38
  
39
  in  r16, TCCR0B       ;freies register benutzen
40
    ori r16, (1<<CS00)   ;rein ins register, verändern und raus
41
    out TCCR0B, r16
42
  
43
  ldi  r16, 0x6E
44
    out OCR0A, r16
45
  
46
  in  r16, TIMSK       ;freies register benutzen
47
    ori r16, (1<<OCIE0A)   ;rein ins register, verändern und raus
48
    out TIMSK, r16
49
  sei
50
51
;-------------------------------------------------------------------------
52
.include "abaud.inc"
53
;...
54
;... usw.
55
;...

Die Infrarotdiode leuchtet dauerhaft (ob mit 36khz weiß ich nicht, am PC 
kommt kein Signal an), ein Programm kann ich über den Bootloader nicht 
übertragen. ("Waiting for device...")

Hab ich soweit richtig programmiert? Woran kann es liegen, dass die 
Übertragung nicht funktioniert? Muss evtl. noch ein Signal invertiert 
werden?

Viele Grüße,
Electricsheep

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.