FAQ | Points | Add... | Recent posts | Search | Register | Log in


AT90pwm3B pierwsze kroki..


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> AT90pwm3B pierwsze kroki..
Author
Message
clipie
Poziom 14
Poziom 14


Joined: 15 Jul 2004
Posts: 189
Location: Gdańsk

Post#1 Post from the author of the topic 15 Nov 2009 20:03   

AT90pwm3B pierwsze kroki..


Witam.

Mam do oprogramowania AT90PWM3B.
Chce wysłać/odebrać (cokolwiek) przez USART.
Problem jest taki że w AVRstudio, podczas debugowania wszytko jest ok, tak jak chcę, ale po zaprogramowaniu procesora - nie chce dzialać.

Sądze ze wlaga RxC nie generuje przerwania - ale dlaczego to nie wiem (I; RxCIE; RxEN = 1)
- procedura obslugi przerwania RxC wywolana jako podprgram (poprzez rcall) dziala prawidlowo, ponad to procedura tak wywolana nie gasi RxC (dwie linijki do gaszenia RxC w programie)

moje pytanie:
#1 Co jest nie tak? :)
#2 Czy na pewno mozna ustwic flage RxC programowo?
#3 to raczej swiezy porcesor, czy mozliwe ze biblioteki do uC j/w nie bedą mialy za duzo z nim w spolnego? - uwzgledniając datasheeta wszytko powinno byc w porzadku, UCSRA,B i C a takze bity. Podkreslam ze AVRstudio mówi ze wszytko dziala Ok - ale ok niestety nie jest.

..procesorek ten, ma tez rozszerzenie USART: EUSART - o ktorym to malo wiem, wiec nie wiem ta w jakim stopniu przeszkadza ono standardowemu USARTowi. Podkreslam że AVRstudio mowi ze wsztko jest ok - podczas gdy ok nie jest.


Kod ASM:
Code:

      .include "pwm3Bdef.inc"

.cseg
;=============================================================================
;                  Wektory przerwań
;-----------------------------------------------------------------------------

      .set   ResetPoint = INT_VECTORS_SIZE

       .org   0x0000             rjmp     ResetProcessor      // RESET         
      .org      URXCaddr           rjmp     UsartRxComplete      ; USART, Rx Complete
      .org      UTXCaddr           rjmp     UsartTxComplete      ; USART, Tx Complete

;-----------------------------------------------------------------------------


;=============================================================================
   .org ResetPoint
ResetProcessor:

      cli
      ldi r16, Low(RAMEND)             ; ustaw wskaznik stosu
      out SPL, r16
      ldi r16, High(RAMEND)             
      out SPH, r16

      rjmp Main
;=============================================================================
;                             Main Code
;-----------------------------------------------------------------------------
Main:
      rcall USART_Init
      sei

Loop0:   
      lds r16,UCSRA
      sbr r16,(1<<RXC)
      sts UCSRA,r16      
            ;   rcall UsartRxComplete  ; wywolanie procedury przerwania za pomocą call
      rcall opoz   

      rjmp Loop0


   ;--------------
      opoz:
         ldi r16,40      ;x 20000 clk_cycle  //for 8mhz: x 25ms
            ldi XH,high(49999)
            ldi   XL,   low(49999)
            sbiw XL,1
            brne PC-1
         dec r16
         brne PC-5
         ret
   ;--------------

;=============================================================================
;=============================================================================
;=============================================================================
   #define FOSC 8000000   // Clock Speed
   #define BAUD 2400;         600;         900;         1200;         9600;                                                
   #define MYUBRR FOSC/16/BAUD-1

   USART_Init:
         ;*** Set baud rate
            ldi r17, high(MYUBRR)
            ldi r16,  low(MYUBRR)         
            sts UBRRH, r17
            sts UBRRL, r16
         ;*** Set frame format: 8data, no parity & 2 stop bits
            ldi r16, (0<<UMSEL0)|(0<<UPM0)|(1<<USBS)|(3<<UCSZ0)
            sts UCSRC,r16
         ;*** Enable receiver and transmitter
            ldi r16, (1<<RXCIE)|(0<<TXCIE)|(1<<RXEN)|(1<<TXEN)
            sts UCSRB,r16      /**/
            ret




   UsartRxComplete:   
         ;*** Get status and 9th bit, then data from buffer
            lds r18, UCSRA
            lds r17, UCSRB
            lds r16, UDR0

         ;*** zgas przerwanie
            cbr r20,(1<<RXC)
            sts UCSRA, r20

         ;   lsr r17
         ;   andi r17, 0x01

         ;*** wl/wyl diode na PB3
            in r16,PortB
            ldi r17,(1<<PB3)
            eor r16,r17
            out PortB,r16
         
            reti




   UsartTxComplete:

            reti

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 15 Nov 2009 20:03   





Back to top
   
528649
Guest





Post#2 15 Nov 2009 20:29   

Re: AT90pwm3B pierwsze kroki..


Z tego co piszesz (nie analizowałem kodu) wygląda na to że jest OK. A z czym ten AT90PWM3B ma się komunikować? PC, drugi procesor?

Dodano po 7 [minuty]:

EUSART nie działa i nie ma wpływu na nic dopóki nie ustawisz EUSART w rejestrze EUCSRB.
Back to top
   
clipie
Poziom 14
Poziom 14


Joined: 15 Jul 2004
Posts: 189
Location: Gdańsk

Post#3 Post from the author of the topic 15 Nov 2009 20:29   

Re: AT90pwm3B pierwsze kroki..


Ma sie komunikowac z cywilną atmegą Po RS485 i jeszcze jednym uC.

Wazne jest to ze program nie wchodzi do przerwania przez ustawienie flagi.

PS: W programie usuniecie srednika w Main ( ; rcall UsartRxComplete ;...) powoduje to ze program robi to co ma robic w tym przypadku, czyli co sekunde ustawiac/gasic PB3.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 15 Nov 2009 20:29   





Back to top
   
528649
Guest





Post#4 15 Nov 2009 20:37   

Re: AT90pwm3B pierwsze kroki..


A spróbuj wybadać co się dzieje na procku (nie w symulatorze) z flagami błędów (Frame Error itd.).
Back to top
   
clipie
Poziom 14
Poziom 14


Joined: 15 Jul 2004
Posts: 189
Location: Gdańsk

Post#5 Post from the author of the topic 15 Nov 2009 20:47   

Re: AT90pwm3B pierwsze kroki..


Ale co mialoby sie dziąć? - ja w tym programie niczego nie odbieram (też fizycznie), chcę tylko sie upewnic ze program wejdzie w realizacje przerwania po wystawieniu flagi. - uwazam ze to najnizszy poziom zlozonosci zadań (jesli jest nizszy to mi powiedzcie :) ) jaki jest mozliwy gdy rozpatrujemy dzialanie bloku nadajnika/odbiornika USART.

Napisalem ten powyzszy program po tym jak gotowa porcedura komunikacji jak i jej uproszczenia nie chciały ruszyć.
Back to top
   
528649
Guest





Post#6 15 Nov 2009 20:52   

Re: AT90pwm3B pierwsze kroki..


Wydaje mi się, że żeby to zadziałało musi coś być w UDR.

Flaga RxC jest na pewno do odczytu i zapisu.
Back to top
   
dftb47
Poziom 2
Poziom 2


Joined: 01 Aug 2009
Posts: 3

Post#7 12 Dec 2010 13:47   

Re: AT90pwm3B pierwsze kroki..


Do zapisu rejestru I/O służy rozkaz OUT, a nie STS. Tak samo IN , a nie LDS.
Flaga RXC jest tylko do odczytu. Wyzeruje się sama jak w RX FIFO nie będzie nieodczytanych danych.
Back to top
   
Google

Google Adsense


Post# 12 Dec 2010 13:47   





Back to top
   
LordBlick
Poziom 23
Poziom 23


Joined: 31 Aug 2004
Posts: 3685
Location: Słupsk

Post#8 12 Dec 2010 14:21   

Re: AT90pwm3B pierwsze kroki..


dftb47 wrote:
Do zapisu rejestru I/O służy rozkaz OUT, a nie STS. Tak samo IN , a nie LDS.
Nie zgodzę się z tymi "nie" ;). Zarówno STS, jak i LDS mogą służyć do operacji na I/O, tylko do adresu należy dodać 0x20. Ponadto IN/OUT nie funkcjonują w rozszerzonym I/O od 0x40, czyli pozostaje tylko LDS/STS od 0x60. Odsyłam przedmówcę do not katalogowych.
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> AT90pwm3B pierwsze kroki..
Page 1 of 1
Similar topics
AutoIT+FireFox-pierwsze kroki (5)
STM32F107 pierwsze kroki w Keilu (55)
Protel 99SE pierwsze kroki (8)
Visual Studio 6 pierwsze kroki (1)
Pierwsze kroki w AVR na ATMEGA16 (7)
KSIĄŻKA - PROTEL 99 SE - pierwsze kroki (17)
pierwsze kroki programowania procesorów (13)
Giercuka , i pierwsze kroki. (7)
Pierwsze kroki z PIC! (2)
Pierwsze kroki z 4081... jak podłączyć? (10)

Page generation time: 0.092 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed