Umstieg von Atmega8 auf Atmega168

Gast #721132
Lesenswert?

Hallo,

wegen des größeren Flashspeichers möchte ich auf einen Atmega168 
umsteigen, aber der 168 reagiert überhaupt nicht. Selbst ein völlig 
simples Programm bringt nicht das gewünschte Ergebnis, das gleiche 
Progamm läuft auf dem Atmega8  problemlos und setzt den Pin auf high.

Woran könnte es liegen?

Viele Grüße
Rico
Angehängte Dateien:
Gast #721367
Lesenswert?

Hallo!
Meiner Meinung nach, gibt es nicht weniger als zwei Varianten:
1) Wie Otto sagt - das Problem mit Vektortabelle von Interrupt. M168 und 
M8 verschiedene Vektortabellen haben. So es ist moeglich, dass du die 
Interruptvektoren nicht geaendert hast?
2) Das Problem mit der Registeren. Einige Register in M168 und M8 
koennen verschiedene Biten haben. Z.B. in M8 FOC1A und FOC1B sind im 
Register TCCR1A, und in M168 - in TCCR1C
#721398
Lesenswert?

Um die Vektortabelle kümmert sich in C der Compiler, vorausgesetzt 
natürlich, der richtige Controller-Typ ist im Makefile bzw. AVRStudio 
eingestellt.

Allerdings dürfte das Programm so wie es oben steht tatsächlich weder 
auf nem Mega8 noch auf nem Mega168 etwas Sinnvolles machen, wie 
Patrick schon angedeutet hat.
Gast #721529
Lesenswert?

Versuch mal das Programm.

#define F_CPU 14745600

#include <avr/io.h>
#include <util/delay.h>

int main()
{
  unsigned char i;

  DDRB = 0xFF;

  while( 1 ) {

    PORTB |= (1 << PB0);


    for( i = 0; i < 50; i++ )
      _delay_ms( 10 );


    PORTB &= ~(1 << PB0);


    for( i = 0; i < 50; i++ )
      _delay_ms( 10 );

  }
}


Ein einfaches Blinklicht mit delay. Läuft auf nem 48/88/168 wenn der 
richtige Controller eingestellt wurde.

PS: Anstatt nem delay lieber nen Interrupt verwenden.


Gruß
Gast #721859
Lesenswert?

Hallo,

ersteinmal Danke an alle! DANKE!

Ich habe das Problem gelöst. Ihr habt recht mein Code macht wenig 
sinnvolles, sollte er aber auch nicht, sondern lediglich den Pin PB0 auf 
High setzen.

Der Fehler lag aber wo anders, ich hatte dem Compiler nicht bekannt 
gegeben das ich jetzt mit dem Atmega168 statt dem Atmega8 arbeite. Ich 
habe also jetzt ein neues Project angelegt und jetzt funktioniert es!

Nochmal Danke für die Hilfestellungen.

Viele Grüße
Rico

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren