TV-B-Gone mit Attiny2313

Gast #1552038
Lesenswert?

Hi Leute,
es geht darum das ich TV-B-Gone mit einem Attiny2313 aufbauen will.
Hardwaremäßig ist alles fertig, nur bei der Programmierung haperts 
gerade.
Anbei der Quellcode von TV-B-Gone.
AVR Studio gibt mir beim "compilen" bei der Textzeile n Error:

 // turn off output to IR emitter on 0C0A (PB2, pin 14) for offTime
  TCCR0B &= 0b11111000;  // CS02:CS00=000 to stop Timer0
  TCCR0A &= 0b00111111;  // COM0A1:0=00 to disconnect 0OC0A from PB2 
(pin 14)
  PORTB &= 0b11111011;   // turn off IR emitter on 0C0A (PB2, pin 14) in 
case it was High
  delay_ten_us(pgm_read_word(&powerTab[index].offTime));

Bei "TCCR0B &= 0b11111000" gibt es den ersten Error.
Ist da irgendein Fehler drin?


mfg Adrian
Angehängte Dateien:
Gast #1552048
Lesenswert?

>This version of the firmware has the most popular 7 POWER codes for North 
>America
>(which is how many codes fit into the ATtiny2313 2KB flash memory).

Was willst Du damit, da geht kein einziger Fernseher hier aus?
#1552120
Lesenswert?

Das Problem kenne ich. Das gleiche Problem wird bei meinem Wohnzimmer 
Rechner auch angezeicht. Da habe ich Windows 7 mit AVTR Studio 4.18 und 
WinAVR-20090313. Es werden alle Portnamen nicht erkannt. Auch DDRA usw 
werden nicht erkannt. Im Code wird TCCR0B auch nicht farbig angezeigt, 
richtig?

Ironischer Weise funktioniert es jedoch auf meinem Werkstatt-PC mit 
Windows XP SP3, und den gleichen AVR Studio- und WinAVR Versionen. 
Entweder liegts an Windows 7, oder irgendwas ist bei der Installation 
schief gegangen...
Gast #1552140
Lesenswert?

Oh gehts jetz doch?
Ja vllt sollte ich mir die neuere Version mal ziehen.

Also ich hoffe ja jetz eigentlich das es funktioniert. Die LED auf Pin 
14 funktioniert jetz und wenn ich den Taster betätige geht sie auch 
aus...was aber noch nich UMBEDINGT weiß heißen kann. Weil der Taster ist 
ja auf GND + Reset gelegt. Bei meinem Phillips hier funktioniert es 
zumindest nicht. Muss ich morgen wohl testweise mal Saturn raiden ;) :D
#1552151
Lesenswert?

Yo:

Build started 12.1.2010 at 22:01:10
avr-gcc  -mmcu=attiny2313 -Wall -gdwarf-2 -std=gnu99  -DF_CPU=1000000UL 
-Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD 
-MP -MT aaa.o -MF dep/aaa.o.d  -c  ../aaa.c
avr-gcc -mmcu=attiny2313 -Wl,-Map=aaa.map aaa.o     -o aaa.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  aaa.elf 
aaa.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" 
--change-section-lma .eeprom=0 --no-change-warnings -O ihex aaa.elf 
aaa.eep || exit 0
avr-objdump -h -S aaa.elf > aaa.lss

AVR Memory Usage
----------------
Device: attiny2313

Program:    2274 bytes (111.0% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...
#1552164
Lesenswert?

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=8000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF 
.dep/main.o.d main.c -o ma

Linking: main.elf
avr-gcc -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=8000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -MMD -MP -MF 
.dep/main.elf.d main.o --output m

Creating load file for Flash: main.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock main.elf main.hex

Creating load file for EEPROM: main.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
        --change-section-lma .eeprom=0 --no-change-warnings -O ihex 
main.elf main.eep || exit 0

Creating Extended Listing: main.lss
avr-objdump -h -S -z main.elf > main.lss

Creating Symbol Table: main.sym
avr-nm -n main.elf > main.sym

Size after:
AVR Memory Usage
----------------
Device: attiny2313

Program:    1908 bytes (93.2% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)



-------- end --------
Gast #1552829
Lesenswert?

Habe vorhin gemerkt, das die "Anzeige-LED" auf dem Port vom Transistor 
war und umgekehrt.
Das kuriose flackern der LED war also warscheinlich das Aussenden der 
Frequenzen was man sehen konnte.
Habs vor ein paar Minuten umgelötet und getestet...nix passiert...
Außerdem wurd der Transistor VERDAMMT HEISS! Liegt wohl an dem zu gering 
bemessenen Vorwiderstand und dem (nicht vorhandenen) Vorwiderstand der 
IR-LED.

Werde die Schaltung nachher nochmal aufm Steckbrett aufbauen. Schätze 
als Vorwiderstand für den Transistor ca n K nehmen und die Dioden mit 
470. Werde auch VERSUCHEN die EU-Codes einzuprogrammieren, da jetz noch 
die Ami-Codes drin sind.
Falls ich das nicht hinkriege muss mir hier vllt jemand helfen ;)
#1553156
Lesenswert?

IR-LED braucht nicht unbedingt nen Vorwiederstand (gehe davon aus das du 
das ganze mit 3 V betreibst). Aber den Transistoren solltest du 
unbedingt einen viel größeren Wiederstand gönnen. so ca. das 80fache. 
versuchs mal mit 10K.
Wieso nimmst du nicht die original-schaltung (du sagst ja du hast sie 
abgeändert, wo hast du die überhaupt her)?
Gast #1557464
Lesenswert?

1
// This function delays the specified number of 10 microseconds
2
void delay_ten_us(unsigned long int us) {
3
  unsigned long int timer;
4
  const unsigned long int DelayCount=6;  // this value was determined by trial and error
5

6
  while (us != 0) {
7
    // Toggling PD0 is done here to force the compiler to do this loop, rather than optimize it away
8
    for (timer=0; timer <= DelayCount; timer++) {PIND |= 0b0000001;};
9
    us--;
10
  }
11
}

Das is einfach nur Humbug. Der Kommentar ist falsch, der Ansatz noch 
falscher.

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