Atmega 16 loopt nog maar op max 4Mhz

Op 14 januari 2015 18:47:57 schreef mbbneon:
Maak eens een lus die de status van een pin togglet. Geen delays, geen debugging statements, alleen maar pin=!pin; Daarmee sluit je eventuele configuratie problemen in je software omgeving uit.

Dan togglet hij op 400Khz:

Dus zou de 'C' regel
PORTA = ~PORTA;
vijf klok cycles duren.

Dus zou de 'C' regel
PORTA = ~PORTA;
vijf klok cycles duren.

Nee, de "while (1)" kost ook tijd. Ik zou gokken 2 voor de "go back to the beginning" en 3 voor de porta inverteren (read/modify/write).

code:

.L3:
        in r24,0x5
        com r24
        out 0x5,r24
        rjmp .L3

(ik heb PORTB gebruikt omdat de ATMEGA168 geen porta heeft.) Vorige keer verzon de compiler om een loop-unroll te doen. Dan doe je dus 2x de "werk" instructies voordat je 1x de rjmp tegenkomt. Dan kost het dus 2x3+2 = 8 clocks voor 2 toggles inplaats van 10. In het onderhavige geval wordt je golfvormpje asymmetrisch.

P.S. Iedere instructie 1 clock, behalve de jump, die is twee.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik heb een paar nieuwe Atmega's besteld. Als ik die binnen heb dan laat ik nog weten of die het inderdaad wel goed doen op alle frequenties. Voorlopig kan ik op 4Mhz gewoon verder met m'n project.

Allemaal bedankt voor het meedenken en de adviezen. Toch weer e.e.a. geleerd.

Zit in die chip niet een register met calibratie bits om de interne RC oscillator af te regelen?

Is die misschien gewist waardoor het nu brak is?

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Zet de brown-out eens aan op 4V oid, blijft ie lopen? Misschien zit er intern wel iets niet goed met de voeding. En Aref mag je geloof ik niet zomaar op VCC aansluiten, hangt die los?

En inderdaad OSCcal registers eens uitlezen, waarde opschrijven en dan midden in het bereik zetten kan ook nog helpen.

Kom eens langs bij RevSpace of één van de andere spaces!

Op 15 januari 2015 00:20:53 schreef henri62:
Zit in die chip niet een register met calibratie bits om de interne RC oscillator af te regelen?

Is die misschien gewist waardoor het nu brak is?

Eerlijk gezegd niet naar gekeken. De problemen begonnen toen hij (niet meer) op een 16Mhz kristal liep. Ik gebruik nu de interne 4Mhz oscillator maar omdat dat de enige klok is waar hij nog op loopt.

Zouden die kalibratie bits invloed kunnen hebben wanneer je een kristal gebruikt? Als je denkt dat dat mogelijk is dan wil ik dat nog wel proberen. Maar op 4Mhz loopt ie prima, dus tot de nieuwe binnen is doe ik het zo.

Nee, de oscal bits hebben geen invloed op de externe klok. Dus dat zou het niet moeten zijn.

AREF mag je best op VCC aansluiten. Maar dan is het niet aan te raden om in software "internal 1.1V" te selecteren. (anderzijds, het datasheet raad een 100nF condensator aan op AREF, die wordt tot 1.1V opgeladen door de interne referentie als je die selecteert en tot 5V als je "VCC" als referentie selecteert. Maar wat Atmel er niet bij verteld is dat de interne referentie echt 3-4 conversies nodig heeft om 100nF tot 1.1V te ontladen.... (Of de stroom die daar getrokken wordt door de ADC getrokken wordt, of dat de analoge referentie ook kan sinken weet ik niet!)

AVCC mag ook direct op VCC aangesloten worden, maar dan is zoals te verwachten valt, je digitale ruis wat te horen op de analoge metingen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

De nieuwe zijn binnen en lopen prima op 'n 16Mhz kristal. Ik heb nog een laatste poging gewaagd door nogmaals de 0x99E1 fuses te zetten maar wederom hetzelfde: 4Mhz is de maximum snelheid.

Probleem is opgelost: vervangen. Nogmaals dank voor alle reakties.