ATMega32 Frekvens

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hej med jer.

Jeg har lidt problemer med at få min ATMega32 til at køre 16Mhz
Den sidder på et hulprint. (egen konstruktion)
Når jeg sætter den til at køre intern clock kører den fint (op til 8Mhz).
Når jeg så sætter fuses via AVR Studio 4 til at køre på ext. krystal går det
galt. Jeg tror den går helt i stå.
Ihvertfalt sker der intet. Men hvis jeg så sætter den tilbage til intern
virker det fint igen.
Krystallet er koplet til gnd via to 12pF kondensatorer.
Nogen der har en ide om hvad der er sket ?

(Og hvis nogen kender noget til interruptprogrammering af uart'en må de også
gerne sige til.)

Mvh
René






Re: ATMega32 Frekvens
Jeg har sidst brugt 22pF (ved 7MHz på ATMEGA162). Måske bruger du for lidt.
Husk kort afstand på netop dette kredsløb.

Mine FUSES er FB CC FD, hvor du nok kan have FF som den sidste (LOW), altså
langsom opstart


Her er min interrupt opstart af uart (i Pascal)
  //UART0 GPS, 9600
  _UBRR0L:47%; //7.3728 /9600 /16 -1
  _UCSR0B:=__RXCIE0 or __RXEN0 or __TXEN0;
  _UCSR0C:=__URSEL0 or __UCSZ00 or __UCSZ01;

  //UART1 GSM, 115200
  _UBRR1L:=3; //7.3728 /115200 /16 -1
  _UCSR1B:=__RXCIE1 or __RXEN1 or __TXEN1;
  _UCSR1C:=__URSEL0 or __UCSZ00 or __UCSZ01;

Vektorerne skal så sættes, og interupt rutinen skal gemme alt, osv
Jeg har altid en led, som jeg kan aktivere (blinke), som en simpel test i fx
interupt rutiner. Bruger også tit at skrive ud noget debug tekst på en anden
port (direkte, uden interrupt eller noget)

Christen Fihl



Re: ATMega32 Frekvens
Quoted text here. Click to load it
Jeg vil prøve at finde nogle 22pF og udskifte dem. Jeg synes selv at det
sidder så tæt på AVR'en som jeg kan komme til, Men det er jo som det er med
hulprint, at man af og til er begrænset lidt af hvordan banerne ligger.
Måske jeg skulle lave det med et rigtigt print, og så lave forbindelserne
til omverdenen på en eller anden flexibel måde.

Vedrørende mit UART-"sjov" så har jeg prøvet bare at lave en løkke (altså
uden interrupt) der virker som "echo" og den sender af og til nogle
mærkelige ting tilbage.
Hvis jeg ellers bare sætter den til at sende den samme tekst hele tiden,
virker det godt, så noget tyder på at der er noget galt i modtagelsen.





Re: ATMega32 Frekvens
22pF er des samme som 2 i parallel af de 10pF du allerede har (sikkert flere
af)



Re: ATMega32 Frekvens
Quoted text here. Click to load it


Jeg kan da ikke lige huske, men er det den samme register, der benyttes til
læsning som til skrivning?? Det tror jeg ikke

Christen




Re: ATMega32 Frekvens
Det trækker jeg så tilbage, det er samme register UDR

Såå...


Kommer der nøjagtig 1 tegn, når du trykker på HyperTerm?

Er det altid det samme snavs for samme input? (andet for andet input?)




Re: ATMega32 Frekvens
Quoted text here. Click to load it
ja det er altid et tegn (så vidt jeg kan se...), og i ~70% er det det samme
tegn, ved samme input (Dog med forbehold)
Det kunne tyde på nogle bit der går galt et sted ? Som sagt, så har jeg
kigget mit max232 kredsløb igennem, og ikke fundet nogen fejl der. (Synes
jeg...)
Der er +/- 10V på kredsen der hvor der skal være det.

Mvh
René




Re: ATMega32 Frekvens

Quoted text here. Click to load it

Hvilken frekvens kører din AVR ved? Hvad er din baud rate divider sat til?
Har du et scop, så du kan se om du sender med den baud rate du tror du
sender med? Det tyder på, at du sender lidt for hurtigt/langsomt.

//michael

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail /

Re: ATMega32 Frekvens
Quoted text here. Click to load it
Hej Michael

Jeg har desværre ikke noget scop. Det kunne ellers have været rigtigt rart
nu.
Min AVR kører 16MHz med externt X-tal. Min divider er sat til 51. Måske den
skal "finjusteres"
Det er den de foreslår i "manualen" hvis man kører 19200 baud.
Og det er jo som sagt ved modtagelsen i avr'en det går galt. Men det er
måske fordi PC'en er mere tolerent over for "hastighedsfejl".

Jeg har også prøvet at skrue hastigheden ned og op, men med samme fejl.

Mvh
René




Re: ATMega32 Frekvens

Quoted text here. Click to load it

Jeg havde for nylig et problem med at få 115k2 til at køre med en 16 MHz
crystal. Løsningen for mig blev at bruge et 7372800 Hz krystal istedet.
Prøv om du ikke kan finde et tilsvarende krystal, der er et multiplum
af 19k2, fx 18432000 Hz.

//michael

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail /

Re: ATMega32 Frekvens

Quoted text here. Click to load it
Ja det var måske et mulighed. Jeg har lige regnet på det og med en divider
på 51, vil det give 19.231b. og er altså en forskel på <0.2%

Jeg kan se i tabellen i databladet at med et 1843200hz krystal bliver fejlen
= 0% for alle hastigheder op til 250k
Jeg må se om jeg kan lure sådan et krystal et sted.
På forhånd tak.
//René




Re: ATMega32 Frekvens
Quoted text here. Click to load it

En fejl på 0.2% er ikke et problem, for der resynkroniseres hver gang
der er en flanke i signalet.

Din fejl må ligge et andet sted,

Bo //

Re: ATMega32 Frekvens
Quoted text here. Click to load it
Ja men hvor ? :o)
Det er jo asynkron kommunikation og Hyperterminal er sat til flow styring:
ingen

Mit program:
#include <avr/io.h>
int main (void)
{
   char ReceivedByte;

   UCSRB |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and
reception circuitry
   UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit
character sizes

   UBRRL = 0x33; // Load lower 8-bits of the baud rate value into the low
byte of the UBRR register
   UBRRH = 0x00; // Load upper 8-bits of the baud rate value into the high
byte of the UBRR register

   for (;;) // Loop forever
   {
      while (!(UCSRA & (1 << RXC)) ) {}; // Do nothing until data have been
recieved and is ready to be read from UDR
      ReceivedByte = UDR; // Fetch the recieved byte value into the variable
"ByteReceived"

      while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is
ready for more data to be written to it
      UDR = ReceivedByte; //ReceivedByte; // Echo back the received byte
back to the computer
      while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is
ready for more data to be written to it
      UDR = 0x41; // Just echo an "A" in between.
   }
}

Mvh
René




Re: ATMega32 Frekvens
Quoted text here. Click to load it

Jeg er ikke programmør...

Bo //


Re: ATMega32 Frekvens
18MHz er vel meget for en 16MHz kreds, men ikke umulig.
Kan dobbelt af 7.372800 ikke være nok?

Kan du ikke komme med nogle eksempler på hvad du får ind (i hex), når du
trykker A, @, ALT-127 (masser af bits), mellemrum, kun 1 bit.

Christen Fihl



Re: ATMega32 Frekvens

Quoted text here. Click to load it
Jeg kan da prøve at se om jeg kan smide værdierne ud på mit display ...

René





Re: ATMega32 Frekvens

Quoted text here. Click to load it
Nå værdierne er typisk 0xFD, 0xFE, og 0xFF..altså noget med mange
1-taller.....
kan det være støj der kommer ind ?

René




Re: ATMega32 Frekvens
Quoted text here. Click to load it
Nu gennemgik jeg så alle forbindelserne en ekstra gang.. og.. ja det her er
MEGET pinligt, kiggede på forbindelserne på mit stik.. Af en eller anden
årsag(fejl i de diagrammer jeg har haft kigget i) stod gnd til at gå på pin
1 på et 9polet subd. det er jo pin 5..
tsk tsk.. Nå men nu kører skidtet som det skal ;) tak for hjælpen alle
mand.!!
Mærkeligt at den har kunnet sende til mig uden problemer.

Mvh
René




Re: ATMega32 Frekvens
Say no more, say no more

http://www.youtube.com/watch?v=jT3_UCm1A5I


:-)  Christen



Re: ATMega32 Frekvens

Quoted text here. Click to load it
Det værste var også at jeg i starten havde txd og rxd på 3&4 .. (Også vist i
diagrammet..)




Site Timeline