Atmega328P-AU crystal (parallel) capaciteit?

Arco

Special Member

Ondertussen overweeg ik wel om ook maar een TH versie te ontwerpen

De AD9833 bestaat alleen in MSOP10...

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

Op 8 september 2023 10:52:35 schreef rew:
@blup: Dat zeg ik ook: In de praktijk zijn ze veel beter, maar de specs zeggen: je zou rekening moeten houden met 10% afwijking.

De 4809 is gespect als max 4% afwijking over de full operating range.

Omdat de UART intern gewoon op de 20MHz klok loopt pakt ie op 250kB gewoon 80 samples van iedere bit. Intern zit een tellertje welk sample de middelste is, en die bit gaat als ontvangen bit door.
Tellertje wordt gereset op iedere flank.

Dus als je op 4 % afwijking zit, zit dat tellertje er na 9 gelijke bits er 36% naast. Minder dan 50%, dus als je signaalvorm een beetje OK is gaat dat nog goed....

Meer dan 9 gelijke opeenvolgende bits kan niet met 8 databits op de seriele poort.

Lucky Luke

Golden Member

Op 7 september 2023 11:40:35 schreef Aart:
Het is goed te realiseren dat een kristal een stukje elektromechanica is, met bijbehorende uitgebreide eigenschappen. Overigens zullen die niet allemaal relevant zijn bij een toepassing als klok voor een µC.

Naar mijn hobby-ervaring werkt "gewoon" 22p en een willekeurig 16 MHz xtal prima bij de 328, maar voor iets dat in productie gaat kan het bij een zelf uitgekozen kristal zeker geen kwaad een test in de (geïmproviseerde) klimaatkast te doen over het relevante temperatuurbereik en vooral ook het drive level te controleren.
Zeker als er nog niet veel analoge ervaring is met kristaloscillatoren.

Het heeft op mijn werk wel eens uitval gegeven, daar hebben we van geleerd.
Als energie en kosten geen beperking zijn kan ik mij goed voorstellen dat het aantrekkelijk is dit stuk ontwikkelwerk af te kopen door een compleet gespecificeerde oscillator in te kopen.

Daarbij komt dat ‘uit en weer aanzetten’ niet altijd zomaar kan.

Bij een stage van mij stonden de producten ‘in het veld’ daadwerkelijk in het veld. (Grondwaterstandmeters of iets dergelijks). Niet waar ik toen aan werkte, ik zat nog pas in mijn 2e studiejaar, maar er waren collega’s druk op zoek naar een klokprobleem. En ik leerde geïnteresseerd mee. Dat was dan geen kristaloscilator die afsloeg, maar wel een temperatuur-gerelateerd oscillatorprobleem: als ik mij juist herrinner, haalde de WDT klok als het koud of warm genoeg was het externe kristal in. Waardoor de MCU de watchdog niet meer op tijd resette/voederde, en de watchdog dus beet/de mcu resette. Dat ging ‘bijna altijd’ goed, maar door onderlinge variaties in de specificaties van de interne oscillator in sommige gevallen bij sommige temperaturen mis.

‘In het veld’ betekende dat er een mens in een busje heen moet, en mensen (al dan niet in busjes of boten) zijn duur.
Als je eenmaal weet hoe het zit is zo’n wdt klok gaat sneller lopen bij bepaalde temperaturen issue nog wel op te lossen met een ota update op een dag met gematigd weer, maar ik weet niet of ota bij de waterstandenmeters mogelijk was.

Voor de hobby kun je ook volstaan iets in de koelkast / vriezer te leggen en het daarna ‘s goed met een haarfohn te bewerken, als je geen klimaatkast hebt staan. Bij voorkeur wel de temperatuur meten.

Eluke.nl | handgetypt | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Op 8 september 2023 14:05:49 schreef blurp:
Omdat de UART intern gewoon op de 20MHz klok loopt pakt ie op 250kB gewoon 80 samples van iedere bit. Intern zit een tellertje welk sample de middelste is, en die bit gaat als ontvangen bit door.
Tellertje wordt gereset op iedere flank.

Nope.

Bij de gemiddelde U(S)ART stel je een deler in op 16x de baudrate.
Er wordt dan tot 16 geteld voor ieder bit. Als de teller dan op 8, 9 en 10 staat wordt er een bitje ingelezen. Daar wordt de meerderheid van bepaald en DAT is je bitje.

De USART van Atmel chips werkt ook zo.

De Atemel chips hebben dan nog een extra truuk die niet iedere U(S)ART kan: Je kan de tel-tot-16-per-bit veranderen in tel-tot-8. Zo kan je 2x hogere clock rates bereiken.

Zie voor dit alles datasheet ATMEGA4809 blz 285.

Wat ik niet opgezocht heb is: Bij de atmega328 is de deler een geheel getal. Bij de atmega4809 mag die 6 bitjes achter de comma hebben.

Voor 230k4 wil je dus een 3.6864 MHz klok als master klok in je USART hebben. Bij de atmega 328 moet je dan 20MHz / 5 = 4.0MHz doen. Bij de '4809 kan je door (5 + 27/64 = 5.421875) delen zodat je een baudrate van 230547 krijgt ipv 250000 zoals op de '328.

@blurp: Die 4% is al veel bruikbaarder dan 10% van de '328 (in de titel van deze thread!) Dat gaat goed mits je een "echte 230400 baud" ergens vandaan haalt. Een kant met een kristal of zo. Als je twee '4809's met mekaar wil laten babbelen dan is de max afwijking ineens 8% omdat er 1 4% te langzaam en de andere 4% te snel kan zijn. Wederom: Dat zal zeer zeldzaam zijn. Bijvoorbeeld omdat zoals Lucky Luke al aangeeft: Ze zullen wel allemaal dezelfde temperatuurafhankelijkheid hebben en b.v. vandaag zijn ze allemaal "warmer dan normaal".

[Bericht gewijzigd door rew op vrijdag 8 september 2023 15:57:38 (18%)

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

Op 8 september 2023 15:42:29 schreef rew:
[...]Nope.

Bij de gemiddelde U(S)ART stel je een deler in op 16x de baudrate.
Er wordt dan tot 16 geteld voor ieder bit. Als de teller dan op 8, 9 en 10 staat wordt er een bitje ingelezen. Daar wordt de meerderheid van bepaald en DAT is je bitje.

Dat komt praktisch op hetzelfde neer... Met "slechts" 16 samples komen ze (ongeveer) op 43, 50 en 56 % terecht. Zelfs als er eentje omgevallen is dan is de meerderheid nog goed.

Ook de Atmel-UART zal synchronizeren op flanken van de data. Moet wel, want de juiste frequentie betekend niet de juiste fase.