Forum: Mikrocontroller und Digitale Elektronik Problem nach dem ersetzen eines Atmega32 durch Atmega64


von Seba (Gast)


Lesenswert?

Ich habe auf meinem board einen Atmega 32 mit einem Atmega 64 ersetzt 
und ein identisches Programm raufgespielt, das eine LED blinken lässt. 
Die Schaltung ist irdentisch geblieben und wurde nur um einen 20Mhz 
Quarz erweitert. Das Programm läuft aber seit dem nicht ;) Kann mir 
jemand ne Erklärung geben?
<code>
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>

//Prototypen
void sleep_ms(uint16_t ms);

#define LED_DDR    DDRD        //DDRA, DDRB...
#define LED_PORT  PORTD       //PORTA, PORTB...
#define LED_PORTPIN  PD6         //PA0, PA1..., PB0, PB1..., ...

int main(void){
  /*Den Pin wo die LED angeschlossen
      ist als Ausgang setzen
   */
  LED_DDR |= (1<<LED_PORTPIN);

  //Die LED die ganze Zeit an und aus schalten
  while(1){
    LED_PORT |= (1<<LED_PORTPIN);  //Den Portpin auf high setzen
    sleep_ms(1000000);  //1sek warten
    LED_PORT &= ~(1<<LED_PORTPIN);  //Den Portpin auf low setzen
    sleep_ms(1000000);  //1sek warten
  }
}

/*  Diese Funktion lässt den Controller
    "ms" Millisekunden warten.
  Die while-Schleife wird so oft durchlaufen,
  wie der Funktion übergeben wurde.
  Bei jedem Duchlauf wir noch 1ms gewartet.
*/
void sleep_ms(uint16_t ms){
  while(ms){
    ms--;
    _delay_ms(1);
  }
}
</code>

von holger (Gast)


Lesenswert?

>Ich habe auf meinem board einen Atmega 32 mit einem Atmega 64 ersetzt
>und ein identisches Programm raufgespielt, das eine LED blinken lässt.

Programm neu kompiliert?
M103C Fuse auf 1 gesetzt?

von Seba (Gast)


Lesenswert?

Unter Fuses ist der nicht aufgelistet, wo finde ich ihn und ist es 
möglich das er unter anderem namen aufgelistet ist?

von holger (Gast)


Lesenswert?

ATMega103 compatibility mode ausschalten

von Seba (Gast)


Lesenswert?

Wo finde ich die option?

von Falk B. (falk)


Lesenswert?

@  Seba (Gast)

>Wo finde ich die option?

Bei den AVR Fuses! Genauer im Extended Fuse Byte.

http://www.engbedded.com/cgi-bin/fc.cgi?P_PREV=&P=ATmega64

von Hubert G. (hubertg)


Lesenswert?

Wo schreibt der Compiler 1000000 bei uint16_t hin?

von Hubert G. (hubertg)


Lesenswert?

ATMega103 compatibility mode gibts doch nur beim M128

von Seba (Gast)


Lesenswert?

Es ist ein Atmega 644, der scheint diese Option nicht zu haben ;), 
andere lösungsvorschläge?

von holger (Gast)


Lesenswert?

>Es ist ein Atmega 644, der scheint diese Option nicht zu haben ;),
>andere lösungsvorschläge?

Diese Information hätte evtl. Posts in die falsche Richtung
verhindert. Ich mach mich mal vom Acker. Such selber.

von Seba (Gast)


Lesenswert?

Tut mir leid ;) War keine Absicht, habe mich einfach vertippt

von Otto (Gast)


Lesenswert?

schon versucht, neu zu compilieren ?

Otto

von Hubert G. (hubertg)


Lesenswert?

Gibt dir der Compiler keine Warnigs aus?

von holger (Gast)


Lesenswert?

>schon versucht, neu zu compilieren ?

Hab ich 18:17 schon gefragt.

von Otto (Gast)


Lesenswert?

ja Holger - Antwort darauf habe ich aber nicht gefunden ....

von Seba (Gast)


Lesenswert?

Neucompiliert habe ich es und warning ist nur das ich den CPU Takt nicht 
gesetzt hab ;) Ich probiers gleich nochmal mit

von Otto (Gast)


Lesenswert?

Hast Du auch das "#include <iom32v.h>" ausgetauscht ?

Otto

von Seba (Gast)


Lesenswert?

Ich danke euch allen, jetzt läufts, tatsächlich lag alles an der CPU 
tacktung die falsch eingestellt war ;). Danke, Wochenende gerettet ;)

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.