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
Vektortabelle? Welche Vektortabelle meinst du, die ich da noch ändern muss. Im Studio ist der richtige Typ eingestellt, der Atmega168. Gruß Rico
ich glaube da gibts von Atmel Application Notes dazu: AVR094 und AVR095 Grüße Paul
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
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.
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ß
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
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.