Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ATTiny26 - układ nie startuje, napięcie ok. ~3.6V - zdjęcie

MarasK 10 Feb 2008 16:39 1175 2
Altium Designer Computer Controls
  • Altium Designer Computer Controls
  • #2
    Tomasz.W
    Level 35  
    MarasK wrote:
    ...Pomysły?....
    Tylko jeden. A której wersji procesora użyłeś? Standardowa wersja ATtiny26 pracuje w zakresie napięć 4,5 do 5,5 Volta. W układzie masz wstawione (nie wiem po co) dwie diody D3 i D4. Dzięki temu masz na zasilaniu 3,6 Volta. A to zdecydowanie za mało do poprawnego startu procesora. W tym układzie powinien być użyty układ z literką "L" na końcu. Te mogą pracować od 2,7 do 5,5 Volta. Czy wszystko jasne?
    Pozdrowienia z Gdańska.
  • #3
    MarasK
    Level 18  
    oczywiście użyłem układu z dopisem "L". Sprawdzałem nadruk na scalaczku - jest to z całą pewnością wersja L.

    Dwie diody dodałem do ładowania akumulatora GP 3,6V 60mAh. Rezystor 1k został usunięty (ten obok diód), ponieważ z jego użyciem akumulator ładował się do napięcia 2,6V.
    Po jego usunięciu co prawda tuż po rozruchu prąd ładowania wynosi 50mA, ale po kilkunastu sekundach jest to już kilka miliamper (zgodnie z zasadą 0,1C, czyli 60mAh*0,1 = 6mA).

    Fusebity początkowo ustawione na kwarc wewnętrzny 1MHz. Wolę nie eksperymentować, dopóki nie będę pewien, że wiem jak obsługiwać kwarc zewnętrzny. Chciałbym go użyć jako taktujący cały procesor (32768Hz), ale do prób użyłem wbudowanego.

    Pomysły mi się kończą :/

    Niżej zamieszczam płytkę.
    ATTiny26 - układ nie startuje, napięcie ok. ~3.6V - zdjęcie

    Układ programuję programatorem USB ze znanego serwisu aukcyjnego. Działa dobrze, bo używałem go już w poprzednim projekcie, co więcej dobrze odczytuje sygnaturę chipu, programuje i poprawnie weryfikuje.

    Może coś nie tak jest z obwodem resetu?

    Niżej zamieszczam listing z AVRStudio 4.12.
    Code:

    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/eeprom.h>
    #define DANE PORTA

    #define TRIAK PB3
    #define DIODA PB6

    #define DIODA_OFF   PORTB |= 0b00001000      //makra obsługi diody sygnalizacyjnej
    #define DIODA_ON   PORTB &= 0b11110111

    #define TRIAK_OFF   PORTB |= 0b01000000      //makra obsługi diody sygnalizacyjnej
    #define TRIAK_ON   PORTB &= 0b10111111


    unsigned int EEMEM zmienne[1];
    int test;

    int main(void)
    {
    DDRA=0x00; //portA jako wejścia - switche
    DDRB=0b11001111;   //portB jako wyjścia
    PORTA=0xFF; //włączenie pullupów

    while(1){

    PORTB=0x00;
    PORTB=0xFF;

    }
    }

    Częstotliwość 1MHz zadeklarowana w opcjach AVRStudio (Makefile).

    A tu drugi listing, ale poprawności nie ręczę, bo piszę praktycznie tylko w C. Ten niżej przerobiłem z jakiegoś kursu.
    Code:

    .include "tn26def.inc"
    .def acc= r16
    .cseg
    .org 0x00

    ldi acc, 0b11111111 ; załaduj do r16 liczbę 255 (0xff)
    out DDRB, acc ; wpisanie do DDRB samych jedynek
    ; powoduje ustawienie pinów jako wyjście
    out PORTB, acc

    ldi acc, 0b00000000 ;
    out DDRA, acc ;

    ldi acc, 0b00000000 ;
    out PORTA, acc ;



    start:
    ldi acc, 0b00000000 ;
    out PORTB, acc
    rjmp start ; pętla nieskończona


    Najdziwniejsze,że nieważne co próbuję wystawić na port to multimetr wskazuje na 0,7V (między wyjściem ustawianym, a masą). Czyżby był to stan wysokiej impedancji?

    Dodano po 1 [godziny] 13 [minuty]:

    Problem rozwiązany - Brown-Out-Detector ustawiony na 4V, a zasilam układ 3,6V.....