AVR UART problem

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Isoz
Inlägg: 37
Blev medlem: 22 september 2004, 18:45:54

AVR UART problem

Inlägg av Isoz »

Hej
här kommer en liten kul nöt att knäcka.....
Jag får
10 6D 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 03 10 82 02 10 03
vid läsning med dator (via STK 500ans fria serie port)
och
10 5B 20 00 00 00 00 00 00 00 00 34 10 30 10 E0
om jag låter en Atmega 88 läsa in den på serie porten och sedan skicka ut den på samma serieport...(har RX mot en GPS och Tx mot STK 500ans lediga serie port. (Borde få exakt samma sträng)

Om jag ställer in Hyperterminalen och kopplar in AVR'n där så får jag korrekt (skickat 'A' returneras som ett 'A')
Är det någon som har något förslag på fel?

Sitter med Atmega88 och Lassen LP GPS mottagare.
Har provat både med Interrupt styrd mottagning och en icke interrrupptbaserad

Tack på förhand
/Isoz
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Vet inte vad du menar med "läsning med dator (via STK 500ans fria serie port)" men rent spontant känns det som om någon inställning i Atmega 88 gör att den inte kör med rätt baudrate.
Har du programmerat prescalers etc rätt?
Man kan ju nämligen ana att den första sekvensen 10 6D 03 ... blivit ihoptryckt ca 60 % och blir då 10 5B 20 ... pga av att serie signalen "samplas" felaktigt pga fel baudrate...
Radiohead
Inlägg: 450
Blev medlem: 18 mars 2006, 17:11:02

Inlägg av Radiohead »

Detta problem har jag haft med AVR:en. Använder du intern RC-oscillator? Då är din tidsdelare som du anger i koden individuell för varje exemplar. Be mikrodatorn skicka ut nåt förutbestämt (som du anger i koden) till din dator och kika på det i ett oscilloskop. Se till att en etta har precis rätt längd.
bearing
Inlägg: 11674
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

0x55 är bra att skicka, för det är varannan etta och nolla.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Isoz, om du kör med RC-oscillatorn måste man sätta OSCCAL till rätt värde annars kan processorn gå fel ganska mycket.

Såg att det fanns en metod att kalibrera RC-oscillatorn via UART. Se länk. Dock behöver man nog ha satt OSCCAL till någorlunda rätt värde från början.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

kalibrering av RC osc

Inlägg av Swech »

Detta gäller gör AT Mega8535.. antar att det gäller även för 88an

Kalibreringen av RC osc läses in automatiskt och korrekt om du använder defaultfrekvensen, ATMega8535 har 1Mhz RC som default.
De övriga värdena för 2,4,8Mhz får man läsa av manuellt med t.ex. STK'n
Därefter kan man lägga in detta värde i eepromet och låta ditt program
läsa av och korrigera frekvensen.
Har själv stött på problem med uart vid RC.

Jonas / Swech Trading
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Väldigt ofta måste man kalibrera den internaoscillatorn för att kunna använda UART. När jag använder serieporten så kalibrerar jag avr:en med detta program.

Kod: Markera allt

$regfile="m16def.dat"
$crystal = 1000000
$baud = 9600

Dim A As Byte

For A = 0 To 255
Osccal = A
Print A
Next
AVR:en kommer att sända rapparkalja tills Osccal närmar sig det rätta värdet.
HMG
Inlägg: 54
Blev medlem: 29 juli 2005, 18:52:47

Inlägg av HMG »

Jag har ett liknande problem. Får bara rapparkalja när jag skriver till seriellporten. Anväder ett ftdi-chip så usb istället för seriell. Använder en avr isp mkII. Jag kan programmera och radera kretsen men kan inte verifiera.

Provade exempelkoden ovan med oscal men fick ingen signal till hyperterminalen alls.

Ideer?
Isoz
Inlägg: 37
Blev medlem: 22 september 2004, 18:45:54

Inlägg av Isoz »

Hmm många vettiga ideer är det...men om det är fel frekvens, hur kommer det sig då att den klara av att ta emot och returnera valfritt tecken mot PCn men inte när tecknet kommer ifrån GPS mottagaren...

för attt förtydliga det hela....
PC-> AVR-> PC = Helt ok
GPS->AVR->PC = Kajko
GPS->PC = Helt Ok

känns tveksamt till att det skulle vara klockan .... men jag får nog prova det (för att verkligen kunna utesluta det)

/Isoz
Gimbal
Inlägg: 8649
Blev medlem: 20 april 2005, 15:43:53

Inlägg av Gimbal »

Har du dubbelkontrollerat med oscilloskop att du verkligen har rätt pinne från GPS'n kopplad till atmegan? Det är lätt gjort att bli fintad av raka/korskopplade seriekablar.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Inlägg av Swech »

Pc'n kan tolerera mer variation i klockan hos Atmelen än vad GPS- atmel klarar... har haft samma problem.. funkade mot PC men inte mot "hemmabyggd" terminal...

Så - om du kör med STK500 ... läs av kalibreringsfaktorn för frekvensen du kör med, och lägg in i OSCCAL... detta löser alla gånger ditt problem

Jonas / Swech
Användarvisningsbild
Hedis
Inlägg: 2493
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Inlägg av Hedis »

Vilken baudrate har du ut från gps´n?
Funkar det riktigt om du kör GPS-dator, o sen kör gps-AVR->Dator med samma baudrate?
Användarvisningsbild
Stinrew
Inlägg: 954
Blev medlem: 20 augusti 2006, 03:14:41
Ort: Motala
Kontakt:

Inlägg av Stinrew »

Hur går det här egentligen? Isoz, kommer du framåt??
Radiohead
Inlägg: 450
Blev medlem: 18 mars 2006, 17:11:02

Inlägg av Radiohead »

Har det inte försvunnit en del inlägg från den här tråden? Har för mig att det visade sig vara just fel på oscillatorn.
Användarvisningsbild
Stinrew
Inlägg: 954
Blev medlem: 20 augusti 2006, 03:14:41
Ort: Motala
Kontakt:

Inlägg av Stinrew »

Jag vill också minnas att det var något med inexaktheten i den interna RC-oscillatorn.
Skriv svar