ATMEGA328p en externe clock

Anoniem

Hi,

VOor een project heb ik op de 328p een externe clock nodig. Heb gemerkt dat oneWire niet goed werkt met de interne clock.

Voor de externe clock gebruik ik een 8Mhz crystal en 2x 22pF. Deze aangesloten op poort 9 en 10. De caps aangesloten op de GND.
Enige wat nog rest is de fuses. Voor gebruik van de externe clock moet lfuse gewijzigd worden van 0x62 naar 0x60 (zie ook http://www.engbedded.com/fusecalc/)

Middels een avrprogrammer de fuses in de chip geschoten (h en e fuses bleven gelijk). Dit ging foutloos.

Nu zit ik met een gebrickte 328p en kan dus niet meer benaderen. Terugzetten van fuses is niet meer mogelijk omdat de programmer de chip niet meer kan uitlezen. Wellicht dat dit met een High Voltage Programmer weer is recht te zetten.

Maar mijn vraag: Waar gaat dit fout? Voor het gebruik maken van een ex osc is toch alleen maar toevoegen van crystal op 9/10, paar caps en wijzigen van fuse nodig? Of heb ik wat gemist??

Thanks
Willem

Als het ding op "extclock" staat maar het niet werkt dan kan je een externe clock op XTAL-IN aanbieden. Het maakt niet veel uit hoe de frequentie is.

Een bron van een "externe clock" is bijvoorbeeld de XTAL-OUT van een andere atmel. Maar als je een "toggle pin, zo snel je kan" programma schrijft dan kan je ook een gewone GPIO van een andre atmel gebruiken.

ik schreef:

code:


void toggle_fast (void)
{
 while (1)
   PINB = 4;
}

en was van plan om de assembly verder te optimaliseren... Maar de compiler maakt redelijk optimale code. Dit maakt FCLK/4, terwijl ik FCLK/6 van plan was....

Over de hardware: ik vind 22pF wat veel. Als je iets minder kan vinden, dan kan je dat nog proberen. Je kan zelfs 1 van de 22pF condensatoren weghalen en kijken of het dan werkt. Ik denk dat je het meeste kans maakt om die op de ingang weg te halen. Maar als het niet werkt, probeer de andere.

Het kan best dat er "22pF" in het datasheet van het kristal staat, maar dat in inbegrepen de capaciteit van de print (+/-5 als je niet beter weet en een nette print hebt gemaakt met korte baantjes hebt gebruikt) en de pin (ook 5?)

[Bericht gewijzigd door rew op zaterdag 25 april 2020 12:41:44 (30%)

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

Low Fuse = 0x60? Daarmee wordt CKSEL = 0000.
En dat betekent externe klok. Dan moet je een externe oscillator hebben en doorverbinden naar Xtal-1.

Als je een kristal wilt gebruiken op de interne oscillator dan moet je CKSEL op 0110 zetten. Je Low fuse wordt dan 0x66.

En inderdaad, zoals rew al zei, kun je je processor ontbrikken door een externe oscillator te koppelen tijdens programmeren.

Anoniem

Op 25 april 2020 13:20:53 schreef deKees:
Low Fuse = 0x60? Daarmee wordt CKSEL = 0000.
En dat betekent externe klok. Dan moet je een externe oscillator hebben en doorverbinden naar Xtal-1.

Als je een kristal wilt gebruiken op de interne oscillator dan moet je CKSEL op 0110 zetten. Je Low fuse wordt dan 0x66.

Aiiiii ja idd, misser. 0x66 werkt beter.

Op 25 april 2020 12:38:18 schreef rew:
Als het ding op "extclock" staat maar het niet werkt dan kan je een externe clock op XTAL-IN aanbieden. Het maakt niet veel uit hoe de frequentie is.

Ja dit werkte. Heb weer een werkende chip.

Alleen mijn intiele probleem is daarmee nog niet opgelost. oneWire en seriele output willen nog niet. Op een Pro Mini met same specs fluitend (3.3v en 8Mhz).
We zoeken verder.

Thanks.

Misschien is hij te traag? Loopt nu op 1 MHz tgv DIV8 fuse.
Voor 8MHz moet de fuse naar 0xE6

Anoniem

Op 25 april 2020 21:54:50 schreef deKees:
Misschien is hij te traag? Loopt nu op 1 MHz tgv DIV8 fuse.
Voor 8MHz moet de fuse naar 0xE6

Dat bleek het dus te zijn.

Bijna een week lopen zoeken. Uiteindelijk dus een DIV8 fuse setting .....
Nouja zo leert men weer wat.

[Bericht gewijzigd door Anoniem op zaterdag 25 april 2020 22:03:29 (20%)

Ja, je moet alles in de gaten houden, en zoiets zie je gemakkelijk over het hoofd. :?

Arco

Special Member

Wel erg onhandig opgezet dat zo'n avr een clocksource nodig heeft om (her)geprogrammeerd te kunnen worden...
Bij pics levert de programmer de benodigde clock...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

AVRs worden standaard geleverd met interne RC oscillator ingeschakeld en prescaler op 8. Dan loopt die op 1 MHz en kan direct geprogrammeerd worden.

Maar TS had per ongeluk de oscillator uitgezet, en dan wordt het lastig.

Arco

Special Member

Ze hadden in programmeer modus altijd naar de interne oscillator moeten schakelen of een externe clock gebruiken.
(en dat niet van de gebruiker af laten afhangen...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Anoniem

Op 25 april 2020 22:43:03 schreef deKees:
Maar TS had per ongeluk de oscillator uitgezet, en dan wordt het lastig.

het was bewust, maar had minder ver gekeken dan mijn neus lang was en voor externe osc gekozen ipv het crystal.

De BME280 (I2C), RFM69 (SPI) hebben geen probleem met de interne 1Mhz, blijkbaar is de clock in dat signaal voldoende. De UART en oneWire heeft wel problemen met 1Mhz en werken niet.

De UART doet het wel, maar de baudrate wordt een factor 8 lager. Dan moet de andere kant ook lager.

Dat zal bij de oneWire ook wel zo zijn.

Anoniem

Op 25 april 2020 23:27:48 schreef deKees:
De UART doet het wel, maar de baudrate wordt een factor 8 lager. Dan moet de andere kant ook lager.

Dat zal bij de oneWire ook wel zo zijn.

Ah heb 1200 niet geprobeerd. Zal het eens testen.
Wellicht dat naar 1Mhz-clock prog wel werkt....

Op 25 april 2020 22:38:25 schreef Arco:
Wel erg onhandig opgezet dat zo'n avr een clocksource nodig heeft om (her)geprogrammeerd te kunnen worden...

Mee eens.

Het AVR ontwerp is 100% synchroon. Alle externe inputs beginnen met twee flipflops om de boel met de klok te synchroniseren....

Prima filosofie maar te ver doorgevoerd als SPI en ICSP dan dit soort verschijnselen krijgen.

Hey... ICSP werkt dus met de reset lijn "Laag, Actief". Dan zou je ook verwachten dat "interne oscilator", of "kristal oscilator" in reset/inactief gehouden wordt. Maar dat is dus duidelijk niet het geval.

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

Tja, inderdaad. Dit is een probleem waar iedereen wel eens tegenaan loopt. En als je het eenmaal weet dan hou je er rekening mee en dan valt er wel mee te leven.

Ik heb de PICs de deur uit gemikt toen ik er achterkwam dat er pins waren die onverwachts uitsluitend "open drain" blijken te zijn, of "alleen input".

Maar goed. Ik gebruik nu STM32 en dan zijn er PB2 en PB4 die niet zomaar overal gebruikt voor kunnen worden. Op de juiste manier een ledje aansluiten is prima. Maar GPIO inputs is zeker niet handig.

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

Special Member

Je praat nu over oude pics van vorige eeuw/begin deze eeuw... ;)
Alle pics hebben 1 input-only: de MCLR pin (dus daar is niks 'onverwachts' aan)

Bij moderne pics kun je per pin instellen of die push-pull, OD, of input moet zijn.
Bij input kun je instellen of dat TTL of S/T moet zijn.
Je kunt ook de slew-rate instellen, en pull-up of pull-down aan de pin...

Daarbij kun je bijna alle peripherals routen naar bijna alle pins (Vcc en Vss, mclr e.d. uiteraand niet)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 26 april 2020 12:00:58 schreef Arco:
Je praat nu over oude pics van vorige eeuw/begin deze eeuw... ;)

Dat kan best. Voor mij was toen de maat vol. Is inderdaad een tijd geleden. :)

Die "alleen opendrain" pin had geen protectie diode naar VCC. Daar kon je beperkt iets hogere spanningen mee schakelen dan de VCC. Dat kan handig zijn als je net 1 dingetje, paar mA 12V moet schakelen.

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