Gast
#442257
Hallo, ich habe ein Problem mit meinem AT90USB1287. Ich will einen Takt für ein externes Gerät erzeugen um eine Adresse zu inkrementieren. Dazu setzte ich jeweils ein Bit auf einem Steuerport und anschließend setzte ich es wieder zurück. PORTD |= (1<<4); PORTD &= ~(1<<4); Wenn ich diesen Code kompiliere kommt auch tatsächlich im Assemblercode die zwei Befehle SBI und CBI direkt hintereinander. Da der SBI und der CBI laut Datenblatt je zwei Takte benötigt komme ich bei 8Mhz auf eine Pulslänge von Max. 0,5µS. Dieser Wert bestätigt mir auch der Simulator. Wenn ich jetzt aber mit dem Oszilloskop nachmesse komme ich auf eine Pulslänge von 2µS. Ich verwende den bereits auf dem Controller installierten Bootloader um meine Programme per USB auf den Controller zu übertragen. Kann es sein, dass mein Programm nicht im RAM steht sondern irgendwo in einem "schlechter" zugänglichen Adressbereich auf den der AVR nicht mit dem vollen Takt zugreifen kann ? Ich hoffe mir kann jemand helfen. Gruß Holger