Forum: Mikrocontroller und Digitale Elektronik PIC10f322 -> RA1 nur max 1V bei einem HIGH


von Martin B. (echterwiener)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

Also ich habe folgendes Problem, bin gerade dabei mich mit dem PIC 
10f322 vertraut zu machen und hab ein ganz simples Programm geschrieben.

Wenn RA2 = 1 dann RA0 & RA 1 Toggeln
Wenn RA2 = 0 dann RA0 Toggeln

so das Programm funktioniert ABER der RA1 bin hat maximal eine 
High-Spannung von einem Volt... woran das liegt weiß ich nicht leider 
darum frage  ich euch kennt jemand das Problem?
Kann mir jemand helfen?

Ich bedanke mich schon mal im voraus!!! :)

Code -> MPLABX V.1.95 + XC8 V.1.21
1
/* 
2
 * File:   Test.c
3
 * Author: Martin
4
 *
5
 * Created on 23. Dezember 2014, 16:21
6
 */
7
8
#include <stdio.h>
9
#include <stdlib.h>
10
#include <xc.h>
11
#include <pic.h>
12
13
#define _XTAL_FREQ 8000000
14
15
//#pragma config MCLRE = OFF, CP = OFF, WDTE = OFF, FORC = INTRC
16
17
// CONFIG
18
19
#pragma config FOSC = INTOSC    // Oscillator Selection bits (INTOSC oscillator: CLKIN function disabled)
20
#pragma config BOREN = OFF      // Brown-out Reset Enable (Brown-out Reset disabled)
21
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
22
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
23
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
24
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
25
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)
26
#pragma config LPBOR = OFF      // Brown-out Reset Selection bits (BOR disabled)
27
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
28
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
29
30
/*           Pic10F322
31
 *               _______
32
 *       RA 0   |       | RA 3
33
 *     ground   |       | 2 - 5.5V
34
 *       RA 1   |_______| RA 2
35
 */
36
37
38
int main(int argc, char** argv) {
39
    ANSELA = 0b0000;
40
    TRISA = 0b1100;
41
    PORTA = 0b0000;
42
43
//    PORTA = 0b0000; // Blink 3mal
44
//    __delay_ms(10);
45
//    PORTA = 0b1111;
46
//    __delay_ms(500);
47
//    PORTA = 0b0000;
48
//    __delay_ms(500);
49
//    PORTA = 0b1111;
50
//    __delay_ms(500);
51
//    PORTA = 0b0000;
52
//    __delay_ms(500);
53
//    PORTA = 0b1111;
54
//    __delay_ms(500);
55
56
    while (1) {
57
        if (PORTAbits.RA2==1){
58
        PORTA = 0b0011;
59
        __delay_ms(100);
60
        PORTA = 0b0000;
61
        __delay_ms(100);
62
        }else{
63
        PORTA = 0b0001;
64
        __delay_ms(100);
65
        PORTA = 0b0000;
66
        __delay_ms(100);
67
        }
68
    }

von Martin B. (echterwiener)


Lesenswert?

Sorry hab vergessen zu sagen das der PIC mit 3,3V vom PICKIT3 versorgt 
wird! Außerdem hab ich dem PIC noch einen 100nF Stützkondensator 
verpasst sonst existiert einstweilen keine Beschaltung außer die 
Programmierleitungen.

von Willi (Gast)


Lesenswert?

TRISA = 0b1100;
Geht das so oder muß das 8 stellig sein ?

von Dominic A. (neo123)


Lesenswert?

Willi schrieb:
> TRISA = 0b1100;
> Geht das so oder muß das 8 stellig sein ?
Das geht so.

Ein zu tiefer High-Pegel entsteht meistens durch einen zu hohen 
Ausgangsstrom. Dieser könnte daher kommen, dass an RA1 der ICSPCLK noch 
angeschlossen ist.
Ich würde also mal probieren nur eine Versorgungsspannung anzulegen und 
das PICKIT abzuziehen.

von Volker S. (vloki)


Lesenswert?

Martin B. schrieb:
> Sorry hab vergessen zu sagen das der PIC mit 3,3V vom PICKIT3 versorgt
> wird!

Dann hängt das PICKIT auch an RA1 und RA0 und kann diese beeinflussen !

PS:
- alle #include ausser xc.h sollten weg
- void main(void) !!!
- beim Schreiben besser immer LAT verwenden (nicht PORT)

von Martin B. (echterwiener)


Angehängte Dateien:

Lesenswert?

Ok Programm hab ich geändert!
Versorgt hab ich Extern und nicht übers Pickit, aber das Problem hat 
sich nicht geändert ich hab nur noch komischere Sachen beobachtet! :(

Ich hab eh Oszillogramme angefügt CH1 hängt auf RA1, also ich hab keine 
Ahnung was bei dem Pic so spinnt, aber diese Komischen Spitzen am 
Highpegel treten nicht immer (eher selten vor allem die die bis 3,3V 
hinaufgehen...) auf die meiste Zeit ist er bei einem Volt und knapp 
darunter

Also falls noch jemand etwas einfällt bitte her damit und danke nochmal 
für die Hilfe bis jetzt!!!!

von Volker S. (vloki)


Lesenswert?

Martin B. schrieb:
> Versorgt hab ich Extern und nicht übers Pickit,

Wir nehmen jetzt mal an du hast das PICKIT auch vom PIC getrennt ?

von Martin B. (echterwiener)


Angehängte Dateien:

Lesenswert?

jop hab ich gemacht und jz gerade läuft er sogar (seit 5 min, sogar nach 
mehrmaligen Reset) auf den besagten 3,3V ohne das ich etwas geändert hab 
aber nicht_ sehr _stabil er hat immer wieder echt komische Einbrüche?

aber wie lang das bleibt ist fraglich!?

von Volker S. (vloki)


Lesenswert?

Martin B. schrieb:
> er hat immer wieder echt komische Einbrüche?

Dein Tastkopf ist aber ok ?

von Martin B. (echterwiener)


Lesenswert?

ja der is ok auch wenn ich einen anderen nehme hab ich das selbe 
Phänomen...

von Martin B. (echterwiener)


Lesenswert?

ok leute danke für eure Hilfe ich weiß nicht warum aber jz geht der PIC 
einwandfrei aber ich hab nix verändert ich versteh einfach nicht was 
schief grennt ist?

Aber das Programm lauft jetzt stabil und ich hab den PIN auch schon mit 
einer LED und einem Wiederstand mit 5mA belastet und die Spannung ist 
nicht eingegangen... auch nach mehrmaligen neu programmieren es funzt 
jetzt immer... Auch wenn ich einfach mal das PWM Modul aufdrehe immer 
3,3V Highpegel also das funktioniert mal wieder

Großes DANKE für euer Engagement!!!!!!

Falls ich wieder ein Problem hab melde ich mich ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.