Ostatnie czasy na Elce coraz więcej nie działających procesorów/Programatorów/za szybko wykonywujących się opóźnień... W związku z tym może warto by było zrobić coś w stylu "Kompedium" co zrobić, jeśli nie działa...Jeśli macie jakieś z życia przykłady piszcie, będę uzupełniał
Nie działa procesor:
1) sprawdź czy jest zasilanie na WSZYSTKICH Nóżkach na których być powinno (AVCC, VCC)
2) Sprawdź czy masa jest tam gdzie być powinna (GND, AGND). (Nie przez procesor nie przepuszcza się gnd'a, trzeba podłączyć z ZEWNĄTRz do KAŻDEJ nóżki oznaczonej jako GND potencjał GND.
3) Czy są kondensatory na liniach zasilania (100nF między VCC a GND BLISKO procesora).
4) Czy napięcie VCC wynosi tyle ile powinno?
5) Czy na resecie nie ma niskiego stanu?
Nie mogę się skomunikować z programatorem:
1) Sprawdź połączenia używając "piszczka" / "dzwonka" w multimetrze od nóżki w procesorze oznaczonej jako MISO/MOSI/SCK/RST do nóżki w buforze (jeśli to stk200).
2) Czy są kondensatory 100nF?
3) Czy zmieniałeś FuseBity? Jeśli tak, to czy masz dolutowany kwarc i kondensatory ~30pF do każdego wyprowadzenia kwarcu (i drugą stroną do masy)?
4) Czy któraś z linii MISO/MOSI/SCK/RST nie jest przywarta do VCC/GND/czegokolwiek?
5) Jeśli to M128/M2561 czy używasz lini PE0 i PE1 (zamiast PB... MISO/MOSI mają tutaj inną funkcję - są po prostu SPI)?
6) Czy Programator USBasp jest przestawiony na mniejsza częstotliwość w przypadku zegara AVR ustawionego ponizej 1,5MHz (Zworka SLOWSCK)
Jeśli procesor działa, ale zawiesza się / resetuje/ nie działa część pinów(portów):
1) Czy są kondensatory 100nF?
2) Czy nie masz włączonego watchdoga?
3) Czy masz zasilanie na AVCC?
4) Czy masz dobrze ustawione rejestry DDRxn?
5) Jeśli to PORTC, czy masz wyłączony JTAG?
6) Czy jest podciąganie na linii reset do VCC (przez rezystor ok. 1...20kOhm).
Problemy z przerwaniami:
1) W kółko wyzwala się przerwanie od INTx
Jak masz skonfigurowane przerwanie (LOW LEVEL/FALLING/RISING). Jęsli LOW LEVEL, czy nie masz przypadkiem stanu niskiego na nóżce na stałe?
2) Nie wyzwalają się przerwania?
Czy masz globalne zezwolenie na przerwania (asm/c/bascom - sei/sei()/Enable interrupts).
3) Nie wyzwala się przerwanie od X a od Y się wyzwala.
Czy masz włączone zezwolenie na przerwanie od Y?
Jeśli procesor robi coś za szybko / za wolno:
1) Czy zmieniałeś FuseBity?
2) Czy ustawiłeś w programie odpowiednio C/Bascom F_CPU/$crystal
3) Czy na pewno to co masz zadeklarowane w $crystal odpowiada temu co masz wybrane fusebitami?
Problemy z UARTem:
1)Jeśli procesor wysyła śmieci...
-Czy na pewno dobrze baud rate ustawiłeś?
-Czy oba urządzenia mają ten sam baud?
-Czy używasz wew. generatora RC (jeśli tak, rozważ zmianę na kwarc / kalibrację dla danych warunków pracy).
-Zwolnij transmisję
Pozdrawiam:)
Nie działa procesor:
1) sprawdź czy jest zasilanie na WSZYSTKICH Nóżkach na których być powinno (AVCC, VCC)
2) Sprawdź czy masa jest tam gdzie być powinna (GND, AGND). (Nie przez procesor nie przepuszcza się gnd'a, trzeba podłączyć z ZEWNĄTRz do KAŻDEJ nóżki oznaczonej jako GND potencjał GND.
3) Czy są kondensatory na liniach zasilania (100nF między VCC a GND BLISKO procesora).
4) Czy napięcie VCC wynosi tyle ile powinno?
5) Czy na resecie nie ma niskiego stanu?
Nie mogę się skomunikować z programatorem:
1) Sprawdź połączenia używając "piszczka" / "dzwonka" w multimetrze od nóżki w procesorze oznaczonej jako MISO/MOSI/SCK/RST do nóżki w buforze (jeśli to stk200).
2) Czy są kondensatory 100nF?
3) Czy zmieniałeś FuseBity? Jeśli tak, to czy masz dolutowany kwarc i kondensatory ~30pF do każdego wyprowadzenia kwarcu (i drugą stroną do masy)?
4) Czy któraś z linii MISO/MOSI/SCK/RST nie jest przywarta do VCC/GND/czegokolwiek?
5) Jeśli to M128/M2561 czy używasz lini PE0 i PE1 (zamiast PB... MISO/MOSI mają tutaj inną funkcję - są po prostu SPI)?
6) Czy Programator USBasp jest przestawiony na mniejsza częstotliwość w przypadku zegara AVR ustawionego ponizej 1,5MHz (Zworka SLOWSCK)
Jeśli procesor działa, ale zawiesza się / resetuje/ nie działa część pinów(portów):
1) Czy są kondensatory 100nF?
2) Czy nie masz włączonego watchdoga?
3) Czy masz zasilanie na AVCC?
4) Czy masz dobrze ustawione rejestry DDRxn?
1- WYJŚCIE
0- WEJŚCIE
5) Jeśli to PORTC, czy masz wyłączony JTAG?
6) Czy jest podciąganie na linii reset do VCC (przez rezystor ok. 1...20kOhm).
Problemy z przerwaniami:
1) W kółko wyzwala się przerwanie od INTx
Jak masz skonfigurowane przerwanie (LOW LEVEL/FALLING/RISING). Jęsli LOW LEVEL, czy nie masz przypadkiem stanu niskiego na nóżce na stałe?
2) Nie wyzwalają się przerwania?
Czy masz globalne zezwolenie na przerwania (asm/c/bascom - sei/sei()/Enable interrupts).
3) Nie wyzwala się przerwanie od X a od Y się wyzwala.
Czy masz włączone zezwolenie na przerwanie od Y?
Jeśli procesor robi coś za szybko / za wolno:
1) Czy zmieniałeś FuseBity?
2) Czy ustawiłeś w programie odpowiednio C/Bascom F_CPU/$crystal
3) Czy na pewno to co masz zadeklarowane w $crystal odpowiada temu co masz wybrane fusebitami?
Problemy z UARTem:
1)Jeśli procesor wysyła śmieci...
-Czy na pewno dobrze baud rate ustawiłeś?
-Czy oba urządzenia mają ten sam baud?
-Czy używasz wew. generatora RC (jeśli tak, rozważ zmianę na kwarc / kalibrację dla danych warunków pracy).
-Zwolnij transmisję
Pozdrawiam:)
