Umstieg von Atmega8 auf Atmega168

Gast #721132
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
Vektortabelle?

Welche Vektortabelle meinst du, die ich da noch ändern muss.


Im Studio ist der richtige Typ eingestellt, der Atmega168.

Gruß
Rico
Gast
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
Gast
Lässt Du denn Dein Programm so laufen, wie es im angehängten Code ist? 
Mit den auskommentierten Codezeilen? Dann wäre es kein Wunder, das 
nichts geschieht.
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.