Forum: Mikrocontroller und Digitale Elektronik AVR340 Code lauffähig machen


von Bruno M. (brumay)


Angehängte Dateien:

Lesenswert?

Hallo,

der in der AVR340 enthaltene Code ist mit CodeVision AVR compiliert und 
daher im Studio nicht direkt lauffähig. Da meine C Kenntnisse sehr 
rudimentär sind, komme ich leider nicht weiter.

Die erste Fehlermeldung bezog sich auf

#include <mega48.h>

daher habe ich es in einen Kommentar geändert.

Die zweite war

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

Mit einer Änderung in

isr (TIMER1_OVF_vect) void timer0_ovf_isr(void)

ist diese spezielle Meldung zwar auch weg, aber dafür habe ich eine 
Reihe anderer:

Warning  1  return type defaults to 'int' [enabled by default] 36  1
Error    2  expected '=', ',', ';', 'asm' or '__attribute__' before '{' 
token  37  1
Error    3  expected '=', ',', ';', 'asm' or '__attribute__' before '{' 
token  48  2
Error    4  invalid preprocessing directive #asm  50  3
Error    5  expected '=', ',', ';', 'asm' or '__attribute__' before '{' 
token  180  1
Warning  6  type of '__vector_13' defaults to 'int' [enabled by default] 
36  1
Warning  7  control reaches end of non-void function [-Wreturn-type] 
209  1

Damit sind meine Möglichkeiten überfordert. Kann jemand helfen?

Gruß Bruno

von Peter II (Gast)


Lesenswert?

Bruno M. schrieb:
> #include <mega48.h>
>
> daher habe ich es in einen Kommentar geändert.

dann fehlt dir doch die hälfte, denn in dieser Datei ist die "Hardware" 
beschrieben.

Du muss doch auch ein include file für diese cpu haben.

von Motek (Gast)


Lesenswert?

> Error    2  expected '=', ',', ';', 'asm' or '__attribute__' before '{'

Er erwartet eine der Angaben, die in der Aufzählung von '=' bis 
'__attribute__' genannt werden, vor dem '{'.

Du solltest die entsprechenden Quelltextzeilen posten.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Folgendes musst du ändern, damit der Code unter AVR-GCC mit AVR-Libc
baut:
1
36c36
2
< isr (TIMER1_OVF_vect) void timer0_ovf_isr(void)
3
---
4
> ISR (TIMER1_OVF_vect)
5
50c50
6
<       #asm("sei")                                     //* * * * * * * Eanble Global enable interrupts* * * * * * * * ** * 
7
---
8
>       asm("sei");                                     //* * * * * * * Eanble Global enable interrupts* * * * * * * * ** * 
9
101c101
10
<                               DDRD  = 0x02;  /                /COM2 asserted High 
11
---
12
>                               DDRD  = 0x02;  //COM2 asserted High 
13
214c214,215
14
< //************************End of Initialization function *************************** 
15
\ No newline at end of file
16
---
17
> //************************End of Initialization function *************************** 
18
> }

von Bruno M. (brumay)


Lesenswert?

Peter II schrieb:

> dann fehlt dir doch die hälfte, denn in dieser Datei ist die "Hardware"
> beschrieben.

Der Controller wird mit den Project Properties eingeschlossen.

Motek schrieb:

> Du solltest die entsprechenden Quelltextzeilen posten.

Die sind im pdf File enthalten.

von Bruno M. (brumay)


Lesenswert?

Yalu X. schrieb:

> Folgendes musst du ändern, damit der Code unter AVR-GCC mit AVR-Libc
> baut:

Super, danke, funktioniert perfekt!

von Bruno M. (brumay)


Lesenswert?

Ich habe mich zu früh gefreut!

Das build funktioniert zwar jetzt ohne Probleme, aber beim debuggen 
geschehen Dinge die ich nicht nachvollziehen kann.

Er springt schon vor dem ersten Interrupt in die switch Auswahl zu case 
7 obwohl state_counter mit 8 vorbelegt ist. Dann verlangt er nach einer 
Datei libgcc.S und landet anschließend im Nirwana.

Wo liegt der Fehler? Ich möchte das Programm gerne verstehen, um es dann 
in asm zu realisieren.

von Bruno M. (brumay)


Lesenswert?

Hat niemand Lust sich mit diesem Thema zu beschäftigen?

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.