Peter Dannegger schrieb: > Einen ATmega328 gibt es nicht. aber ich finde den bei Atmel: http://www.atmel.com/devices/atmega328.aspx den p natürlich auch mein Problem, ich kann mit dem mega168 im Studio 4 fehlerfrei kompilieren, mit dem 328p aber nicht obwohl beide iomxxx.h vorhanden sind includet offensichtlich über io.h nur einen 168 aber nicht dem 328p kann da jemand helfen ? liegts am Studio 4 oder am WinAVR-20100110
>kann da jemand helfen ?
Fehlermeldungen zeigen.
Komplettes Projekt als ZIP im Anhang posten.
Sonst kann dir kaum jemand helfen.
holger schrieb: > Fehlermeldungen zeigen. > Komplettes Projekt als ZIP im Anhang posten. ich versuche es mal auszugsweise, wird sonst zu komplex also den Code mit ATmega168 in den config settings im projekt funktioniert es, das warning wird ausgegeben: #warning defined (_AVR_ATmega168_) #warning defined (_AVR_ATmega328p_) in usart.h
1 | /*----------------------------------------------------------------------------
|
2 | Copyright: Radig Ulrich mailto: mail@ulrichradig.de
|
3 | Author: Radig Ulrich
|
4 | Remarks:
|
5 | known Problems: none
|
6 | Version: 24.10.2007
|
7 | Description: RS232 Routinen
|
8 | Dieses Programm ist freie Software. Sie können es unter den Bedingungen der
|
9 | GNU General Public License, wie von der Free Software Foundation veröffentlicht,
|
10 | weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder
|
11 | (nach Ihrer Option) jeder späteren Version.
|
12 | Die Veröffentlichung dieses Programms erfolgt in der Hoffnung,
|
13 | daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE,
|
14 | sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT
|
15 | FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
|
16 | Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
|
17 | Programm erhalten haben.
|
18 | Falls nicht, schreiben Sie an die Free Software Foundation,
|
19 | Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
20 | ------------------------------------------------------------------------------*/
|
21 | |
22 | #ifndef _UART_H
|
23 | |
24 | #define _UART_H
|
25 | .....
|
26 | .....
|
27 | .....
|
28 | #include <avr/io.h> |
29 | .....
|
30 | .....
|
31 | .....
|
32 | #if defined (__AVR_ATmega88__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega328p__)
|
33 | |
34 | #warning defined (__AVR_ATmega168__)
|
35 | #warning defined (__AVR_ATmega328p__)
|
36 | #define USR UCSR0A
|
37 | #define UCR UCSR0B
|
38 | #define UBRR UBRR0L
|
39 | #define TXEN TXEN0
|
40 | #define RXEN RXEN0
|
41 | #define RXCIE RXCIE0
|
42 | #define UDR UDR0
|
43 | #define UDRE UDRE0
|
44 | #define USART_RX USART_RX_vect
|
45 | #endif
|
ich sehe im io.h eingebunden wird m168.h oder aber die #defines aus usart.h werden übernommen aber wenn ich im projekt den m328p eintrage gibt es Fehler: ../usart/usart.c:81: error: 'UCR' undeclared (first use in this function) es erscheint auch nicht mehr "mein" warning #warning defined (_AVR_ATmega168_) #warning defined (_AVR_ATmega328p_)
jar schrieb:
1 | > defined (__AVR_ATmega328p__) |
2 | |
3 | Diese Definition gibt es auch nicht, sondern __AVR_ATmega328P__. |
mfg.
Thomas Eckmann schrieb: > jar schrieb:> defined (_AVR_ATmega328p_) > > Diese Definition gibt es auch nicht, sondern _AVR_ATmega328P_. > mfg. aber das mache nicht ich ! das kommt doch aus Projekt Options wenn ich den 328p wähle atmega328p so stehts in den Projekt Options gewählt -> kleines p im pulldown Menü wie doof ist das denn ? verbessert in P in defines und es geht ! Danke
:
Bearbeitet durch User
Joachim B. schrieb: > Thomas Eckmann schrieb: >> jar schrieb:> defined (_AVR_ATmega328p_) >> >> Diese Definition gibt es auch nicht, sondern _AVR_ATmega328P_. >> mfg. > > aber das mache nicht ich ! das kommt doch aus Projekt Options wenn ich > den 328p wähle > > atmega328p > > so stehts in den Projekt Options gewählt -> kleines p > im pulldown Menü > > wie doof ist das denn ? > > verbessert in P in defines und es geht ! > > Danke Ja, das sind die kleinen Gemeinheiten. Aber jetzt weisst du das ja und das wird dir so schnell nicht wieder passieren. Hier ist die vollständige Familie:
1 | #if defined (__AVR_ATmega48__) | defined (__AVR_ATmega48P__) | (__AVR_ATmega48PA__) | defined (__AVR_ATmega48A__)\
|
2 | | defined (__AVR_ATmega88__) | defined (__AVR_ATmega88P__) | (__AVR_ATmega88PA__) | defined (__AVR_ATmega88A__)\
|
3 | | defined (__AVR_ATmega168__) | defined (__AVR_ATmega168P__) | (__AVR_ATmega168PA__) | defined (__AVR_ATmega168A__)\
|
4 | | defined (__AVR_ATmega328__) | defined (__AVR_ATmega328P__)
|
mfg.
egal, sind ja immer diese kleinen Gemeinheiten an die man verzweifeln kann aber nochmals vielen Dank, so in der Gemeinschaft finden sich ja Lösungen gegen solche Gemeinheiten. nochmals vielen Dank
Thomas Eckmann schrieb: > Hier ist die vollständige Familie: > #if defined (_AVR_ATmega48_) | defined (_AVR_ATmega48P_) \ > | (_AVR_ATmega48PA_) | defined (_AVR_ATmega48A_) \ > | defined (_AVR_ATmega88_) | defined (_AVR_ATmega88P_) \ > | (_AVR_ATmega88PA_) | defined (_AVR_ATmega88A_) \ > | defined (_AVR_ATmega168_) | defined (_AVR_ATmega168P_) \ > | (_AVR_ATmega168PA_) | defined (_AVR_ATmega168A_) \ > | defined (_AVR_ATmega328_) | defined (_AVR_ATmega328P_) aber warum so ? mit einem | binäres ODER statt mit 2 || logisches ODER #if defined (_AVR_ATmega88_) || defined (_AVR_ATmega168_) \ || defined (_AVR_ATmega328_) || defined (_AVR_ATmega328P_) ???
:
Bearbeitet durch User
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.