Bootloader von PeDa für Attiny45 über Infrarot

OP #2475216
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.