Forum: Mikrocontroller und Digitale Elektronik TV-B-Gone mit Attiny2313


von adrian (Gast)


Angehängte Dateien:

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

von isputt (Gast)


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?

von Florian S. (der_picknicker)


Lesenswert?

Wortlaut des Fehlers?

von adrian (Gast)


Lesenswert?

Die meisten Codes vom sind eh 37,4xx Khz.
Deswegen scheint mir das relativ zu sein.

Die Fehlerbeschreibung in AVR Studio ist "../tvbgone.c:606: error: 
'TCCR0B' undeclared (first use in this function)"

von Florian S. (der_picknicker)


Angehängte Dateien:

Lesenswert?

Also ich hab das grad mal durch meinen GCC gejagt und alles ist 
einwandfrei. habs jetzt natürlich nich auf nen Controller geladen, aber 
compiled hat er es. Hab mal das hex-file angehängt. Ist für tiny2313 mit 
8Mhz (Makefile für Infos auch dabei)

von Florian S. (der_picknicker)


Lesenswert?

hast du irgendwas am Quellcode geändert? evtl Kommentare rausgelöscht 
udn dabei irgendwas anderes mit entfehrnt???

von adrian (Gast)


Lesenswert?

hmm...bei mir hat AVR Studi gemeckert. Aber ich werde deine Hex-File 
gleich mal verwenden.
Danke dafür :)

Nein ich habe nichts verändert. Alles so von der Seite kopiert.

von Florian S. (der_picknicker)


Lesenswert?

Im Makefile alles korrekt?
Wo hast du den code her? Seite?

von Walter (Gast)


Lesenswert?

>Im Makefile alles korrekt?
Nö, ich schätze der 2313 ist nicht definiert, sondern ein anderer 
Prozessor?

von adrian (Gast)


Angehängte Dateien:

Lesenswert?

Makefile? :)
Ne Makefile gabs nich wirklich, hab die Txt selbst erstellt von 
http://www.tvbgone.com/mfaire/tvbgone/tvbgone_na.c hab ich den Code

Hmm...meinen Phillips krieg ich damit nicht aus. Zumindest leuchtet die 
LED auf Pin 14 =)
Den Schaltplan hab ich etwas abgeändert (Anhang)

von Florian S. (der_picknicker)


Lesenswert?

Ja das war auch meine vermutung, deswegen frag ich.

von isputt (Gast)


Lesenswert?

In den 2313 passt es bei mir in allen Optimierungstufen mit AVRStudio 4 
nicht rein.

von I. E. (anfaenger69)


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...

von Florian S. (der_picknicker)


Lesenswert?

makefile ist eine datei, die du zum compilieren benötigst. dort werden 
u.A. grundlegende dinge wie prozessor-typ und taktfrequenz festgelegt. 
amch dich einfach mal ein bisschen schlau. google liefert genug infos. 
oder schau mal hier: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

von adrian (Gast)


Lesenswert?

Ich habe auch Windows 7 und da macht es Zicken :/
Genau! Das wird nicht farbig angezeigt.

Also dank deiner Hexfile leuchtet ja wenigsens die eine LED :)
Danke schonmal dafür

von I. E. (anfaenger69)


Lesenswert?

hmmm Moment mal, ich nehme alles zurück. Diene 
Neues_Textdokument__2_.txt lässt sich auf meinem Wohnzimmer PC trotzdem 
fehlerfrei kompilieren, obwohl die Register nicht farbig angezeigt 
werden... Es muss also an etwas anderem liegen...

von Florian S. (der_picknicker)


Lesenswert?

Also ich arbeite hier auch mit Win 7 Prof. und WinAVR 20100110...alles 
gut...vielleicht mal das neuere WinAVR ziehen?...auf den tiny2313 würde 
es laut compiler auch passen (93,2% memory usage)

von I. E. (anfaenger69)


Lesenswert?

Huch, bei mir sagt er 111,0% full :)
Aber 0 Errors :c)

von adrian (Gast)


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

von Florian S. (der_picknicker)


Lesenswert?

Hm...111%...komisch...sollte eig. nicht sein, laut beschreibung am 
anfang der datei ist das ganze ja für den tiny2313 gemacht

von I. E. (anfaenger69)


Lesenswert?

Was sagt denn das Oszi? Ist es ein normales signal, was da raus kommt?

von I. E. (anfaenger69)


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...

von adrian (Gast)


Lesenswert?

Hey habe leider kein Oszi hier, aber ich werd morgen die Schaltung auf 
alle möglichen Signale untersuchen. Hoffentlich funzt das =)

von adrian (Gast)


Lesenswert?

Mir fällt grade auf, die LED flackert.
Da rattert der µC vllt die Frequenzen durch.
Kann aus der Programmierung leider auch nicht erkennen was diese LED nun 
anzeigen SOLL :-D

von Florian S. (der_picknicker)


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 --------

von I. E. (anfaenger69)


Lesenswert?

Tja, ohne Oszi kannst Du nur raten...


Sie wird ein Standard RC Signal senden. Die erste Flanke vollte dann 9ms 
haben...


Cool, WinAVR 4.3.3 ist schon draussen, evtl haben sie was optimiert. 
Sollte ich einfach mal drüber spielen :c)

von Peter D. (peda)


Lesenswert?

Paßt bequem mit folgenden Schaltern:

--std=gnu99
-fno-inline-small-functions
-Wl,--relax
--combine -fwhole-program

1
4.3.2
2
   text    data     bss     dec     hex filename
3
   1922       0       0    1922     782 test.out


Peter

von Peter D. (peda)


Lesenswert?

Der neue WINAVR:
1
4.3.3
2
   text    data     bss     dec     hex filename
3
   1890       0       0    1890     762 test.out


Peter

von Adrian (Gast)


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 ;)

von Florian S. (der_picknicker)


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)?

von adrian (Gast)


Lesenswert?

Nee betreibe die Schaltung mit 5 V.
Falls es euch interessiert, das ist der Link zur Schaltung.
http://www.milanhille.com/bilder/tvbgone/tvbgone.png

von adrian (Gast)


Angehängte Dateien:

Lesenswert?

Sooo, ich habe den Code mal etwas abgeändert.
Nur mein Compiler macht wieder zicken.
Kann mir Jemand die Hex mal hochladen von meinem Code?

Vllt läufts ja dann =)

mfg

von Klaus2 (Gast)


Lesenswert?

...wie wärs mit compiler-fehlersuche? :) das froum ist ja kein 
onlinecompiler, oder? :)

Klaus.

von adrian (Gast)


Lesenswert?

Ja das weiß ich :) Hab ich weiter Oben schon alles beschrieben.
Er gibt in meinem AVR Studio Fehlermeldungen raus und bei allen Anderen 
komischerweise nicht...

Deswegen frage ich ja ;)

von Peter D. (peda)


Lesenswert?

Da würde ich als Compiler auch rumzicken.

Ein Compiler will immmer ein *.c und kein *.txt.


Peter

von adrian (Gast)


Lesenswert?

C, kein ASM etc? ;)

Nein das weiß ich, aber man kann ja den Code einfach in den Compiler 
kopieren, ne ;)

von Sven P. (Gast)


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.

von Peter D. (peda)


Lesenswert?

adrian schrieb:
> Nein das weiß ich, aber man kann ja den Code einfach in den Compiler
> kopieren, ne ;)

Hä ???

Ich weiß ja nicht, womit Du kompilierst.

Aber ich benutze den WINAVR und der will mindestens ein File haben und 
das muß *.c heißen.


Peter

von öftersda (Gast)


Lesenswert?

mal kurz gefragt an der interresanten Diskuson vorbei

hat einer einen für die Brd funktionierenden hex file den er posten kann

für atiny2113


gruß

von petra_2 (Gast)


Lesenswert?

mich würde das HEX für den 2313 auch interssieren ...

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.