Problem med Atmega88 UART (löst typ)
Problem med Atmega88 UART (löst typ)
Hej, har problem med min UART, alla tecken på 0x3F och under kommer fram rätt, men skickar jag en ASCII sträng så kapas dom två översta bytesen, tex 's'(0x73) blir '3'(0x33).
Antar att detta har med att göra att jag var dum nog att använda den interna oscillatorn och att den är dåligt kalibrerad? Har skrivit ut UCSR0C registret för att kolla så det verkligen är 8bitars mode som används också.
Antar att detta har med att göra att jag var dum nog att använda den interna oscillatorn och att den är dåligt kalibrerad? Har skrivit ut UCSR0C registret för att kolla så det verkligen är 8bitars mode som används också.
Senast redigerad av Virror 28 februari 2011, 00:08:20, redigerad totalt 2 gånger.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Problem med Atmega8 UART
Mer info
Hur fort kör du?
Har du kalibrerat RC oscillatorn?
Vet du att mottagaren är korrekt?
Vet du att du verkligen blir av med biten?
Om du skickar FF vad händer?
Hur ser koden ut?
Swech
Hur fort kör du?
Har du kalibrerat RC oscillatorn?
Vet du att mottagaren är korrekt?
Vet du att du verkligen blir av med biten?
Om du skickar FF vad händer?
Hur ser koden ut?
Swech
Re: Problem med Atmega8 UART
Kom just på att jag kanske skulle skriva vilken baud jag kör : p
har testat både 9600, 4800 och 2400 med samma resultat.
Använder terminal.exe på PCn för att kolla trafiken, kör via ett FTDI chip.
Den viktiga delen av koden är här:
Kom dock på att det finns en chans att det är nått fel med datan som går till USB-chipet också...
Edit: Ska vara Atmega88
har testat både 9600, 4800 och 2400 med samma resultat.
Använder terminal.exe på PCn för att kolla trafiken, kör via ett FTDI chip.
Den viktiga delen av koden är här:
Kod: Markera allt
void USART_Init(unsigned int baud)
{
/* Set baud rate */
UBRR0 = 207;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 1stop bit */
UCSR0C = (1<<UCSZ00)|(1<<UCSZ01);
}
Kod: Markera allt
SIGNAL(TIMER1_COMPA_vect)
{
USB_Send_Byte(0x55);
USB_Send_Byte(0xAA);
USB_Send_Byte(UBRR0);
}
Kod: Markera allt
void USB_Init()
{
DDRD = (1<<6) | (1<<5);//?
DDRC = 0xFF;
}
Kod: Markera allt
void USB_Send_Byte(unsigned char data)
{
SETBIT(PORTD,6);
_NOP();
PORTC = data;
_NOP();
CLEARBIT(PORTD,6);
while(!( PIND & (1<<4)))
;
}
Kom dock på att det finns en chans att det är nått fel med datan som går till USB-chipet också...
Edit: Ska vara Atmega88
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Problem med Atmega8 UART
PortC=Data
öh?
Du skickar data 8 bitar via en port? till ett USB chip?
Vad har då baudraten på din AVR med det hela att göra?
AVR Baudrate är ju för USARTen i AVRen.
Likaså antal bitar som skickas är ju 8 eftersom du kör via en port
Swech
öh?
Du skickar data 8 bitar via en port? till ett USB chip?
Vad har då baudraten på din AVR med det hela att göra?
AVR Baudrate är ju för USARTen i AVRen.
Likaså antal bitar som skickas är ju 8 eftersom du kör via en port

Swech
Re: Problem med Atmega88 UART
Har kört ett antal AVR'er utan att någonsin kalibrera dem och bauraten har aldrig strulat. Säger inte att så inte kan vara fallet, men det låter som fel ända att börja leta i.
Re: Problem med Atmega88 UART
Jag skyller på att det är sent och en längre brist på sömn : /
Snacka om förvirrat : p
Självklart har det inget med USARTen att göra, jag vet inte vad jag tänkte.
Tror jag ska gå och lägga mig och sova : p
Måste vara nått trassel med datalinorna mellan USB-chipet och µCn.
Snacka om pinsam post från en som har universitetsutbildning på detta : )
Mer sömn, godnatt!
Snacka om förvirrat : p
Självklart har det inget med USARTen att göra, jag vet inte vad jag tänkte.
Tror jag ska gå och lägga mig och sova : p
Måste vara nått trassel med datalinorna mellan USB-chipet och µCn.
Snacka om pinsam post från en som har universitetsutbildning på detta : )
Mer sömn, godnatt!
Re: Problem med Atmega88 UART
Varför inte beskriva hur det hela är kopplat redan i *första* inlägget ?
Du slipper man alla dessa undringar och motfrågor på allt som är märkligt.
> men skickar jag en ASCII sträng så kapas dom två översta bytesen, tex 's'(0x73) blir '3'(0x33).
Ser mer ut som de två högsta *bitarna* ? Eller annars får du beskriva det bättre. Vilka "bytes" ?
> kör via ett FTDI chip.
Hur då ? VIlket FTDI-chip (de har fler än en model) ? Och hur är den kopplad ?
Sen så ser det ju inte ut som att du kör via USARTen alls.
Vad har PORTC med det hela att göra ?
Är det parr-varianten (245) av FTDI chippet ?
EDIT:
Såg nu att det hade smitit in ett nytt inlägg innan jag postade.
Håller med, God Natt !
Du slipper man alla dessa undringar och motfrågor på allt som är märkligt.
> men skickar jag en ASCII sträng så kapas dom två översta bytesen, tex 's'(0x73) blir '3'(0x33).
Ser mer ut som de två högsta *bitarna* ? Eller annars får du beskriva det bättre. Vilka "bytes" ?
> kör via ett FTDI chip.
Hur då ? VIlket FTDI-chip (de har fler än en model) ? Och hur är den kopplad ?
Sen så ser det ju inte ut som att du kör via USARTen alls.
Vad har PORTC med det hela att göra ?
Är det parr-varianten (245) av FTDI chippet ?
EDIT:
Såg nu att det hade smitit in ett nytt inlägg innan jag postade.
Håller med, God Natt !

Re: Problem med Atmega88 UART (löst typ)
PORTC har ju bara 6 pinnar på mega88, eller möjligtvis 7 st ifall du använder Reset-pinnen som I/O. Men eftersom att inget över 0x3F fungerar så används sannolikt bara 6 pinnar.
Re: Problem med Atmega88 UART (löst typ)
Haha, tack bearing, såg nu på schemat att jag gjort en dundermiss.
Schemasymbolen i mitt Eagle bibliotek var lite lurigt gjort, var inte uppmärksam nog : /
Får köra med 6 bitar så, men det går ändå med lite pusslande : )

Schemasymbolen i mitt Eagle bibliotek var lite lurigt gjort, var inte uppmärksam nog : /
Får köra med 6 bitar så, men det går ändå med lite pusslande : )
