Gibberish

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Arild
Inlägg: 39
Blev medlem: 30 mars 2005, 13:12:02

Gibberish

Inlägg av Arild »

Jag har en ATmega8 på ett STK500. Textsrängen som m8:an skickar ut fungerar ibland och ibland blir det bara en massa konstiga tecken. Vad beror detta på, behöver jag ändra ngn inställning för att få det att fungera varje gång? (Använder Bray)
Använder interna oscillatorn (1MHz) och Baudrate = 2400
Behöver jag konfigurera om COM-porten på datorn?
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Utan att vet mer är det svårt att gissa, men

Inlägg av bengt-re »

ibland måste man lägga till en extra stopbit eller sänka sändningstakten med oförändrad baudrate för att mottagaren skall hinna processa tecknet innan nästa kommer. Pröva det samt det vanliga.. Kablar, lödningar, EMI, dåliga jordar....
henkebenke
Inlägg: 515
Blev medlem: 31 maj 2003, 10:42:37
Ort: Helsingborg

Inlägg av henkebenke »

Iofs kör du med ganska låg baudrate men den interna oscillatorn kan avvika en del. Vet dock inte om det kan bli problem vid så låga hastigheter.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Mmm..

Inlägg av bengt-re »

Men har man ingen buffer så måste uP processa datat på 1/2400 dels sekund för att vara redo innan nästa startbit kommer och 1MHz i klockfrekvens är lågt. Så jag tror att den inte hinner klart och sen tolkar den någon bit i nästa tecken som startbit och då blir det fel. Testa som sagt att lägga in en delay mellan varje tecken 1ms räcker säkert om det är på gränsen till att fungera utan.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Fast det var väl uC som skickade till PC?

Och den har väl hårdvaru-UART hur som helst, så det finns en buffer på minst ett tecken.

Jag kan inte mycket om Atmel-chip, men om den interna oscillatorn går lite fel så påverkar det lika mycket oberoende av bitrate. För mycket fel och sista databiten hamnar så snett att det inte tas emot korrekt.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Vad har du UBRR på?

Den interna oscillatorn har en tendens att avvika en del. Prova med en extern om du har möjlighet.
Arild
Inlägg: 39
Blev medlem: 30 mars 2005, 13:12:02

Inlägg av Arild »

Jag kör med UBRR = 25 (0x19)
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Oki, såg det nu...

Inlägg av bengt-re »

Hmmm.. Har du oscilloscope ? Isf ta och kolla längden på meddelandet, har du ett bra scop så kan man mäta meddeladelängden noggrant och diffar det mer än några procent så kommer det att bli fel tyvärr. Testa om inte annat att skriva ett program som matar ut omväxlande höga och låga signaler. Vet du hur många klockcykler varje instruktion tar så jag du nu kontrollera din klockfrekvens eller om det går ställa din uP så att den matar ut klocka. Problemet är att man inte kan mäta klockfrekvensen på kristallen då proben påverkar mätningen eller i värsta fall stannar resonatorn. Visar det sig att din klockfrekens är lite fel så går det att justera den med liten konding så sjunker frekvensen. Är den för låg vet jag inte vad man hittar på?!
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Jag har också haft samma problem som du har. Lösningen är att kalibrera den interna oscillatorn.

Kod: Markera allt

 Bascom:

$crystal = 8000000
$baud = 9600
$regfile = "m16def.dat"
Dim I As Byte
Config Portd = Output


For I = 1 To 255 Step 10
Osccal = I
Set Portd.6
Waitms 200
Print "Hello world: " ; I
Reset Portd.6
Waitms 200
Next
använd en liknande kod och notera I värdet, sen är det bara att sätta Osccal lika med I värdet.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

sicket fusk..

Inlägg av bengt-re »

Går det att trimma resonatorn mjukvarumässigt ? Öhh...
Användarvisningsbild
Hedis
Inlägg: 2493
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Inlägg av Hedis »

Man kan justera kalibreringen ja. Dock irriterande för dom som råkat pilla på den utan att anteckna fabriksinställningen. :)
Dags att lägga ner PIC och hoppa på AVR tåget? :D
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Tja, det går ju att trimma oscillatorn i PIC också (OSCCAL-registret).

Tror den är specad inom 3% över normal temperatur och spänning, så det ska inte krävas någon egen kalibrering där för att köra UART :wink:
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Ja, men bara om man kör med intern

Inlägg av bengt-re »

klocka... Och den är ju inte så rolig. Kanske är jag gammalmodig, men jag kör alltid med resonator så kan man dels få högre fart (4MHz bara på den interna om jag inte är ute och cyklar) och man kan även sätta dit en lååångsan om man vill spara ström, 18f har ju möjlighet till två klockor - vissa modeller iaf

EDit
fast grundorsaken är ändå att man alltid VET hur fort den går. Även billiga resonatorer är rejält noggranna
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

8MHz intern osc på de nyare, även 16F. Och ner till 32kHz i ett antal steg... Även byte mellan intern och extern oscillator (t.ex. övergång till intern om den externa slutar fungera).
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

*ler*

Inlägg av bengt-re »

Då lärde man sig något nytt då.. Som jag säger, jag är väl en aning trångsynt, kanske borde man utnyttja det oftare, men på det lite större så sitter ju pinnarna där och går inte ha tillnågot annat, värre på 12f serien där man loosar portar om man kör med resonator.. Men till den lusläste jag databladet tyckte jag och hittade inget sätt att få den snabbare än dryga 4MHz, men det skiljer sig säkert mellan modellerna. 12f är ju efterföljare till gamla 10f serien och det är ingen ny serie direkt, över 10 år sedan de kom.
Skriv svar