Sida 1 av 2
USART Atmega88 problem
Postat: 11 oktober 2006, 00:36:35
av Nisse
Har en Atmega88a uppkopplad för att labba lite och lära mig om dess USART. Körde först med interna RC-oscillatorn och det gick skapligt efter lite trimmande av OSCAL. Plockade dit en 8 MHz-kristall och körde med den utan större problem. Roade mig med att prova olika baud-rate osv, allt för att exprimentera lite. Någon dag senare (idag) så tänkte jag utveckla det hela lite, men när jag kopplar in spänning så funkar det inte alls längre. Va tusan?? En mätning på PD0/RXD ger följnade:
Det är .1 V per ruta och DC-läge. Det är rätt data som syns och ändrar jag i programmet så ändrar sig även seriedatat.
Men varför driver den inte ordentligt längre?
Böt till en annan Atmega88 med samma resultat.
Tips mottages tacksamt.
Mvh
Nils
Postat: 11 oktober 2006, 01:13:07
av $tiff
Är proberna (fortfarande) rätt kalibrerade?
Har du ändrat på din last (MAX233-liknande krets?)?
Postat: 11 oktober 2006, 01:26:47
av Nisse
Proberna funkar, har kollat mot annat.
Vid mätning var utgången helt utan last, dvs. max232 bortkopplad.
Har jag helt enkelt pajjat mina Mega88or? Skumt att det först funkar och sedan funkar ingen av de två, inte ens den nya jag tog fram.
mvh
Nils
Postat: 11 oktober 2006, 09:15:18
av björn
glappkontakt? Någon ändring i koden som kan jäklas? är portarna rätt konfigurerade?
Ja, jag vet att det har funkat innan men något måste ha förändrats (atmegan är rätt tålig och jag har svårt för att tro att dom är sönder).
Postat: 11 oktober 2006, 10:32:50
av Nisse
Det sista jag gjorde i går natt var att flytta hela klabbet till en annan del av labbdäcket. Detta gjorde jag just för att jag funderade kring glappkontakt. Tyvärr så löste inte heller det problemet.
Programmet är så vitt jag vet inte ändrat. Kan posta koden ikväll, den är kort och det skadar inte att få några ögon till på den eftersom jag är ny på AVR.
Skummast av allt är ju att det kommer negativa flanker.
Mvh
Nils
Postat: 11 oktober 2006, 11:42:31
av Icecap
Du har en glappkontakt med kapacitiv överföring! Typisk bild på detta, belaster du med ett motstånd kommer det att vara riktiga spikar.
Alternativt ett GND-problem.
Postat: 11 oktober 2006, 12:59:10
av Nisse
Får lov att göra om hela uppkopplingen en gång till då med andra ord. Tack för tipset.
Mvh
Nisse
Postat: 11 oktober 2006, 18:28:07
av Nisse
Nu är allt uppkopplat på nytt. Tyvärr med samma resultat.
Här är i alla fall koden jag använder om det nu skulle visa sig vara något där som spökar.
Kod: Markera allt
.include "m88def.inc"
; initialise Stack Pointer
reset:
ldi r16, low(RAMEND)
out SPL, r16
;--------------------------
; USART init
;--------------------------
;set baudrate
ldi r16, (0<<U2X0)
sts UCSR0A, r16
ldi r17, 51 ; 51 Ger 9600 Baud vid 8 MHz
sts UBRR0L, r17
;enable transmitter
ldi r16, (1<<TXEN0)
sts UCSR0B, r16
;set frame format 8n1
ldi r16, (1<<UCSZ00)|(1<<UCSZ01)
sts UCSR0C, r16
;--------------------------
; Transmitt
;--------------------------
tx_uart:
ldi r16, 55
lds r17, UCSR0A
sbrs r17, UDRE0
rjmp tx_uart
sts UDR0, r16
rjmp tx_uart
Postat: 11 oktober 2006, 19:02:52
av Icecap
Har du satt ditt scope till DC-ingång? Det bild är arketypen av att mäta ett DC-signal med AC-inställning, det har INGET med program att göra.
Postat: 11 oktober 2006, 19:06:57
av Nisse
Från första inlägget:
"Det är .1 V per ruta och DC-läge."
Jag trodde inte heller det var ett programfel, men vad gör man inte när man är desperat.
Men skam den som ger sig, kopplade om alltihop ytterligare en gång på labdäcket
och nu funkar det
Jag vet inte varför eller hur, och just nu bryr jag mig inte heller.
Tack till alla som svarat för er tid.
Mvh
Nils
Postat: 11 oktober 2006, 20:02:22
av sodjan
> Jag vet inte varför eller hur, och just nu bryr jag mig inte heller.
Antagligen ett misstag, du skulle lära dig mest på att ta reda på det...
Postat: 11 oktober 2006, 20:33:59
av Pjoms
Håller med Sodjan, fel som "kommer och går av sig själv" är bland det elakaste som finns! Jag skulle inte lita på nå't runt mitt labbdäck innan jag rotat reda på vad som var orsaken.
Jag tror också att flera här skulle uppskatta att få reda på vad som var/är galet. Det kan om inte annat hjälpa andra...
Postat: 11 oktober 2006, 21:03:27
av Nisse
-> Jag vet inte varför eller hur, och just nu bryr jag mig inte heller.
Nu skall jag göra det jag tänkte göra när felet hindrade mig. Men självklart kommer jag att fundera över vad problemet var och om det går att återskapa.
Mvh
Nils
Postat: 19 oktober 2006, 11:26:10
av Nisse
Sådär, då var jag klar med det jag skulle göra när felet hindrade mig.
Nu har jag även hittat vad som var fel tidigare. Det var den mänskliga faktorn, som så ofta
Jag kopplade in och mätte på RX istället för på TX
Lite kul fenomen att man ser det som skickas på TX-pinnen även på RX-pinnen.
Mvh
Nisse
Postat: 19 oktober 2006, 11:54:05
av sodjan
Har du *ordentligt* med avkoppling på MAX232'an ?
Minst 1uF mellan 5V och gnd.
> det som skickas på TX-pinnen även på RX-pinnen.
Tja, av försat osc-bilden i första inlägget ser det ju ut att vara bara
0.1-0.2 V, så "det som skickas" är det ju inte. Mer som en överhörning
eller störning via matningen.
Slutligen är det naturligtsivs synd att så mycket tid och intresse ska behöva
läggas på en prob som hålls mot fel pinne ! En eloge dock för att
du talade om det...
