Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Welke instellingen je ook veranderd je ontvangt alleen maar crap. Ik heb uiteindelijk die 2313 weggegooid omdat ook nog een pwm kanaal gaar was
Ben dus ook wel benieuwd naar de oplossing.
Please leave a message after the beep.
*beeeeep*
Hmm dan ga ik maar eens een andere Atmega proberen.... Heb er nog wel 1tje liggen.MewBie schreef op zondag 28 januari 2007 @ 15:26:
Dat probleem had ik ook met een 2313, zeer irritant
Welke instellingen je ook veranderd je ontvangt alleen maar crap. Ik heb uiteindelijk die 2313 weggegooid omdat ook nog een pwm kanaal gaar was
Ben dus ook wel benieuwd naar de oplossing.
Tja op mijn werk hebben we de Atmega 162, en daar heb ik precies hetzelfde mee gedaan en die werkt wel goed
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Ik heb het aan het werken gekregen gehad op een mega32, ik zal zo die code eens voor je opzoeken...
Edit:
Dit is dus wat ik van registers zette:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9615 (0,2%) // char size: 8 bit // parity: Disabled void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x19; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; } |
[ Voor 56% gewijzigd door kluyze op 28-01-2007 16:08 ]
Weer die 80 00 80....
Wat gaat er hier mis?
Zou het iets te maken kunnen hebben met de fuses?
[ Voor 18% gewijzigd door Atlas op 28-01-2007 22:11 ]
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Verwijderd
Je terminal programma staat ook op de goede baudrate (geen idee of dat noodzakelijk is, ik stel 't iig altijd in)?
[ Voor 6% gewijzigd door Verwijderd op 28-01-2007 22:25 ]
Ik heb in codevision aangegeven dat dat ding op 8 Mhz moet draaienTrailBlazer schreef op zondag 28 januari 2007 @ 22:20:
op welke frequentie draait die AVR. hij zou inclusief prescaler op 1MHz moeten draaien
Interne Oscillator op 8 Mhzmadwizard schreef op zondag 28 januari 2007 @ 22:22:
Baud rate is afhankelijk van de systeemklok, dus hoe heb je die staan? Extern kristal, interne oscillator? Dat zit inderdaad in de fuses. Daarnaast wordt de stop bit volgens mij weinig gebruikt, waarmee test je de communicatie?
Communicatie test ik door wat naar de seriele poort te gooien en op te vragen met realterm (dood aan Hyperterminal
Jup staat met een Max232 aangesloten (inc alle c's). TX van AVR naar de TTL input van de MAX 232, en dan de RS232 output van de max232 naar de RX (pootje 2) van de seriele poortVerwijderd schreef op zondag 28 januari 2007 @ 22:24:
Even voor de duidelijkheid, je hebt die avr toch wel met een max232 (of soortgelijke converter) aan je seriele poort gehangen?
Je terminal programma staat ook op de goede baudrate (geen idee of dat noodzakelijk is, ik stel 't iig altijd in)?
Jup staat keurig op de goede baudrate.
Zou een extern kristal (of oscillator) uitmaken?
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Om te weten of alles aan de pc kan juist werkt kan je eens even achter de max232 de rx en tx even aan elkaar hangen om dan in hyperterminal of zo wat te typen en te zien of je ook iets op het scherm krijgt.
Als je wil kan ik mijn code wel eens volledig doorsturen, ik werk wel niet met commando's als putchar maar werk met het UDR register. Mijn code zou volledig moeten werken op een mega32 met een 4MHz kristal.
(Geschreven in iccavr trouwens)
Anders wil ik graag jouw code hebben Kluyze
Morgen beundag, ik laat van me horen
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Verwijderd
Moet je daar niet aangeven hoe hard hij werkelijk loopt (1MHz dus) ipv wat je zou willen dat hij looptAtlas schreef op zondag 28 januari 2007 @ 22:36:
Ik heb in codevision aangegeven dat dat ding op 8 Mhz moet draaien
Alles wat via de RS232 binnen komt echo ik terug in deze code en ik laat hem ook zien via de leds.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| unsigned char ucRecvChar; void main (void) { initDevices(); do { } while (1); } void initDevices( void ) { __disable_interrupt (); initTimer1(); initUsart(); MCUCR = 0x00; /* Micro Control Unit Control Register*/ GICR = 0x00; /* General Interrupt Control Register*/ SREG |= 0x80; __enable_interrupt (); } void initTimer1( void ) { TCCR1A = 0x00; TCCR1B = 0x00; /* Stop timer during init */ OCR1A = 0x059D; /* Compare value = 1437 (10Hz) */ TIMSK = 0x10; /* CompareA interrupt enable */ TCCR1B = 0x0B; /* Clear on compare, presc. = 64 */ } void initUsart( void ) { UCSRA = 0x00; UCSRB = 0xD8; UCSRC = 0x86; UBRRH = 0; UBRRL = 25; } void transmitByte( unsigned char data ) { while( !(UCSRA & (1<<5)) ); UDR = data; } #pragma vector = USART_RXC_vect __interrupt void ComRecv( void ) { ucRecvChar = UDR; transmitByte( ucRecvChar ); PORTB = (0xFF - ucRecvChar); /* Put UDR @ the leds of the STK500 */ } |
Instellingen waar ik nu mee werk:
FUSES in AVRstudio:
00 - On-Chip Debug Enabled
01 - JTAG Interface Enabled
08 - Boot Flash section size=2048 words Boot....
09 - Boot Reset vector Enabled
11 - Brown-out Detection level at VCC=2.7V
?? - Int RC Osc. 8 Mhz Startup time 6 CK + 64 ms
Lockbits:
Mode 1: No memory lock features enabled
Application Protection Mode 1 ...
Boot Loader Protection Mode 1 ...
Settings UART @ PC
- Baudrate: 19200
- Databits: 8
- Parity: none
- Stopbits: 1
- Databesturing:none
--------------------------------------------------------------------------------------------------------------------------
Je kunt ook eens proberen of je MAX232 goed zit door de RX en TX van de AVR eens door te verbinden. Dan moet je op de pc dus een echo zien van wat je verstuurd.
Verwijderd
Stel dan maar 1Mhz in code vision.Fuses staan op default
Altijd handig: de AVR fuse calculator http://palmavr.sourceforge.net/cgi-bin/fc.cgi
1
2
3
4
5
6
7
8
9
10
11
| // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 2400 UCSRA=0x00; UCSRB=0xD8; UCSRC=0x86; UBRRH=0x00; UBRRL=0xCF; |
UCSRA=0x00; Event-flags uit, Geen asynchrone snelheids-verdubbelaar, geen multi-proc mode
UCSRB=0xD8; RX Complete en TX Complete interrupt aan, RX en TX enable
UCSRC=0x86; Verplicht URSEL setten, (samen met UCSZ2 uit UCSRB) 8 bit datamode, asynchroon, geen parity, 1 stop bit
UBRRH=0x00; De 4 MSB van UBRR op 0
UBRRL=0xCF; UBRR op 207, 2400bps bij 8 MHz, helaas draait de interne osc maar op 1 MHz
Als je van UBRRL 25 maakt (of 0x19), dan werkt het
UBBR bereken je door de frequentie waarop het ding daadwerkelijk draait te delen door (16 * gewenste baudrate) en er nog 1 vanaf te trekken.
UBBR = (Fosc / (16 * baud)) - 1
Edit: Ik snap de verwarring al
[ Voor 18% gewijzigd door Paul op 29-01-2007 12:56 ]
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Ik ga wel lekker een 8 Mhz oscillator eraan zetten, eens zien of het dan lukt maar ik heb goede hoop nu
Dank allen voor de suggesties
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.
Inmiddels even een 8 Mhz osciallator eraan gesoldeerd en ik krijg netjes gegevens door
Thnx voor de hulp allemaal
* Atlas gaat verder kijken hoe de interrupts werken
Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.