Hi,
es ist wichtig, dass Du im AVRStudio die Parameter richtig einstellst. Einmal unter "Project|Configuration Options|Frequency" (siehe erste Anlage) und dann unter "Debug"AVR SimulatorOptions" oder direkt im Frequenzfenster des Simulators. Ich habe Deinen Code simuliert und komme auf knapp über 10ms (siehe Anlage 2). Nimm die ganze FCPU-Sache aus Deinem Code und stelle alles im AVRStudio wie oben gesagt ein. In meinem Beispiel (1. Anlage) habe ich "keine Optimierung (=-O0)" gewählt; typischerweise nimmt man mindestens "-O1".
Dein Code ist etwas holprig: Statt
Code:
PORTB &= (1<<bPORTB[i].PIN);
PORTB |= (1<<bPORTB[i].PIN);
kannst Du z.B. direkt (1<<i) verwenden. Übrigens: Beim ATmega32 kann man die einzelnen Ausgangspins nicht mit Hilfe von PINx |= PINx "togglen" (20:04 editiert: verkehrt -- muss heißen: "PINx |= KONSTANTE;"), aber bei den neueren ATmegas geht das!
Hier eine Lösung für Deine Schleife:
Code:
while(!(PINA & (1<<PINA1))){
for(int i=0; i<8; i++){
blablabla();
}
}
Viel Erfolg und Spaß bei der Weiterentwicklung!
Gruß
Fred
Lesezeichen