mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD - Karte compile Probleme


Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

will einen Logger mit SD-Karte bauen.

hab mir dazu den Code von Ulrich Radig heruntergeladen und compiliert.

Folgendes Problem:

Wenn ich in den Configurations zb einen Mega32 einstelle funktioniert 
alles.

Wenn ich Mega16 einstelle (der eigentlich gedacht war) kommen einige 
Fehlermeldungen:

../../SD/usart.c: In function 'usart_init':
../../SD/usart.c:32: error: 'UCR' undeclared (first use in this 
function)
../../SD/usart.c:32: error: (Each undeclared identifier is reported only 
once
../../SD/usart.c:32: error: for each function it appears in.)
../../SD/usart.c:39: error: 'UBRR' undeclared (first use in this 
function)
../../SD/usart.c: In function 'usart_write_char':
../../SD/usart.c:47: error: 'USR' undeclared (first use in this 
function)

ich hatte zwar die Befürchtung, das der Ram beim Mega16 zu klein wird, 
aber das wirkt sich ja noch nicht beim kompiliern aus oder?

Der Flash dürfte auch kein Problem sein:

Meldung:

AVR Memory Usage
----------------
Device: atmega32

Program:    4412 bytes (13.5% Full)
(.text + .data + .bootloader)

Data:         45 bytes (2.2% Full)
(.data + .bss + .noinit)

die Fehlermeldungen ergeben für mich keinen Sinn.

mfg
J.K.

Quellcode: http://www.ulrichradig.de/home/index.php/avr/mmc-sd

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der mega16 & mega32 unterscheiden sich halt an vielen Stellen, hier den 
Registern. Die Fehlermeldungen beziehen auf die (dem m16 fehlenden bzw. 
anders lautenden) Register der UART-Schnittstelle (Einstellung der 
Baudzahl etc.) Schaue mal in die Dokus zu beiden µCs. Es sogar eine 
Zusammenfassung der Unterschiede: -> 
http://www.atmel.com/dyn/resources/prod_documents/...

Such Dir das M16 Datenblatt und passe den Code an den entsprechenden 
Stellen an

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt (brutal wie ich bin :-) den 32er Code auf den Chip geladen

bekomnm jetzt über die Schnittstelle aber eine Meldung!

"Karte nicht gefunden" (ist auch noch keine angeschlossen.

@MICHA:
Danke für die Antwort!

werd ich ausbessern und nochmal probieren!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
J. K. wrote:
> Hab jetzt (brutal wie ich bin :-) den 32er Code auf den Chip geladen
Lass den Mist, sowas macht man nicht.

*Ändere es um, sodass es für Mega16 kompilierbar ist
*Besorge dir andere Sourcen
*Benutze einen Mega32

Autor: Boxi Boxitec (boxi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tztztz

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:
> J. K. wrote:
>> Hab jetzt (brutal wie ich bin :-) den 32er Code auf den Chip geladen
> Lass den Mist, sowas macht man nicht.


Hatte ich nicht vor:

>werd ich ausbessern und nochmal probieren!

Autor: Alain F. (fox82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Hab jetzt (brutal wie ich bin :-) den 32er Code auf den Chip geladen

Lol!

Bin auch gerade an einem Logger dran, mit ATMega32. hast du den ATmega 
mit 3.3V versorgt?
Bei mir läuft der Code jetzt und dank der Hilfe hier im Forum auch die 
zweite SD-Karte :-)

Beitrag "SD Formatieren"

Gruss Alain

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Compilieren geht jetzt,

Grund war folgender:

Ulrich Radig hat die Files für mehrere µC Typen geschrieben.
->if difines (Präprozessoranweisungen)

  #if defined (_AVR_ATmega32_)
    #define USR UCSRA
    #define UCR UCSRB
    #define UBRR UBRRL
    #define EICR EICRB
    #define USART_RX USART_RXC_vect
  #endif

Es existiert nur eins fürn MEGA32 und keins fürn 16er!

also einfach kopieren, 32 in 16 ändern und schon gehts.

Das darf man auch. 16er und 32er unterscheidet nur der Speicher und ein 
paar Interrupt Sachen.

Pinbelegung und uart ist gleich, daher hat der 32er Code auch so gut 
funktioniert.



Beginne jetzt eine Dateischreib Libery zu verwenden 
(www.mikro-control.de)
(glaub aber jetzt schon das sich das Speichermäßig nicht ausgeht)

an Fox82:
ne hab 5V versorgung.
Spannungsumwandlung erfolgt (noch) über Spannungsteiler und Dioden.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@www.mikro-control.de

Interresant:

In diesem Projekt sind eigene UART-Funktionen dabei

diese funktionieren aber irgendwie nicht richtig

Ich hab das Bsp Projekt heruntergeladen und kompiliert. 210% 
Programmspeicherauslastung!

Jetzt hab ich die uart Funktionen durch printf's ersezt und extra libery 
herausgelöscht:

speicherersparnis von ca 20 k !

hab jetzt nur mehr eine 60%ige auslastung!

mfg
J.K

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
J. K. wrote:
> Das darf man auch. 16er und 32er unterscheidet nur der Speicher und ein
> paar Interrupt Sachen.
>
> Pinbelegung und uart ist gleich, daher hat der 32er Code auch so gut
> funktioniert.

Jau, aber einige Register haben andere Bitdefinitionen. Laut Register 
Summary vom Mega16/32

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, SRAM ist jetzt zu wenig

MEGA32 muss her^^

Reichelt:
http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A363;...

war da reichelt lustig oder warum ist da ein "Fenster" im IC? Der hat 
doch kein EPROM?

Ich tipp mal auf falsches Bild oder?

mfg
J.K

Autor: Alain F. (fox82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich tipp mal auf falsches Bild oder?

Genau! Denke ich auch. Wenn diese aber ein Fenster hat, werde ich den
bestellen und an mein Schlüsselbund hängen.... :-)

Mit dem Mega32 kann ich jetzt die Karte lesen. Respektive den Text in
der mmc.txt Datei:

System Ready!
Karte gefunden!!

MBR Signatur found!

VBR Signatur found!
0 26 0 32 5f 59 83 c8 be fb cf ff 92 40 40 d7
Directory

Directory Ende

File Found!!
Hallo, ich bin der Text in der mmc.txt

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.