Programmeren van een andere atmega8 op 1 MHZ interne RC-oscillator met Arduino IDE

Ik wil code schrijven voor een andere atmega8 die draait op 1 MHz interne RC-oscillator met behulp van de Arduino IDE en zijn bibliotheken. Ik heb een ISP-programmeur om de code te branden. Wat zijn de dingen waar ik om moet geven? Hoe kan ik de code voor 1 MHz in plaats van 16 MHz samenstellen?

4
toegevoegd de auteur T.E.D., de bron
Ik wil duidelijkheid scheppen over de problemen die ontstaan ​​door de verandering in de frequentie ...
toegevoegd de auteur 0xakhil, de bron

2 antwoord

U zou een nieuwe hardwareconfiguratie moeten toevoegen. Hier wordt de procedure uitgelegd voor een ATMega328: http://arduino.cc/en/Tutorial/ArduinoToBreadboard maar je zou de voorbeeld hardware configuratie moeten aanpassen of misschien zul je een werkende vinden.

1
toegevoegd

Het hangt in het bijzonder af van welke compiler/bibliotheek je gebruikt om de AVR-code te schrijven, maar in het algemeen, zolang je de code compileert met de juiste preprocessor-macro's #define 'd voor de CPU-snelheid, je zou goed moeten zijn om te gaan.

Bijvoorbeeld, in de avr-libc documentatie , de vertragingsfuncties en UART baud rates vertrouwen op de definitie van de F_CPU macro. De juiste manier om de CPU-snelheid in een dergelijk geval in te stellen is:

#define F_CPU 1000000UL    //1 MHz, 16MHz is 16000000UL
#include     //Delay functions library, delay values based on F_CPU.
#include   //Automatically sets UART baud rate registers based on F_CPU.

Ik heb ook het gebruik van #define FOSC genoteerd om de CPU-snelheid in sommige architecturen/bibliotheken in te stellen (op dezelfde manier als hierboven, dus je zou ook kunnen volgen met #define FOSC F_CPU ). Houd er daarom rekening mee dat de specifieke macro die u moet definiëren/opnieuw definieert, kan verschillen.


Als u een geïntegreerde ontwikkelomgeving gebruikt, kan het instellen van de klokfrequentie in uw projectinstellingen automatisch de bovenstaande variabelen definiëren tijdens het compileren. In dat geval hoeven er geen instellingen in de code te worden gemaakt, tenzij uw code de verkeerde preprocessormacro (of hardgecodeerde waarde) gebruikt voor de processorfrequentie. Om zeker te zijn, zou ik nogmaals controleren welke macro wordt ingesteld door de IDE en ervoor zorgen dat uw code de juiste waarden gebruikt.

0
toegevoegd