AVR UART problem
AVR UART problem
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
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
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...
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...
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.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
kalibrering av RC osc
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
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
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.
AVR:en kommer att sända rapparkalja tills Osccal närmar sig det rätta värdet.
Kod: Markera allt
$regfile="m16def.dat"
$crystal = 1000000
$baud = 9600
Dim A As Byte
For A = 0 To 255
Osccal = A
Print A
Next
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?
Provade exempelkoden ovan med oscal men fick ingen signal till hyperterminalen alls.
Ideer?
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
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
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
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
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