Forum: Mikrocontroller und Digitale Elektronik Kompilierfehler für ATtiny85


von Definitionssache (Gast)


Lesenswert?

Hallo,

ich habe vor ein paar Monaten in Atmel Studio einen Code für einen 
ATtiny85 geschrieben. Der hat auch wunderbar funktioniert.

Nun versuche ich den selben Code nur mit Toolchain und Makefile zu 
kompilieren, aber offenbar fehlen ein paar Definitionen:
1
main.cpp:157:2: error: 'UCSR0C' was not declared in this scope
2
  157 |  UCSR0C =  (1 << UCSZ01) | (1 << UCSZ00);    // Set frame: 8data, 1 stop
3
      |  ^~~~~~
4
main.cpp:157:18: error: 'UCSZ01' was not declared in this scope; did you mean 'CS01'?
5
  157 |  UCSR0C =  (1 << UCSZ01) | (1 << UCSZ00);    // Set frame: 8data, 1 stop
6
      |                  ^~~~~~
7
      |                  CS01
8
main.cpp:157:34: error: 'UCSZ00' was not declared in this scope; did you mean 'CS00'?
9
  157 |  UCSR0C =  (1 << UCSZ01) | (1 << UCSZ00);    // Set frame: 8data, 1 stop
10
      |                                  ^~~~~~
11
      |                                  CS00

Hat die tn85def.inc was damit zu tun und wie bekomme ich sie ins 
Makefile eingebunden?

Danke für die Hilfe

von Karl M. (Gast)


Lesenswert?

Guten Morgen, da du anscheinend ein C Programm schreiben möchtest, muss 
keine Assembler Datei eingebunden werde, bzw. Verwendet werden. Zeig 
dein gesamtes Projekt nebst den C-Dateien und Makefile, dann kann man 
dir auch helfen.

von PittyJ (Gast)


Lesenswert?

Oft muss man Include-Pfade mit in einer Kommandozeile eingeben.

von Peter D. (peda)


Lesenswert?

Definitionssache schrieb:
> main.cpp:157:2: error: 'UCSR0C' was not declared in this scope

Da hatter recht, im ATtiny85 gibt es kein Register 'UCSR0C'.

von Karl M. (Gast)


Lesenswert?

Peter D. schrieb:
> Definitionssache schrieb:
> main.cpp:157:2: error: 'UCSR0C' was not declared in this scope
>
> Da hatter recht, im ATtiny85 gibt es kein Register 'UCSR0C'.

Danke Peter, das ist ja witzig ich habe nicht gesehen dass der Attiny85 
gemeint ist, der hat nämlich gar keinen USART.

von Sebastian S. (amateur)


Lesenswert?

>Hallo,

>ich habe vor ein paar Monaten in Atmel Studio einen Code für einen
>ATtiny85 geschrieben. Der hat auch wunderbar funktioniert.

Ich finde es immer wieder wunderbar (im wahrsten Sinne des Wortes) wenn 
ich so etwas lese.

Code, der ein nicht existentes Register anspricht und sogar 
funktioniert;-)

von kyrk.5 (Gast)


Lesenswert?

Sebastian S. schrieb:
> Code, der ein nicht existentes Register anspricht und sogar
> funktioniert;-)

Sowas habe ich nicht gehabt, aber etwas ähnliches allerdings mit PIC32.
PC 1 mit XC32 2.10 und Legacy Peripherie drivers
PC 2 mit XC32 2.30 ohne Legacy Peripherie drivers

PC 1 kompiliert. PC 2 natürlich nicht. Klar da die Librarys fehlen. Da 
der Kompiler die Librarys durch den Linker Script als optional bekommt, 
gibt es anstelle von fehlende Libraryfile nur verschiedene Compiler und 
Linker Errors.

Man kann natürlich alles schon erklären wenn man bisschen reingeguckt :) 
Aber erste mal war mir nicht klar dass der Legacy driver fehlen würde 
und habe mich gewundert... Es hat doch davor schön kompiliert und jetzt 
auf einmal nicht mehr.

von M. K. (sylaina)


Lesenswert?

kyrk.5 schrieb:
> Man kann natürlich alles schon erklären wenn man bisschen reingeguckt :)
> Aber erste mal war mir nicht klar dass der Legacy driver fehlen würde
> und habe mich gewundert... Es hat doch davor schön kompiliert und jetzt
> auf einmal nicht mehr.

Wenn der Entwicklungsumgebung Treiber fehlen ist dass das eine, wenn man 
aber auf einem Mikrocontroller Peripherie anspricht die es gar nicht 
gibt ist das ein völlig anderes Problem. Nicht vorhandene Peripherie 
bekommt man auch nicht mit Treibern implementiert. Aus dem Motor meines 
Autos wird ja auch nicht ein 1.000 PS Monster nur weil ich nen anderes 
Logo auf die Motorhaube klebe ;)

von Peter D. (peda)


Lesenswert?

M. K. schrieb:
> Nicht vorhandene Peripherie
> bekommt man auch nicht mit Treibern implementiert.

Auf großen CPUs mit OS klappt das schon.
Man konnte z.B. unter 32Bit-Windows DOS-Programme starten, die direkt 
auf die Registeradressen der 16550 UART zugegriffen haben.
Der Treiber hat dann diese Zugriffe abgefangen und deren Funktion auf 
dem USB-RS232 Konverter implementiert.

von M. K. (sylaina)


Lesenswert?

Peter D. schrieb:
> Auf großen CPUs mit OS klappt das schon.

Was abfangen und simulieren, ja das geht natürlich. Aber das sieht hier 
IMO nicht so aus als sei das hier geplant gewesen.

von Definitionssache (Gast)


Lesenswert?

Wie ich inzwischen herausfinden durfte, ist der Code gar nicht mehr für 
einen ATtiny gedacht sondern wurde für einen ATmega328P umgeschrieben. 
Dann klappt es auch mit dem kompilieren.

von spess53 (Gast)


Lesenswert?

Hi

>Wie ich inzwischen herausfinden durfte, ist der Code gar nicht mehr für
>einen ATtiny gedacht sondern wurde für einen ATmega328P umgeschrieben.

Das widerspricht deiner anfänglichen Aussage:

>ich habe vor ein paar Monaten in Atmel Studio einen Code für einen
>ATtiny85 geschrieben. Der hat auch wunderbar funktioniert.

MfG Spess

von Definitionssache (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
> Wie ich inzwischen herausfinden durfte, ist der Code gar nicht mehr für
>>einen ATtiny gedacht sondern wurde für einen ATmega328P umgeschrieben.
>
> Das widerspricht deiner anfänglichen Aussage:
>
> ich habe vor ein paar Monaten in Atmel Studio einen Code für einen
>>ATtiny85 geschrieben. Der hat auch wunderbar funktioniert.
>
> MfG Spess

Nun tut es nicht, wenn man in Betracht zieht, dass ich es schlicht 
vergessen habe.

von spess53 (Gast)


Lesenswert?

Hi

>Nun tut es nicht, wenn man in Betracht zieht, dass ich es schlicht
>vergessen habe.

Ja, Ja. Wer keine Ausrede hat, wird erschossen.

MfG Spess

von Einer K. (Gast)


Lesenswert?

spess53 schrieb:
> Ja, Ja.

Ihm hat doch schon längst zugegeben/eingesehen, dass er da einen Bock 
geschossen hat, sich geirrt hat.

Wieso musst du da noch so ausgiebig nach treten?

Das ist keine Frage an dich, auf die ich eine Antwort sehen möchte, denn 
jede Form der Rechtfertigung, für so ein Verhalten, kann nur 
gruselig/igitt sein.

von M. K. (sylaina)


Lesenswert?

Arduino Fanboy D. schrieb:
> Wieso musst du da noch so ausgiebig nach treten?

Weil wir hier im Mikrocontroller-Forum sind, da ist das leider normal :(

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.