Problem mit Timer beim TINY13

OP #3894354
Lesenswert?

Hallo

Ich wollte eigentlich nur schnell ein Programm für den TINY13 anpassen, 
hänge aber jetzt schon den ganzen Abend an einem Problem fest.

Ich kann machen was ich will, ich bekomme für die Registereinstellungen 
stets die Fehlermeldung "Symbol 'XXXXX' could not be resolved'. Wobei 
XXXXX  für die in der Anlage unterstrichenen Register steht. Es ist, als 
könnte der Compiler z.B. nichts mit der Bezeichnung "TCCR0A" usw. 
anfangen. Ich habe aber die Namen mehrmals mit dem Datenblatt 
verglichen. Die gibt es doch alle für den Timer 0 des TINY13. Ich weiß 
einfach nicht mehr weiter.

Die Einstellungen habe ich aus einem Programm für einen ATMEGA 8 
übernommen. Dort gibt es keine Probleme. Allerdings verwende ich dort 
den Timer 1. Aber wie gesagt, die Register stimmen doch weitgehend 
überein.

Vielleicht bin ich mittlerweile auch nur Betriebsblind geworden und 
übersehe etwas offensichtliches.

Vielleicht sieht ja jemand den Fehler. Für etwas Hilfe wäre ich sehr 
dankbar.

Gruß
Jenny
Angehängte Dateien:
#3894510
Lesenswert?

Probier mal in deinen Projekten KEINE Leerzeichen zu verwenden.
Also nicht "kleiner Bagger" sondern "KleinerBagger".
Ich weiss nich ob das an Eclipse und plugin liegt oder generell am
Aufruf von avr-gcc....
Das hat mich Tage gekostet :)
Und ja es gibt OCR0A beim Atiny13. Zumindest bei mir.

Wenn du Projekte neu anlegst kommt es bei mir schonmal öfter vor das die 
Fehlerkorrektur für den eingestellten µc nicht richtig funktioniert.
Dann musst du den Prozessor wechseln, abspeichern. Wieder auf den 
richtigen Prozessor wechseln und nochmals abspeichern. Dann übernimmt
die Fehlerkorrektur den richtigen Prozessor wenns ums überprüfen der
Register etc. #defines geht.

Das hat aber nicht mit dem kompilieren zu tun, den das funktioniert 
unabhängig davon.

Wir sehen hier bei dir also zwei unterschiedliche Fehler die leider nix 
miteinander zu tun haben. Es gibt das Register beim Tiny13 ;)


Bei diesem Code mit Projektnamen "kleiner Bagger"
kommt dein Fehler raus.
1
#include <avr/io.h>
2
#include <inttypes.h>
3
#include <avr/interrupt.h>
4
#include <avr/sleep.h>
5
#include <util/delay.h>
6

7
int main() {
8
  OCR0A=0;
9
  _delay_ms(100);
10
}

09:41:42 **** Build of configuration Debug for project kleiner Bagger 
****
make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums 
-ffunction-sections -fdata-sections -std=gnu99 -funsigned-char 
-funsigned-bitfields -mmcu=attiny13 -DF_CPU=1000000UL -MMD -MP 
-MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
In file included from ../main.c:5:0:
c:\winavr-20100110\avr\include\util\delay.h:95:3: warning: #warning 
"Compiler optimizations disabled; functions from <util/delay.h> won't 
work as designed" [-Wcpp]
 # warning "Compiler optimizations disabled; functions from 
<util/delay.h> won't work as designed"
   ^
Finished building: ../main.c

Building target: kleiner Bagger.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,kleiner Bagger.map -mmcu=attiny13 -o "kleiner 
Bagger.elf"  ./main.o
avr-gcc.exe: error: Bagger.map: No such file or directory
make: *** [kleiner Bagger.elf] Error 1

Mit Projektnamen "Test" funktionierts.
1
#include <avr/io.h>
2
#include <inttypes.h>
3
#include <avr/interrupt.h>
4
#include <avr/sleep.h>
5
#include <util/delay.h>
6

7
int main() {
8
  OCR0A=0;
9
  _delay_ms(100);
10
}

09:46:30 **** Build of configuration Release for project Test ****
make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections 
-fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields 
-mmcu=attiny13 -DF_CPU=8000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o 
"main.o" "../main.c"
Finished building: ../main.c

Building target: Test.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,Test.map -mmcu=attiny13 -o "Test.elf"  ./main.o
Finished building target: Test.elf

Invoking: AVR Create Extended Listing
avr-objdump -h -S Test.elf  >"Test.lss"
Finished building: Test.lss

Create Flash image (ihex format)
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex Test.elf 
"Test.hex"
Finished building: Test.hex

Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma 
.eeprom=0 -O ihex Test.elf  "Test.eep"
Finished building: Test.eep

Invoking: Print Size
avr-size --format=avr --mcu=attiny13 Test.elf
AVR Memory Usage
----------------
Device: attiny13

Program:      64 bytes (6.3% Full)
(.text + .data + .bootloader)

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


Finished building: sizedummy

Invoking: AVRDude
C:\WinAVR-20100110\bin\avrdude -pt13 -cavr910 -PCOM3 
-Uflash:w:Test.hex:a
avrdude: ser_open(): can't open device "\\.\COM3": Das System kann die 
angegebene Datei nicht finden.
OP #3894582
Lesenswert?

Danke Jörg,

das mit dem Prozessor ändern und abspeichern hat geholfen. Seit ich 
meinen Laptop auf W7 aufgerüstet habe und dort die Kepler Version von 
Eclipse installiert habe, treten solche Probleme auf. Bis jetzt konnte 
ich mir aber meist mit "Clean Project" und "Refresh" helfen. Mit der 
alten Eclipse Version unter XP hatte ich solche Probleme nicht.

Dank auch an alle Anderen für die Mühe.
Gast #3894666
Lesenswert?

Daniel H. schrieb:
> Heißer Tip:
> Du kannst auch einfach deinen Programmcode kopieren und hier einfügen.
> Aber nicht weiter verraten, das ist top secret.

Du bist ja noch witziger als Kurt Krömer, Harald Schmidt und Onkel Fisch
zusammen! Sollte man nicht für möglich halten, daß es so etwas geben 
kann.
OP #3894686
Lesenswert?

Ich hatte einen Unterstrich in den Projektnamen gemacht. das hat aber 
nicht geholfen.

Jetzt muss ich mich nur noch mit der Tatsache anfreunden, dass ich die 
Taktfrequenz des TINY13 nicht mit dem Burn-O-Mat auf 8 MHz einstellen 
kann...


Das mit dem Quelltext kopieren ist mir gestern gar nicht mehr 
eingefallen, war wohl schon zu spät zum denken. Zu meiner Entschuldigung 
kann ich aber anführen, dass ich meine Beiträge auf einem anderen 
Rechner schreibe.
OP #3894738
Lesenswert?

Ich könnte mich in den Hintern beißen. Hier liegen ATMEGA 8 und TINY 13 
herum. Und anstatt dem bewährten ATMEGA oder wenigstens einem TINY 2313 
zu nehmen, wollte ich sparen und habe den 13er genommen. Jetzt sitze ich 
rum und muss den Mist noch anpassen. Mit dem ATMEGA wäre ich in einer 
halben Stunde fertig gewesen...

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