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
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/doc2538.pdf Such Dir das M16 Datenblatt und passe den Code an den entsprechenden Stellen an
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!
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
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!
>> 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
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.
@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
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
Ok, SRAM ist jetzt zu wenig MEGA32 muss her^^ Reichelt: http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A363;GROUPID=2959;ARTICLE=45026;START=0;SORT=artnr;OFFSET=16;SID=31SoNsr6wQAR8AAE5kr3Uf99c79dd8bb35dcc037a8602701397c6 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
>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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.