Forum: Mikrocontroller und Digitale Elektronik AT mega 328p mit Studio 4 und WinAVR-20100110


von jar (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>kann da jemand helfen ?

Fehlermeldungen zeigen.
Komplettes Projekt als ZIP im Anhang posten.

Sonst kann dir kaum jemand helfen.

von jar (Gast)


Lesenswert?

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_)

von Thomas E. (thomase)


Lesenswert?

jar schrieb:
1
> defined (__AVR_ATmega328p__)
2
3
Diese Definition gibt es auch nicht, sondern __AVR_ATmega328P__.
mfg.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

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
von Thomas E. (thomase)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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
Noch kein Account? Hier anmelden.